
Tengo una pequeña subred conmutada con algunos dispositivos que se comunican con IP. Están conectados vía ethernet a un ODroid que ejecuta Ubuntu 18.04 y que también está en OpenVPN. (El ODroid está conectado al cajero automático de Internet con WiFi, se cambiará a LTE más adelante)
Quiero abordar un servicio que se ejecuta en los dispositivos en esa subred desde una computadora que también está en la 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 | +--------------------+
+------------------+
Intenté usar iptables con nat para que la computadora controladora pudiera acceder al dispositivo detrás del 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
También habilité el reenvío en el ODroid
cat /proc/sys/net/ipv4/ip_forward
1
También agregué rutas estáticas a todos los dispositivos:
[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
Puedo hacer ping al ODroid tanto desde el ordenador que lo controla como desde el dispositivo al que quiero conectarme.
Desde el dispositivo que tiene el servicio al que quiero conectarme, puedo conectarme a la computadora controladora, por lo que NAT en esa dirección parece funcionar. Pero no puedo conectarme al revés.
He intentado usar solo uno de
sudo iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
pero eso no ayudó.
¿Alguna sugerencia?
gracias de antemano