我当前的网络看起来像以下网络架构:
所有设备都运行 Ubuntu 20.04 LTS。存在 2 个网络红色(Raspberry 的 wlan0)和绿色(Raspberry 的 eth0)。只有 Raspberry 是这两个网络的成员。在所有设备上运行活性氧节点,本质上发布者-订阅者架构软件。该软件中的任何节点都使用网络端口进行通信,根据这种模式即使用的端口不固定。假设我们只使用域 1,即模式为:
- 端口 7650 和 7651 用于多播
- 端口对 (7660|7661)、(7662|7663) ... (7898|7899) 用于任何新节点
我目前在 Raspberry 上定时任务(在启动时运行)能够 SSH 桌面 -> Jetson:
#!/bin/bash
# Based on https://raspberrypi.stackexchange.com/questions/37554/local-network-between-two-rpis
# First we disable autoconfigured network on the Pi
# based on https://raspberrypi.stackexchange.com/questions/37594/how-can-i-disable-autoconfigured-networking-on-raspbian
sudo ip link set eth0 up
sudo ip addr add 10.66.66.1/24 dev eth0
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -I FORWARD -i eth0 -o wlan0 -j ACCEPT
sudo iptables -I FORWARD -i wlan0 -o eth0 -j ACCEPT
# Forward Port 9001 from Raspberry to Jetson port 22
# to ssh onto the Jetson, now use:
# ssh jetson@RaspberryIP -p 9001
echo '1' | sudo tee /proc/sys/net/ipv4/conf/wlan0/forwarding
echo '1' | sudo tee /proc/sys/net/ipv4/conf/eth0/forwarding
sudo iptables -t nat -A PREROUTING -p tcp -i wlan0 --dport 9001 -j DNAT --to-destination 10.66.66.2:22
sudo iptables -A FORWARD -p tcp -d 10.66.66.2 --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
我该如何更新脚本以将 (Jetson/Raspberry)-绿色网络端口 7650 和 7651 转发到 (Desktop/Raspberry)-红色网络端口 7650 和 7651 进行多播?我该如何更新脚本以安全地将使用的端口 (Jetson/Raspberry)-绿色网络转发到 (Desktop/Raspberry)-红色网络?
我认为我可能会没问题(因为节点数量不会太多,以避免发生碰撞)转发绿色->红色:
- (7650|7651)-> (7650|7651)
- (7660|7661)->(7898|7899)
- (7662|7663)->(7896|7897)
- ...
这实际上会使一个域中的可用节点减少一半。编辑:可能不起作用,因为多播是使用哪些端口的信息(?),重新映射将使该信息变得无用。但这绝对是我网络巫术的终结。非常感谢您的帮助。