Estou executando o OpenWrt no meu roteador, o que me permite executar aplicativos como apache e emule. Eu instalei o emule mas continuo ficando lowid, indicando que minha porta está mal configurada. Consegui resolver isso usando o SSH em meu roteador e editando o iptables. Minha tabela INPUT originalmente se parece com isso ...
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere state INVALID
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
syn_flood tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN
input_rule all -- anywhere anywhere
input all -- anywhere anywhere
Se eu adicionar essa regra, obtenho highid, indicando que minha porta está configurada corretamente ...
iptables -I INPUT 2 -p tcp --dport 4662 -j ACCEPT
Depois de executar isso, minha tabela INPUT se parece com ...
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- anywhere anywhere state INVALID
ACCEPT tcp -- anywhere anywhere tcp dpt:4662
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
syn_flood tcp -- anywhere anywhere tcp flags:FIN,SYN,RST,ACK/SYN
input_rule all -- anywhere anywhere
input all -- anywhere anywhere
Observe a posição. Se eu tentar fazer da 1ª ou 2ª regra da cadeia, isso me dá uma vantagem. Se eu for a qualquer lugar abaixo disso (regras 3-6) eu ainda fico abatido. Eu sei muito pouco sobre o iptables, mas eu entendo que as regras na cadeia INPUT são verificadas em ordem. Pelo que eu posso ver, minha regra funciona quando verificada antes ou depois que todos os pacotes inválidos são descartados.
Eu não entendo porque não funciona depois de aceitar todos os pacotes relacionados ou estabelecidos. Alguém pode explicar o meu porque esta regra funciona na posição 1 ou 2, mas não em quaisquer outras?