公司iptables配置如下:
这里是公司目前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 -j ACCEPT
- -A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
- -A INPUT -i eth0 -p tcp -m tcp --dport 53 -j ACCEPT
- -A INPUT -i eth0 -p udp -m udp --dport 53 -j ACCEPT
- -A INPUT -i eth0 -p tcp -m tcp --dport 139 -j ACCEPT
- -A INPUT -i eth0 -p tcp -m tcp --dport 445 -j ACCEPT
- -A INPUT -i eth0 -p tcp -m tcp --dport 123 -j ACCEPT
- -A INPUT -i eth0 -p udp -m udp --dport 123 -j ACCEPT
- -A INPUT -m state --state ESTABLISHED -j ACCEPT
- -A OUTPUT -o lo -j ACCEPT
- -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
- -A OUTPUT -p tcp -m tcp --sport 53 -j ACCEPT
- -A OUTPUT -p udp -m udp --sport 53 -j ACCEPT
- -A OUTPUT -p tcp -m tcp --sport 139 -j ACCEPT
- -A OUTPUT -p tcp -m tcp --sport 445 -j ACCEPT
- -A OUTPUT -p tcp -m tcp --sport 123 -j ACCEPT
- -A OUTPUT -p udp -m udp --sport 123 -j 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 -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE
- COMMIT
- # Completed on Sun Nov 25 16:13:01 2007
#p#
这份配置中,配置了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中
通过文章的描述,我们清楚的知道了公司iptables配置的全过程,希望对大家有帮助!
【编辑推荐】