我有一个小型交换子网,其中有几个通过 IP 通信的设备。它们通过以太网连接到运行 Ubuntu 18.04 的 ODroid,该 ODroid 也位于 OpenVPN 中。(ODroid 使用 WiFi 连接到互联网 atm,稍后将更改为 LTE)
我想从也位于 VPN 中的计算机寻址在该子网中的设备上运行的服务。
+-----------------+ +------------------+ +--------------------+
|A Device | ethernet |ODroid | VPN |Controlling Computer|
|eth0: 192.168.2.2+----------+tun0: 10.8.0.5 +------+tun0: 10.8.0.2 |
+-----------------+ |eth0: 192.168.2.1 | +--------------------+
+------------------+
我尝试使用带有 nat 的 iptables 来使控制计算机能够访问 ODroid 后面的设备。
[on the ODroid]
sudo iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
sudo iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
我还在 ODroid 上启用了转发功能
cat /proc/sys/net/ipv4/ip_forward
1
我还为所有设备添加了静态路由:
[on the ODroid] ip r
0.0.0.0/1 via 10.8.0.1 dev tun0
default via 192.168.0.1 dev wlan0 proto dhcp metric 600
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.5
85.214.205.172 via 192.168.0.1 dev wlan0
128.0.0.0/1 via 10.8.0.1 dev tun0
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.106 metric 600
192.168.2.0/24 dev eth0 proto kernel scope link src 192.168.2.1
[on the controlling computer] ip r
0.0.0.0/1 via 10.8.0.1 dev tun0
default via 192.168.0.1 dev enp33s0 proto dhcp metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
[ip of my server] via 192.168.0.1 dev enp33s0
128.0.0.0/1 via 10.8.0.1 dev tun0
169.254.0.0/16 dev enp33s0 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.0.0/24 dev enp33s0 proto kernel scope link src 192.168.0.105 metric 100
192.168.2.0/24 via 10.8.0.5 dev tun0
[on the device I want to connect to] ip r
default via 192.168.2.1 dev enp0s25 proto dhcp metric 100
10.8.0.0/24 via 192.168.2.1 dev enp0s25
192.168.0.0/24 via 192.168.2.1 dev enp0s25
192.168.2.0/24 dev enp0s25 proto kernel scope link src 192.168.2.109 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
我可以从控制计算机和我想要连接的设备 ping ODroid。
从具有我想要连接的服务的设备,我可以连接到控制计算机,因此该方向的 NAT 似乎有效。但我无法反向连接。
我曾尝试过只使用一个
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
但这并没有帮助。
有什么建议么?
提前致谢