记一次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 # 这行是已拒绝其他端口的命令,如果我们将新插入的开放端口在放在这行命令之后的情况下,后面的配置开放的端口是不会被启用的。
1 |
[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
1 |
查看当前规则(蓝色为新增)
[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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库