Encaminhamento de tráfego via interface diferente com base no destino

0

Estou jogando com o iptables e o roteamento.

Então eu tenho uma máquina Ubuntu com 2 interfaces eth0 (192.168.2.100, gw 192.168.2.1) e tun0 (10.7.7.2, gw 10.7.7.1).
Eu quero tráfego para este site ifconfig.me ir via tun0 (10.7.7.1) e ipinfo.io via eth0 (192.168.2.1)

Então eu fiz:

Eu criei uma nova entrada em / etc / iproute2 / rt_tables em echo 1 vpn >> /etc/iproute2/rt_tables

Em seguida, adicionei a rota padrão à nova tabela em ip route add default via 10.7.7.1 dev tun0 table vpn

Adicionei a regra para que todos os pacotes com o makr 1 sejam roteados por meio da tabela vpn
ip rule add fwmark 0x1 table vpn

E marquei todo o tráfego de saída para o ifconfig.me com a marca 1
iptables -A OUTPUT -t mangle -d ifconfig.me -j MARK --set-mark 1

Quando faço o curl para ipinfo.io curl ipinfo.io recebo o IP correto de volta, gateway de formulário fornecido pela eth0, mas quando tento obter uma resposta do ifconfig.me curl ifconfig.me nada está acontecendo (acho que o tempo limite está esgotado) ). Então, parece que o tráfego está passando pela tabela correta, mas para lá.

ip route show table vpn :% default via 10.7.7.1 dev tun0

    
por James 05.11.2018 / 11:18

1 resposta

1

Você não precisa de toda essa bagunça, o roteamento é baseado em destino e gateway, então se você quiser que algum tráfego passe por alguma interface, tudo que você precisa é ... definir a rota corretamente:

# ifconfig thru vpn link
ip route add 153.121.72.212 via 10.7.7.1
ip route add 153.121.72.211 via 10.7.7.1
# everything else via default network
ip route add default via 192.168.2.1
    
por 05.11.2018 / 13:23