
У меня есть небольшая коммутируемая подсеть с несколькими устройствами, которые взаимодействуют с IP. Они подключены через Ethernet к ODroid, работающему под управлением Ubuntu 18.04, который также находится в OpenVPN. (ODroid подключен к интернет-банкомату через WiFi, позже будет изменен на 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 | +--------------------+
+------------------+
Я попытался использовать iptables с nat, чтобы управляющий компьютер мог получить доступ к устройству за 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
Я могу пинговать ODroid как с управляющего компьютера, так и с устройства, к которому хочу подключиться.
С устройства, на котором есть служба, к которой я хочу подключиться, я могу подключиться к управляющему компьютеру, так что NAT в этом направлении, похоже, работает. Но я не могу подключиться в обратном направлении.
Я попробовал использовать только один из
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
но это не помогло.
Какие-либо предложения?
заранее спасибо