iptables端口从外部ppp0转发到内部服务器

iptables端口从外部ppp0转发到内部服务器

其实同样的问题这个。但我在那里也没有得到答案。

我的场景是:一个带有两个网卡的 Linux 机器,充当路由器,运行用于伪装的 iptables 规则、防火墙等。我想将某些端口转发到只有 LAN IP 的内部服务器。

路由器服务器使用 ppp0 作为外部接口,使用 192.168.212.50 作为内部 IP。我想将端口 2000 从外部(连接到主机名:2000)转发到内部 192.168.212.51:8088。

sysctl net/ipv4/ip_forward 已设置为 1,因为它已设置伪装。

现在,当我尝试从外部 IP(主机名:2000)进行端口转发时,它总是超时。在日志中我可以看到数据包被丢弃。

iptables 规则在这里:https://pastebin.com/au9QDhQf

  • 如果我将端口设置为仅转发到 LAN,即未定义-i $EXT_IF并连接http://192.168.212.50:2000/它可以工作。
  • 我也检查过这个帖子。但是,由于我已经设置了 MASQUERADE,所以第二条规则iptables -t nat -A POSTROUTING -j MASQUERADE在这里不起作用。

任何帮助将不胜感激。

答案1

由于您可能总是希望能够从网络内部连接到 external-ip:2000,因此您可能不希望在防火墙规则中使用 `-i $EXT_IF$ 。

我的猜测是,既然您要更改中的端口号ROUTING 链,允许流量到达端口 2000 并不重要,当流量达到该规则时,它可能已经被修改,因此目标端口是 8088。

答案2

终于我知道发生了什么了。

我把端口转发和转发规则放在了错误的地方—— iptables -A FORWARD -j block端口转发规则,因此 POSTROUTING 被触发,但随后数据包被丢弃。

相关内容