Em contraste com o que parece, o problema não está se conectando ao serviço: o problema é a resposta.
Acho que falta na sua configuração do Netfilter esta regra padrão importante:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED
Estou tentando configurar o iptables para permitir conexões de uma conexão remota para acessar o mongodb na porta 27017. abaixo estão minhas regras
ACCEPT tcp -- any any anywhere anywhere tcp dpt:27017
*reject_all_else here*
Isso funciona bem para conexões remotas, mas não consegue se conectar na interface de loopback. Adicionando abaixo com porta não funciona.
iptables -I INPUT 1 -i lo -p tcp --dport 27017 -j ACCEPT
Mas permitir todo o loopback sem especificar portas faz. O loopback muda as portas ou faz algo estranho?
iptables -I INPUT 1 -i lo -p tcp -j ACCEPT
tcmdump abaixo
[root@localhost ~]# tcpdump -i lo -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
17:19:49.528039 IP 127.0.0.1.59372 > 127.0.0.1.27017: Flags [S], seq 2525021556, win 43690, options [mss 65495,sackOK,TS val 10984445 ecr 0,nop,wscale 7], length 0
20:57:14.735029 IP 127.0.0.1.27017 > 127.0.0.1.59372: Flags [S.], seq 1048378415, ack 2525021557, win 43690, options [mss 65495,sackOK,TS val 10984445 ecr 10984445,nop,wscale 7], length 0
17:19:49.528102 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable - admin prohibited, length 68
17:19:50.531012 IP 127.0.0.1.59372 > 127.0.0.1.27017: Flags [S], seq 2525021556, win 43690, options [mss 65495,sackOK,TS val 10985448 ecr 0,nop,wscale 7], length 0
22:09:02.588230 IP 127.0.0.1.27017 > 127.0.0.1.59372: Flags [S.], seq 1064049928, ack 2525021557, win 43690, options [mss 65495,sackOK,TS val 10985448 ecr 10985448,nop,wscale 7], length 0
17:19:50.531066 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable - admin prohibited, length 68
17:19:52.535030 IP 127.0.0.1.59372 > 127.0.0.1.27017: Flags [S], seq 2525021556, win 43690, options [mss 65495,sackOK,TS val 10987452 ecr 0,nop,wscale 7], length 0
00:32:29.704695 IP 127.0.0.1.27017 > 127.0.0.1.59372: Flags [S.], seq 1095362915, ack 2525021557, win 43690, options [mss 65495,sackOK,TS val 10987452 ecr 10987452,nop,wscale 7], length 0
17:19:52.535109 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable - admin prohibited, length 68
Em contraste com o que parece, o problema não está se conectando ao serviço: o problema é a resposta.
Acho que falta na sua configuração do Netfilter esta regra padrão importante:
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED
Com base na resposta de Hauke, o seguinte funcionou para mim.
iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT
O mongo conseguiu alcançar o mongod através da regra INPUT, mas, como Hauke apontou, a resposta do mongod estava sendo filtrada (ao contrário de uma conexão remota, já que todo o tráfego de saída é permitido).
Tags iptables