记一次iptables配置(REJECT --reject-with icmp-host-prohibited)
目的:需要主机A能访问主机B,主机A上telnet 主机B 65005端口,返回如下:
RBTGW-CH121-b:~ # telnet 192.168.90.25 65005
Trying 192.168.90.25...
telnet: connect to address 192.168.90.25: No route to host
查明原因为主机B开启了iptables防火墙,开启对应端口允许访问规则即可,记录本文主要原因是新增放通规则时用的iptables -A,新规则追加到了(A INPUT -j REJECT --reject-with icmp-host-prohibited)这条规则至下,导致65005端口依然无法被访问,查明原因做次记录。
新增规则:允许所有ip能访问本机的65005端口
# 新增规则(-I表示插入在链的第一位置,-A 表示追加到链的末尾位置,防火墙规则是从上往下读取) [root@data ~]# iptables -I INPUT -p tcp --dport 65005 -j ACCEPT # 保存规则到默认文件/etc/sysconfig/iptables [root@data ~]# service iptables save # 重启 [root@data ~]# service iptables restart
查看当前iptables保存的配置
特别说明:这里需要注意,如果上面用的iptables -A的方式追加规则,新规则虽然是放通端口,但规则却在-A INPUT -j REJECT --reject-with icmp-host-prohibited之后,防火墙规则读取是由上至下,当读取到该规则后,65005这条新增规则就不会被读取,导致65005依然不能被访问,所以要么使用iptables -I插入到最上面(也可以指定序号),要么通过手动添加规则到该规则前面即可(vim /etc/sysconfig/iptables )
-A INPUT -p tcp -m tcp --dport 65005 -j ACCEPT # 表示刚新增的规则,此时已允许其他主机访问该端口
-A INPUT -j REJECT --reject-with icmp-host-prohibited # 这行是已拒绝其他端口的命令,如果我们将新插入的开放端口在放在这行命令之后的情况下,后面的配置开放的端口是不会被启用的。
[root@data ~]# vim /etc/sysconfig/iptables # Generated by iptables-save v1.4.7 on Tue Mar 9 16:14:49 2021 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [1430:101042] -A INPUT -p tcp -m tcp --dport 65005 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 53361 -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Tue Mar 9 16:14:49 2021
查看当前规则(蓝色为新增)
[root@data ~]# service iptables status 表格:filter 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:65005 2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:53361 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 4 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 7 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination