Desejo hospedar um servidor de jogos (Zandronum Doom) na porta 10666 UDP, mas ninguém pode se conectar a ele. Eu solucionei o problema e acho que é um problema com o meu roteamento. Minha arquitetura de rede física é assim:
[WAN] - [Router] - [Switch] - [Pi]
- [Desktop]
- [Other]
Meu roteamento é o seguinte
[WAN] - [(pub. ip) Router (192.168.1.1)] - [Pi (192.168.1.5)] - [Desktop (192.168.1.11)]
- [Other (tv, printer, laptop, phone, etc)]
Meu roteador está configurado para encaminhar qualquer coisa que eu queira para o raspberry pi e somente lá. O raspberry pi está configurado como um IDS/IPS e também atua como servidor DNS e servidor DHCP para toda a minha rede. Quero que todo o meu tráfego passe por lá. O rasperry pi é definido como gateway padrão via dhcp, o próprio rasperry pi tem o roteador como gateway padrão.
O roteador está configurado para encaminhar tráfego tcp e udp na porta 10666 para o pi. Este é o tráfego que me dá problemas. O rasperry pi tem as seguintes regras relevantes no iptable:
$> sudo iptables --list -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- fritz.box pi.lan tcp dpt:10666 to:192.168.1.11
DNAT udp -- fritz.box pi.lan udp dpt:10666 to:192.168.1.11
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
$> sudo iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
QUEUE all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Não sei por que alguns desses nomes são resolvidos enquanto outros não.
Não consigo me conectar ao servidor via ip público. TCP Dump revela o seguinte:
$> sudo tcpdump -i eth0 | grep 10666
[...]
21:34:57.456103 IP paul-pc.lan.10667 > <pub-ip>.10666: UDP, length 50
21:34:57.457635 IP pi.lan.10667 > <pub-ip>.10666: UDP, length 50
21:34:57.458130 IP <pub-ip>.10667 > pi.lan.10666: UDP, length 50
21:34:57.458279 IP pi.lan > <pub-ip>: ICMP pi.lan udp port 10666 unreachable, length 86
21:34:57.458451 IP <pub-ip> > pi.lan: ICMP <pub-ip> udp port 10666 unreachable, length 86
21:34:57.458711 IP <pub-ip> > paul-pc.lan: ICMP <pub-ip> udp port 10666 unreachable, length 86
[repeating]
[...]
Para testar as coisas, alterei as configurações de rede do servidor para ignorar o pi e o roteador para encaminhar a porta diretamente para a área de trabalho. Então funcionou perfeitamente.
A opção
-s 192.168.1.1
está errada. A origem é passada do roteador, não reempacotada (o roteador não é a origem). Use um filtro de destino com-d 192.168.1.5