使用iptables查看和创建访问规则

由于云服务器IP访问策略配置有限制,手动对单个IP设置访问策略过于繁琐。例如,要对50个IP一对一的设置访问策略,并且这50个IP不是在一个网段内,就只能手动一条一条加,非常麻烦。因此决定使用IPTables在系统内部设置规则,在云配置页面做比较粗力度的IP访问策略设置。顺便学习一下IPTables设置的一些要点,并记录下来。

查看IPTables的所有规则

iptables -nL --line-numbers #参数line-numbers能够显示规则的行号,方便删除操作
iptables -t filter -nL --line-numbers #参数line-numbers能够显示规则的行号,方便删除操作
iptables -t nat -nL --line-numbers

删除规则

iptables -D INPUT 1  #删除INPUT链中的第一条规则,默认是filter表
iptables -D INPUT 2  #删除INPUT链中的第二条规则,默认是filter表

删除Nat表中的规则

iptables -t nat -D OUTPUT 1  #删除nat表中OUTPUT链中的第一条规则

添加规则顺序问题
关于添加访问策略的先后顺序,必须先添加白名单,再添加黑名单。因此必须先添加白名单(允许策略),然后使用添加黑名单。例如以下顺序是无法远程连接22端口的:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22
ACCEPT     tcp  --  119.204.115.25       0.0.0.0/0            tcp dpt:22

必须改为:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  119.204.115.25       0.0.0.0/0            tcp dpt:22
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

限制访问端口

iptables -A INPUT -p TCP --dport 12345 -j DROP  #建议最后添加,否则会影响访问

允许访问端口

iptables -A INPUT -s 43.254.105.235 -p TCP --dport 12345 -j ACCEPT  #建议先添加,或者使用-I添加到表的最前端

允许IP段访问多个端口

iptables -A INPUT -m iprange --src-range 43.254.105.10-43.254.105.100 -p TCP -m multiport --dport 12345,12346 -j ACCEPT  #建议先添加,或者使用-I添加到表的最前端

iptables保存、重启和关闭

sudo iptables-save > ./iptables-rules
sudo iptables-restore < ./iptables-rules
service iptables restart
service iptables stop

关于使用IPTables设置Nat的用例,可以参考本文《从零搭建Redis Cluster分片集群》。文中使用IPTables设置Nat规则,所有访问集群节点的数据包走局域网,其他网路访问不变。

辅助工具
使用netstat查看当前开发监听的端口和已建立连接的端口:

netstat -tunpl | grep LISTEN #查看监听端口
netstat -tunp #查看建立连接的端口
Captain QR Code

扫码联系船长

发表评论

邮箱地址不会被公开。 必填项已用*标注