You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改iptables端口转发目标端口后无法生效,求排查方案

问题分析与解决

你遗漏了两个关键配置调整:

  1. 旧DNAT规则未移除
    你用-A参数是在PREROUTING链末尾追加新规则,原来那条把1046端口转发到172.27.255.4:1046的规则还存在。iptables规则按顺序匹配,外网流量会先命中旧规则,被转发到服务器已停止监听的1046端口,自然无法连接。
    解决:先通过iptables -t nat -L PREROUTING --line-numbers找到旧规则的行号,再用iptables -t nat -D PREROUTING [行号]删除;或者直接用-R参数替换原规则,而非追加。

  2. FORWARD链规则未更新
    原来的filter表FORWARD规则只允许目标端口为1046的流量通过防火墙,但现在DNAT后,转发到服务器的流量目标端口是22,这条规则会拦截这些22端口的流量,导致连接失败。
    解决:要么修改原FORWARD规则,把--dport 1046改成--dport 22;要么追加一条新规则:

    iptables -t filter -A FORWARD -p tcp -i ppp0 -d 172.27.255.4 --dport 22 -j ACCEPT
    

    若修改旧规则,同样需先查行号删除后添加新规则,或用-R替换。

最后别忘了保存iptables规则(不同系统命令不同,比如iptables-save > /etc/sysconfig/iptables或netfilter-persistent save),避免重启防火墙后配置丢失。

内容的提问来源于stack exchange,提问作者felix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 12:05:17