Devido à nossa localização remota e restrições orçamentárias, minha conexão com a Internet é limitada ao 3G / EDGE do celular. O provedor de serviços não tem a opção de me fornecer um IP público, portanto, conseguimos contornar isso executando meu servidor linux através de uma VPN, com um encapsulamento para um IP dedicado. Uma complicação (temporária) adicionada é que é uma máquina virtual, VMWare, que em breve será substituída por uma máquina física.
Atualmente eu gerencio alguns rastreadores GPS com sucesso neste servidor, eles podem acessar o servidor através do IP público através do tun0, o túnel configurado pela VPN. Eu também posso acessar alguns outros dispositivos IP localizados na minha rede local a partir da Internet, então a configuração funciona.
Eu preciso configurar um soquete TCP para pegar dados vindos de outro dispositivo. Eu corro $ ncat -l -k -p 8993
e $ netstat -l
mostra que está realmente escutando naquela porta.
tcp 0 0 *:8993 *:* LISTEN
tcp6 0 0 [::]:8993 [::]:* LISTEN
Os resultados são que eu posso conectar a este soquete com o telnet quando eu acesso o servidor através 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 deve ser fechada. Eu tenho a seguinte linha no iptables:
iptables -A FORWARD -i tun0 -o eth0 -p tcp --syn --dport 8993 -m conntrack --ctstate NEW -j ACCEPT
Eu também coloco as seguintes linhas para ver se isso ajuda a resolver qualquer coisa, mas até agora não há 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 estou sentindo falta de algo pequeno aqui, já que meus outros dispositivos acessam o servidor do lado público sem problemas. Qualquer ajuda seria muito apreciada.
Isso é o que o $ 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)