<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slackwiki.com/index.php?action=history&amp;feed=atom&amp;title=NAT_Script</id>
	<title>NAT Script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.slackwiki.com/index.php?action=history&amp;feed=atom&amp;title=NAT_Script"/>
	<link rel="alternate" type="text/html" href="https://www.slackwiki.com/index.php?title=NAT_Script&amp;action=history"/>
	<updated>2026-04-08T14:21:02Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://www.slackwiki.com/index.php?title=NAT_Script&amp;diff=142&amp;oldid=prev</id>
		<title>Erik: Copy from old</title>
		<link rel="alternate" type="text/html" href="https://www.slackwiki.com/index.php?title=NAT_Script&amp;diff=142&amp;oldid=prev"/>
		<updated>2009-06-04T05:25:20Z</updated>

		<summary type="html">&lt;p&gt;Copy from old&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# This is a very basic LAN NAT script, allowing only SSH to the firewall from&lt;br /&gt;
# the external interface, allowing all outbound LAN traffic, and allowing only&lt;br /&gt;
# established/related traffic back into the LAN.&lt;br /&gt;
&lt;br /&gt;
ipt=/usr/sbin/iptables&lt;br /&gt;
extip=192.168.1.41 # replace with your EXTERNAL IP - eth0&lt;br /&gt;
lan=10.5.3.0/25 # your LAN CIDR range - eth1&lt;br /&gt;
&lt;br /&gt;
# start firewall&lt;br /&gt;
start_firewall() {&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Enabling IP forwarding.&amp;quot;&lt;br /&gt;
  echo 1 &amp;gt; /proc/sys/net/ipv4/ip_forward&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Enabling iptables firewall.&amp;quot;&lt;br /&gt;
  # default policies&lt;br /&gt;
  $ipt -P INPUT DROP&lt;br /&gt;
  $ipt -P FORWARD DROP&lt;br /&gt;
&lt;br /&gt;
  # NAT&lt;br /&gt;
  $ipt -t nat -A POSTROUTING -o eth0 -j SNAT --to-source $extip&lt;br /&gt;
&lt;br /&gt;
  # INPUT chain&lt;br /&gt;
  $ipt -A INPUT -i lo -j ACCEPT&lt;br /&gt;
  $ipt -A INPUT -i eth1 -s $lan -j ACCEPT&lt;br /&gt;
  $ipt -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
  $ipt -A INPUT -p tcp --destination-port 22 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
  # FORWARD chain&lt;br /&gt;
  $ipt -A FORWARD -i eth1 -s $lan -j ACCEPT&lt;br /&gt;
  $ipt -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# stop firewall&lt;br /&gt;
stop_firewall() {&lt;br /&gt;
&lt;br /&gt;
  $ipt -P INPUT DROP&lt;br /&gt;
  $ipt -P OUTPUT DROP&lt;br /&gt;
  $ipt -P FORWARD DROP&lt;br /&gt;
  # allow internal traffic&lt;br /&gt;
  $ipt -A INPUT -i eth1 -j ACCEPT&lt;br /&gt;
  $ipt -A OUTPUT -o eth1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# flushing, removing and zeroing tables&lt;br /&gt;
reset_firewall() {&lt;br /&gt;
&lt;br /&gt;
  chains=`cat /proc/net/ip_tables_names`&lt;br /&gt;
  for i in $chains; do&lt;br /&gt;
    $debug $ipt -t $i -F&lt;br /&gt;
    $debug $ipt -t $i -X&lt;br /&gt;
    $debug $ipt -t $i -Z&lt;br /&gt;
  done&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
&lt;br /&gt;
  start|restart|reload)&lt;br /&gt;
    reset_firewall&lt;br /&gt;
    start_firewall&lt;br /&gt;
    ;;&lt;br /&gt;
  stop)&lt;br /&gt;
    reset_firewall&lt;br /&gt;
    stop_firewall&lt;br /&gt;
    ;;&lt;br /&gt;
  *)&lt;br /&gt;
    echo &amp;quot;Usage: $0 {start|stop|restart|reload}&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
    ;;&lt;br /&gt;
&lt;br /&gt;
esac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Security]]&lt;/div&gt;</summary>
		<author><name>Erik</name></author>
	</entry>
</feed>