Estou tentando redirecionar o tráfego proveniente da Internet para um túnel SSH no host local com iptables
, na porta 2025. Por algum motivo, o redirecionamento não funciona.
Eu me conectei a ele com telnet
e ele ecoa de volta por algum motivo, mas não mostra o banner do servidor SMTP redirecionando para ele. Se eu telnet
no sistema este redirecionamento estiver ligado, para a porta 2025 eu recebo imediatamente uma saudação do servidor SMTP.
Conectando-se do mundo externo e pressionando teclas aleatórias:
$ telnet infantile.xyz 25
Trying 94.156.189.160...
Connected to infantile.xyz.
Escape character is '^]'.
cfvghnjdfghdfgh
Ele ecoa de volta as teclas aleatórias.
Conectando-se no sistema onde o redirecionamento está, mostra como quero que as coisas funcionem para pessoas de fora na Internet ...
# telnet localhost 2025
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 infantile.xyz ESMTP Postfix (Debian/GNU)
Meu iptables
config é o seguinte:
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
252M 124G ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
270K 16M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
308 12340 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
8988 612K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 ctstate NEW
2277K 462M UDP udp -- * * 0.0.0.0/0 0.0.0.0/0 ctstate NEW
3204K 147M TCP tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x17/0x02 ctstate NEW
2277K 462M REJECT udp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
2914K 130M REJECT tcp -- * * 0.0.0.0/0 0.0.0.0/0 reject-with tcp-reset
0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-proto-unreachable
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1855 packets, 447K bytes)
pkts bytes target prot opt in out source destination
Chain TCP (1 references)
pkts bytes target prot opt in out source destination
22104 1144K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
4976 265K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
2585 145K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
95 4836 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587
Chain UDP (1 references)
pkts bytes target prot opt in out source destination
As regras NAT para este conjunto de regras em que o redirecionamento que criei é:
Chain PREROUTING (policy ACCEPT 3813 packets, 465K bytes)
pkts bytes target prot opt in out source destination
2954 174K DNAT tcp -- * * 0.0.0.0/0 94.156.189.0/24 tcp dpt:25 to:127.0.0.1:2025
Chain INPUT (policy ACCEPT 3 packets, 110 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 6798 packets, 408K bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 11177 packets, 583K bytes)
pkts bytes target prot opt in out source destination
É estranho que ele aceite a conexão e ecoe, mas não responda de qualquer forma o serviço na outra extremidade (postfix).
Originalmente, configurei iptables
com este guia: link
Isso é o que eu tentei usar para redirecionar:
iptables -t nat -I PREROUTING -i eth0 -p tcp -d 94.156.189.160 --dport 25 -j DNAT --to-destination 127.0.0.1:2025
Ativei as seguintes opções de sysctl:
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.route_localnet = 1