我目前有一个气象站,我正试图嗅探来自该气象站的数据包,该气象站也需要直接与互联网通信。我目前的设置是,我在防火墙中配置了 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