
Pergunta
Se eu usar as seguintes condições em uma regra iptable, qual será o efeito? É o mesmo que especificar qualquer conexão direcionada a mim mesmo?
! -d 127.0.0.0/8 -p tcp -m addrtype --dst-type LOCAL
Fundo
Especificamente, estou usando-o para redirecionar portas no meu host (com IP público, digamos, 150.200.30.40) para um dos meus contêineres LXC (com IP 10.0.3.202). Parece-me que estas regras são equivalentes ao tráfego endereçado ao endereço IP público do meu host.
## IPTABLE RULE FOR INCOMING CONNECTIONS??
iptables -t nat -A PREROUTING ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -p tcp --dport 2222 -j DNAT --to-destination 10.0.3.202:22
## EQUIVALENT RULE?? (for connections directed at 150.200.30.40)
iptables -t nat -A PREROUTING -d 150.200.30.40 -p tcp --dport 2222 -j DNAT --to-destination 10.0.3.202:22
Responder1
Há casos em que esses dois não são idênticos. Aqui está o porquê (não estou discutindo aqui outras correspondências como protocolo e porta):
- A primeira regra corresponde quando o pacote é destinado a um endereço local (não incluindo o intervalo 127.0.0.0).
- A segunda regra corresponde quando o pacote é destinado a um endereço IP específico (atribuído a esta máquina como você mencionou).
Eles serão idênticos se houver apenas um endereço atribuído a esta máquina, que é 150.200.30.40. Ambos serão pacotes correspondentes destinados a um endereço local que não corresponde ao intervalo 127.0.0.0.
Eles serão diferentes quando houver pelo menos um endereço atribuído a qualquer interface diferente do IP público mencionado (e, claro, excluindo o intervalo privado especial 127.0.0.0).
Se o IP público mencionado não estiver atribuído a esta máquina, eles são diferentes com certeza.