Eu testei a seguinte configuração com dois namespaces de rede e dois pares de veth:
+-- Main --+
| | 192.168.2.21/24
| wlan0 | ------------------- ...
| |
| | 10.0.0.254/24 10.0.0.1/24 +-- NS0 --+
| veth0a | --------------------------- | veth0b |
| | +---------+
| |
| | 10.0.1.254/24 10.0.1.1/24 +-- NS1 --+
| veth1a | --------------------------- | veth1b |
| | +---------+
+----------+
O objetivo é rotear todo o tráfego de Main para wlan0 (rede C), enquanto direciona tudo de veth0 (rede A) a veth1 (rede B).
Há uma rota padrão normal em wlan0 , adquirida via DHCP:
$ ip route
default via 192.168.2.1 dev wlan0
...
O encaminhamento está ativado:
echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward
Adicionamos uma rota padrão para veth1a em uma nova tabela, assumindo que 10.0.1.1 é o gateway:
sudo ip route add 10.0.1.0/24 table 250 dev veth1a src 10.0.1.254
sudo ip route add default table 250 dev veth1a via 10.0.1.1
Todo o tráfego de e para veth0a (10.0.0.0/24) usa esta tabela:
sudo ip rule add from 10.0.0.0/24 table 250
sudo ip rule add to 10.0.0.0/24 table 250
Se alguém atrás de veth1b (10.0.1.0/24) tiver a ideia estúpida de tentar nos usar como gateway, evite encaminhar para wlan0 e voltar direto usando a mesma tabela. Isso geralmente gera pacotes de erro ICMP:
sudo ip rule add from 10.0.1.0/24 table 250
sudo ip rule add to 10.0.1.0/24 table 250
Adapte-se à sua configuração conforme necessário.
Nenhum localhost foi sequer remotamente mencionado em qualquer lugar.