NAT 端口至内部节点

NAT 端口至内部节点

我们正在使用连接到 profinet(和 profibus)网络的 PLC(phoenix plc next)。由于缺乏工具,无法根据需要重新接线(PLC 集成在我们的机器中),我们正在寻找不同的方式来访问 profibus 主站上的某些 https 网络服务器。

因此,从远处看,我们有一台 Windows PC。这台 PC 通过交换机连接到 PLC。该 PLC 在 Linux 发行版上运行。PLC 连接到 profinet 主站和 profibus 主站。

  • 温控电脑 (192.168.192.200)
  • PLC外置网卡(192.168.192.202)
  • PLC内部网卡(192.168.2.2)
  • Profinet主站(192.168.2.3)
  • Profibus主站(192.168.2.4)

如果我们能够在 Windows PC 上打开 Web 浏览器并连接到 Profibus 主机(其中 PLC 只需将数据包通过 NAT 发送到 Profibus 主机),那将是绝对精彩的。

我有 PLC 的 root 访问权限,所以我认为我可以使用 来管理它iptables。由于我们根本不关心安全性,我将所有策略设置为接受(输入、输出、转发)。然后我必须采取的唯一步骤(我太天真了……)是将数据包 NAT 到目的地。不幸的是,它不起作用。

我当前的输出iptables -S

root@axcf3152:/opt/plcnext/# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

和我的 nat 表

root@axcf3152:/opt/plcnext/# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       icmp --  anywhere             anywhere             to:192.168.2.4
DNAT       tcp  --  anywhere             anywhere             tcp dpt:6666 to:192.168.2.4:443
DNAT       tcp  --  anywhere             anywhere             tcp dpt:5555 to:192.168.2.3:443
DNAT       tcp  --  anywhere             anywhere             tcp dpt:4444 to:192.168.2.3:80
DNAT       tcp  --  anywhere             anywhere             tcp dpt:3333 to:192.168.2.4:80
DNAT       tcp  --  anywhere             anywhere             tcp dpt:6666 to:192.168.2.4:443

所以基本上,除了将所有策略设置为接受之外,我所做的就是为 nat 添加一些规则:

iptables -t nat -A PREROUTING -p tcp --dport 6666 -j DNAT --to-destination 192.168.2.4:443

然后针对两种类型(http(80)、https(443))以及 profinet 主站(192.168.2.3)和 profibus 主站(192.168.2.4)

如果我理解了今晚阅读的有关 iptables 的所有内容,我就不需要费心添加过滤表“FORWARD”的规则,因为我接受了所有内容(超级不安全,但我们不关心这个测试设置)。

我唯一不确定的是,我是否(或何时)也需要 nat POSTROUTING。

无论如何,当我打开网页时https://192.168.192.202:6666或其任何类型的页面都无法加载(连接被拒绝)。

任何帮助将不胜感激!!

更新:

发出以下命令让我 ping profibus 主站(我认为)

iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
iptables -t nat -A PREROUTING -p icmp -j DNAT --to-destination 192.168.2.4
iptables -t filter -A FORWARD -p icmp -d 192.168.2.4 -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE

当我在 Windows PC 上 ping 192.168.192.202 时,我得到了回复。我还看到iptables -t nat -L -v此规则的统计数据有所增加(当我提交新的 ping 命令时,数据包数 + 字节数会增加)。

我认为这证明 profinet 主站正在回复 ping(因为我现在拒绝 PLC 本身上的 icmp)

问题:

  • 我需要 FORWARD 规则吗?或者我的假设是正确的,即我允许一切,并且此规则是多余的?
  • 我需要添加 MASQUARADE 吗?我仍然很难理解它实际上的作用(从网上的问题数量来看,似乎还有很多其他问题)
  • 我的 iptables 实验中是否缺少了什么内容,可以解释为什么 https 无法转发?或者一切看起来都很好,问题是否出在实际的 profibus 主控上(例如,没有像供应商声称的那样在那里托管 Web 服务器)

更新2:

icmp 规则有时会起作用。当我从 iptables 中删除所有规则并尝试重现这些步骤时,它并不总是有效。iptables 比我想象的要难...

相关内容