Devido à nossa localização muito remota e às restrições orçamentárias, minha conexão com a Internet está limitada ao celular 3G/EDGE. O provedor de serviços não tem a opção de me fornecer um IP público, então conseguimos contornar isso executando meu servidor Linux através de uma VPN, com um túnel para um IP dedicado. Uma complicação adicional (temporária) é que se trata de uma máquina virtual, VMWare, que em breve será substituída por uma máquina física.
Atualmente executo com sucesso alguns rastreadores GPS neste servidor, eles são capazes de acessar o servidor através do IP público através do tun0, o túnel configurado pela VPN. Também posso acessar alguns outros dispositivos IP localizados na minha rede local pela Internet, para que a configuração funcione.
Preciso configurar um soquete TCP para capturar dados provenientes de outro dispositivo. Eu corro $ ncat -l -k -p 8993
e $ netstat -l
mostro que realmente está escutando naquela porta.
tcp 0 0 *:8993 *:* LISTEN
tcp6 0 0 [::]:8993 [::]:* LISTEN
O resultado é que posso me conectar a esse soquete com telnet quando acesso o servidor por meio de seu adaptador local eth0 de dentro da minha rede local (192.168.0.113), mas não consigo me conectar a ele usando o IP público (tun0). canyouseeme.org também mostra que a porta está fechada. Tenho a seguinte linha no iptables:
iptables -A FORWARD -i tun0 -o eth0 -p tcp --syn --dport 8993 -m conntrack --ctstate NEW -j ACCEPT
Também coloquei as linhas a seguir para ver se ajuda a resolver alguma coisa, mas até agora nada de alegria.
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
Eu sei que está faltando alguma coisa aqui, já que meus outros dispositivos acessam o servidor do lado público sem problemas. Qualquer ajuda seria muito apreciada.
Isto é o que $ ifconfig
mostra:
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)