做个备忘,

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

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

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

COMMIT


establieshed和related不允许,就不能持续传输数据,等于没放开。

icmp不允许的话,不能ping通这机器。

lo本机回环,加上吧!

22是ssh默认端口,如果是其他端口,就写其他的。不允许就不能远程管理。

REJECT一切,表示只要不是上面所列的允许项目的一概禁止。

如果需要对一大堆端口放行,就加上下面这行

-A INPUT -p tcp -m multiport --destination-port  22,80,443,8080  -j ACCEPT

如果是对一个范围的端口放行,比如vnc的5901-5944放行,那就写下面这行

-A INPUT -p tcp -m multiport --destination-port  5901:5944  -j ACCEPT

还可以把这一堆全连起来写,如下:

-A INPUT -s 123.112.0.0/12,135.227.0.128/25 -m state --state NEW -p tcp -m multiport --dports  22,80,443,8080,5901:5944  -j ACCEPT


查看现有规则(带行号)

iptables -t 表名儿 -nvL 链名儿 --line

比如iptables -t nat -nvL wan_icmp_input --line其中wan_icmp_input是自定义链名儿,就是自己建立的链里面包含一堆相同目的的规则,便于启停管理。

比如iptables -t filter -nvL OUTPUT查看filter表的网络上行规则。