Rootop 服务器运维与web架构

关于iptables放行端口无效

之前在iptables配置时都是直接去修改配置文件,然后重启,这次在命令行添加放行端口发现端口还不通。

# 查看当前iptables netfilter表的INPUT链规则

[root@HKSRV2426 ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 state NEW 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:5555 state NEW 
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

# 比如放行21端口

[root@HKSRV2426 ~]# iptables -A INPUT  -p tcp --dport 21 -j ACCEPT

这么添加还是无法访问21端口。

# 查看规则其实是在第8条规则下面新增的。

[root@HKSRV2426 ~]# iptables -L -n --line-number
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 state NEW 
2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 
3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:5555 state NEW 
4    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
5    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
6    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
8    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21 

第8条规则已经REJECT拒绝包了,下面的规则就不需要再继续匹配了。
所以防火墙规则一般是允许的放在拒绝上面,最后为默认规则才是拒绝或者丢弃。

# 可以通过插入规则解决,比如在规则3上面插入一条

[root@HKSRV2426 ~]# iptables -I INPUT 3 -p tcp --dport 3306 -j ACCEPT

分析原因:
# 查看防火墙配置文件

[root@HKSRV2426 ~]# vi /etc/sysconfig/iptables
略·
-A INPUT -j REJECT --reject-with icmp-host-prohibited

上面这条规则就是上面查询到的第8条规则。

REJECT和DROP基本一样,区别在于它除了阻塞包之外, 还向发送者返回错误信息。

--reject-with # 设置返回错误信息种类 
icmp-host-prohibited # 种类

全部的种类可以通过下面命令查到。

[root@HKSRV2426 ~]# iptables -j REJECT --help
Valid reject types:
icmp-net-unreachable     	ICMP network unreachable
net-unreach              	alias
icmp-host-unreachable    	ICMP host unreachable
host-unreach             	alias
icmp-proto-unreachable   	ICMP protocol unreachable
proto-unreach            	alias
icmp-port-unreachable    	ICMP port unreachable (default)
port-unreach             	alias
icmp-net-prohibited      	ICMP network prohibited
net-prohib               	alias
icmp-host-prohibited     	ICMP host prohibited
host-prohib              	alias
tcp-reset                	TCP RST packet
tcp-rst                  	alias
icmp-admin-prohibited    	ICMP administratively prohibited (*)
admin-prohib             	alias

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/4667.html

作者:Venus

服务器运维与性能优化

评论已关闭。