公司iptables配置(eMule, nat, forward, input, output, state)
公司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配置的全過程,希望對大家有幫助!
【編輯推薦】