由于云服务器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 #查看建立连接的端口
扫码联系船长