将收到的数据包转发到互联网

将收到的数据包转发到互联网

我目前有一个气象站,我正试图嗅探来自该气象站的数据包,该气象站也需要直接与互联网通信。我目前的设置是,我在防火墙中配置了 NAT 规则,以将数据从气象站转发到我的 Ubuntu 服务器。我可以在服务器上成功接收来自气象站的数据,但为了接收正确的数据,气象站需要与互联网握手。

所以我的问题是,如何让我的 Ubuntu 服务器在工作站和互联网之间保持一致?

编辑:为了清楚起见,我通过执行以下操作使用旧路由器解决了这个问题:

iptables -t mangle -A PREROUTING  -s 192.168.0.7 -j ROUTE --tee --gw 192.168.0.8
iptables -t mangle -A POSTROUTING -d 192.168.0.7 -j ROUTE --tee --gw 192.168.0.8

我现在的问题是我的新的 UniFi 安全网关 3P 不接受“--tee”目标,我创建了以下 NAT 规则以将数据从我的气象站传输到我的 ubuntu 服务器:

set service nat rule 4500 destination port 80
set service nat rule 4500 source address 192.168.0.7
set service nat rule 4500 inbound-interface eth1
set service nat rule 4500 inside-address address 192.168.0.8
set service nat rule 4500 inside-address port 80
set service nat rule 4500 protocol tcp
set service nat rule 4500 type destination

但正如之前提到的,这是一个死胡同,车站无法与互联网通信。

笔记:

192.167.0.1 = Gateway/USG
192.167.0.7 = Weather Station
192.167.0.8 = Ubuntu VM

提前致谢!

凯文

答案1

如果可以通过你的 ubuntu 为气象站分配一条默认路线,那将会漂亮得多,现在你必须进行三次 NAT,而且这并不稳固,也不容易排除故障。

在 Ubuntu 上将其设置为互联网网关而不是端点,您需要启用 ip_forwarding 并添加 iptables 规则来伪装传出的传入流量,假装它来自您的 ubuntu。

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE

您可能还需要在转发中添加一条规则以明确允许转发流量,这可能已经默认接受所有内容。

iptables -A FORWARD -i enp0s3 -j ACCEPT

这将匹配所有不是发往您的 ubuntu 的传入流量(通过),因此如果可能的话,也将其与源(-s)和/或目标(-d)等特征进行匹配

iptables -A FORWARD -s 1.2.3.4 -d 5.6.7.8 -i enp0s3 -j ACCEPT

相关内容