Como o MASQUERADE escolhe um endereço IP se houver múltiplos?

2

Se eu configurar uma regra do Linux iptables MASQUERADE para o tráfego saindo de uma interface específica, mas essa interface tiver vários endereços IP, como o IP de origem é escolhido?

Como exemplo, vamos supor que eu adicione uma regra como:

$ iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE

... e essa interface se parece com:

$ ip addr show dev eno1
1: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 94:18:82:35:a2:c1 brd ff:ff:ff:ff:ff:ff
    inet 10.136.122.97/24 scope global eno1
       valid_lft forever preferred_lft forever
    inet 10.136.122.98/24 scope global eno1
       valid_lft forever preferred_lft forever
    
por obeattie 21.08.2017 / 18:48

1 resposta

0

O IP não será escolhido de forma alguma. Os pacotes sairão do primeiro IP do octeto. Se você quer ter controle sobre isso, você pode lidar com isso com iptables SNAT .

Por exemplo, se você quiser enviar e-mails e navegar na web usando um IP e qualquer outra coisa com o outro, faça:

iptables -t nat -A POSTROUTING -o eno1 -m tcp --dport 80 -j SNAT --to 10.136.122.98
iptables -t nat -A POSTROUTING -o eno1 -m tcp --dport 443 -j SNAT --to 10.136.122.98
iptables -t nat -A POSTROUTING -o eno1 -m tcp --dport 587 -j SNAT --to 10.136.122.98
iptables -t nat -A POSTROUTING -o eno1 -m tcp --dport 465 -j SNAT --to 10.136.122.98
iptables -t nat -A POSTROUTING -o eno1 -m tcp --dport 25 -j SNAT --to 10.136.122.98

Todo o resto sairá de 10.136.122.97 através do alvo MASQUERADE.

Minha explicação é bem duplicada: IPTables e SNAT para apenas duas portas

    
por 21.08.2017 / 21:46