Netcat no funciona en un servidor Linux que ejecuta VPN

Netcat no funciona en un servidor Linux que ejecuta VPN

Debido a nuestra ubicación tan remota y restricciones presupuestarias, mi conexión a Internet está limitada a celular 3G/EDGE. El proveedor de servicios no tiene la opción de proporcionarme una IP pública, por lo que logramos solucionar este problema ejecutando mi servidor Linux a través de una VPN, con un túnel a una IP dedicada. Una complicación añadida (temporal) es que se trata de una máquina virtual, VMWare, que pronto será sustituida por una máquina física.

Actualmente ejecuto con éxito un par de rastreadores GPS en este servidor, pueden acceder al servidor a través de la IP pública a través de tun0, el túnel configurado por la VPN. También puedo acceder a otros dos dispositivos IP ubicados en mi red local desde Internet, por lo que la configuración funciona.

Necesito configurar un socket TCP para poder capturar datos provenientes de otro dispositivo. Corro $ ncat -l -k -p 8993y $ netstat -lmuestra que efectivamente está escuchando en ese puerto.

tcp        0      0 *:8993                  *:*                     LISTEN
tcp6       0      0 [::]:8993               [::]:*                  LISTEN

Los resultados son que puedo conectarme a este socket con telnet cuando accedo al servidor a través de su adaptador local eth0 desde mi red local (192.168.0.113) pero no puedo conectarme usando la IP pública (tun0). canyouseeme.org también muestra que ese puerto está cerrado. Tengo la siguiente línea en iptables:

iptables -A FORWARD -i tun0 -o eth0 -p tcp --syn --dport 8993 -m conntrack --ctstate NEW -j ACCEPT

También pongo las siguientes líneas a ver si ayuda a solucionar algo, pero de momento ninguna alegría.

iptables -A FORWARD -i tun0 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Sé que me falta algo pequeño aquí, ya que mis otros dispositivos acceden al servidor desde el lado público sin problemas. Cualquier ayuda sería muy apreciada.

Esto es lo que $ ifconfigmuestra:

eth0      Link encap:Ethernet  HWaddr 00:0c:29:45:c6:83
      inet addr:192.168.0.113  Bcast:192.168.0.255  Mask:255.255.255.0
      inet6 addr: fe80::20c:29ff:fe45:c683/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:11019 errors:0 dropped:0 overruns:0 frame:0
      TX packets:6309 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000
      RX bytes:5882474 (5.6 MiB)  TX bytes:1197497 (1.1 MiB)

lo        Link encap:Local Loopback
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:120 errors:0 dropped:0 overruns:0 frame:0
      TX packets:120 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0
      RX bytes:8069 (7.8 KiB)  TX bytes:8069 (7.8 KiB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
      inet addr:10.212.0.6  P-t-P:10.212.0.5  Mask:255.255.255.255
      UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
      RX packets:4206 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3948 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:100
      RX bytes:3528488 (3.3 MiB)  TX bytes:392464 (383.2 KiB)

información relacionada