公司iptables配置(eMule, nat, forward, input, output, state)

这里是公司目前iptables的配置(eth0是内网,eth1接ADSL): 
# Generated by iptables-save v1.2.8 on Sun Nov 25 16:13:01 2007
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i ppp0 -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -j DROP
-A INPUT -i lo -ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 53 -ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 53 -ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 139 -ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 445 -ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 123 -ACCEPT
-A INPUT -i eth0 -p udp -m udp --dport 123 -ACCEPT
-A INPUT -m state --state ESTABLISHED -ACCEPT
-A OUTPUT -o lo -ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -ACCEPT
-A OUTPUT -p tcp -m tcp --sport 53 -ACCEPT
-A OUTPUT -p udp -m udp --sport 53 -ACCEPT
-A OUTPUT -p tcp -m tcp --sport 139 -ACCEPT
-A OUTPUT -p tcp -m tcp --sport 445 -ACCEPT
-A OUTPUT -p tcp -m tcp --sport 123 -ACCEPT
-A OUTPUT -p udp -m udp --sport 123 -ACCEPT
COMMIT
# Completed on Sun Nov 25 16:13:01 2007
# Generated by iptables-save v1.2.8 on Sun Nov 25 16:13:01 2007

*nat
:PREROUTING ACCEPT [3:162]
:POSTROUTING ACCEPT [1:108]
:OUTPUT ACCEPT [1:108]
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 7559 -j DNAT --to-destination 192.168.0.10:7559
-A PREROUTING -i ppp0 -p udp -m udp --dport 7569 -j DNAT --to-destination 192.168.0.10:7569
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 28145 -j DNAT --to-destination 192.168.0.10:28145
-A PREROUTING -i ppp0 -p udp -m udp --dport 28145 -j DNAT --to-destination 192.168.0.10:28145
-A POSTROUTING -192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE
COMMIT
# Completed on Sun Nov 25 16:13:01 2007

 


这份配置中,配置了nat,eMule,还有forward,input等,这些都不说了,很好理解,关键有一句: 

-A INPUT -m state --state ESTABLISHED -j ACCEPT 

这句很重要,如果不加这句,路由本机就无法上网,甚至无法访问内网。因为我们在路由本机上加了INPUT的限制,而且由于-P INPUT DROP这一句,我们把默认的没有定义的所有INPUT类型的包全部丢弃,所以产生的问题是,本机如果要访问内网的一台机器,或是外网的一台机器,那么OUTPUT没有问题,问题是别人的数据返回的时候,是INPUT类型的包,这种包就会被DROP,这就导致了路由本机无法上网,甚至无法访问内网的问题。 

所以,这里加了这么一句,非常有用,指的就是如果是已经ESTABLISHED的链接,那么INPUT一概放行。 

其实本来不用加这句,因为路由本机很少我们直接上去操作,但是后来公司架设了一个DNS服务器,这样所有的服务器就不用维护本机的/etc/hosts了,改成向DNS服务器取解析信息,所以,当局域网内的机器访问路由机器的时候,路由机器就会向DNS服务器要局域网内机器的IP和主机名信息,此时,如果没有这样一个配置,那么路由机器是无法访问到DNS服务器的(DNS服务器也是内网的一台机器),这样就直接导致了局域网内机器访问路由机器非常非常的慢(公司的路由机器开了samba服务),所以,这个配置是必须的。 

其他的代码都很好理解。对lo的两句配置是放开对127.0.0.1的访问。 

 

记得,要使用iptables做网关,记得把 

echo "1" > /proc/sys/net/ipv4/ip_forward 

放到/etc/rc.local中

posted @ 2010-12-11 14:08  super119  阅读(618)  评论(0编辑  收藏  举报