Hairpin no Linux

Hairpin no Linux

Tenho um roteador no qual instalei um sistema Linux.

Quero que meu roteador suporte NAT hairpinning

Existe tal recurso no Kernel Linux? Se sim, como ativá-lo? Existe um patch para aplicá-lo no meu kernel para suportar o hairpinning?

Explicação de hairpinning da Wikipedia:

Let us consider a private network with the following:

    Gateway address: 192.168.0.1
    Host 1: 192.168.0.5
    Host 2: 192.168.0.7

    The gateway has an external IP : 192.0.2.1
    Host 1 runs a P2P application P1 on its port 12345 which is externally mapped to 4444.
    Host 2 runs a P2P application P2 on its port 12345 which is externally mapped to 5555.

If the NAT device supports hairpinning, then P1 application can connect to the P2 application using the external endpoint 192.0.2.1:5555.
If not, the communication will not work.

Responder1

Isso é algo que iptablesfunciona perfeitamente com um kernel "recente" (qualquer coisa desde2.4, isso tem mais de 10 anos).

O truque é fazer um "natting reverso": mapeie o endereço IP de qualquer host da sua rede local que esteja acessando os dois servidores NAT para o IP público do seu gateway.

Algo como o seguinte (isso éapenasregras de NAT, sem firewall):

iptables -t nat -A PREROUTING -p tcp -m tcp  -s 192.168.0.0/24   -d 192.168.0.5  --dport 4444 -j DNAT --to-destination :12345
iptables -t nat -A POSTROUTING -o eth1  -p tcp -m tcp  -s 192.168.0.0/24   --dport 12345 -j SNAT --to-source 192.10.2.1
iptables -t nat -A PREROUTING -p tcp -m tcp  -s 192.168.0.0/24   -d 192.168.0.7  --dport 5555 -j DNAT --to-destination :12345
iptables -t nat -A POSTROUTING -o eth1  -p tcp -m tcp  -s 192.168.0.0/24   --dport 12345 -j SNAT --to-source 192.10.2.1
iptables -t nat -A PREROUTING -p tcp -m tcp   -d 192.168.0.1  --dport 4444 -j DNAT --to-destination 192.168.0.5:12345
iptables -t nat -A PREROUTING -p tcp -m tcp   -d 192.168.0.1  --dport 5555 -j DNAT --to-destination 192.168.0.7:12345
iptables -t nat -A POSTROUTING -o eth0   -j SNAT --to-source 192.168.0.1

Se você não está familiarizado com a arte misteriosa de escrever regras de firewall, sugiro usar uma interface gráfica comoconstrutor.

informação relacionada