iptables e problema de política de roteamento de origem

1

Eu tenho um serviço em execução em um namespace de rede e poucas regras iptables para expô-lo ao mundo externo.

Os seguintes comandos são um exemplo da minha configuração:

sudo ip netns add ns1
sudo ip link add veth1_ type veth peer name veth1
sudo ip link set veth1_ netns ns1
sudo ip netns exec ns1 ifconfig veth1_ 192.168.0.2/24 up
sudo ifconfig veth1 192.168.0.1/24 up

sudo iptables -P FORWARD ACCEPT
sudo iptables -t nat -A POSTROUTING -o veth1 -j MASQUERADE
sudo iptables -t nat -A PREROUTING -p tcp -m tcp --dport 50000 -j DNAT --to-destination 192.168.0.2:8000

sudo ip netns exec ns1 netcat -l 8000

Eu consigo acessar o serviço por meio da porta: 50000, portanto, não há problemas até o momento.

Eu também preciso rotear pacotes originados daquele namespace de rede e ir para um endereço IP específico através de uma interface especial, para fazer isso eu uso uma política de roteamento de origem.

sudo ip route add 172.23.23.23 via X.X.X.X table 1000
sudo ip rule add from 192.168.0.2 iif veth1 to 172.23.23.23 lookup 1000

Quando tento acessar o serviço do host 172.23.23.23, ele não funciona enquanto funciona de qualquer outro host.

A minha pergunta é: por que essa rota de diretiva com base na fonte afeta o tráfego ?, os pacotes que entram no veth1 são mascarados, portanto, a resposta não deve corresponder a essas regras. Meu raciocínio está errado?

Obrigado,

    
por Mauricio Vásquez 18.06.2018 / 22:14

0 respostas