
Estou tentando descobrir por qual interface meu tráfego é roteado e obter o endereço IP local associado a essa interface. Isso me fará diferir entre os casos em que o acesso VPN está desabilitado (tudo passa por wlan0 -> lê o ip dessa interface) ou quando o vpn está ativado (tudo passa por tun0, obtenha o ip dessa interface).
Conheço o comando route, mas não consigo ver como irei analisá-lo para extrair as informações necessárias.
Esta é a minha lista de rotas IP sem VPN:
default via 192.168.26.1 dev wlp0s20f3 proto dhcp metric 600
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.26.0/23 dev wlp0s20f3 proto kernel scope link src 192.168.26.254 metric 600
e depois de conectar-se à VPN
default via 192.168.31.1 dev tun0 proto static metric 50
default via 192.168.26.1 dev wlp0s20f3 proto dhcp metric 600
10.0.0.0/8 via 192.168.31.1 dev tun0 proto static metric 50
13.224.73.0/24 via 192.168.31.1 dev tun0 proto static metric 50
18.135.151.3 via 192.168.31.1 dev tun0 proto static metric 50
40.114.41.40 via 192.168.31.1 dev tun0 proto static metric 50
52.95.0.0/16 via 192.168.31.1 dev tun0 proto static metric 50
104.18.4.20 via 192.168.31.1 dev tun0 proto static metric 50
104.18.5.20 via 192.168.31.1 dev tun0 proto static metric 50
104.18.25.245 via 192.168.31.1 dev tun0 proto static metric 50
104.27.148.109 via 192.168.31.1 dev tun0 proto static metric 50
104.27.149.109 via 192.168.31.1 dev tun0 proto static metric 50
143.204.190.0/24 via 192.168.31.1 dev tun0 proto static metric 50
149.11.92.90 via 192.168.26.1 dev wlp0s20f3 proto static metric 600
150.2.20.0/24 via 192.168.31.1 dev tun0 proto static metric 50
150.2.22.0/24 via 192.168.31.1 dev tun0 proto static metric 50
150.2.34.0/24 via 192.168.31.1 dev tun0 proto static metric 50
169.254.0.0/16 dev wlp0s20f3 scope link metric 1000
172.16.0.0/12 via 192.168.31.1 dev tun0 proto static metric 50
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.0.0/16 via 192.168.31.1 dev tun0 proto static metric 50
192.168.26.0/23 dev wlp0s20f3 proto kernel scope link src 192.168.26.254 metric 600
192.168.26.1 dev wlp0s20f3 proto static scope link metric 600
192.168.31.0/24 dev tun0 proto kernel scope link src 192.168.31.56 metric 50
Seria seguro assumir que a rota padrão superior é a que está sendo usada?
Responder1
A descoberta desses dados envolve duas partes: primeiro, determinar quais sub-redes estão saindo diretamente de uma interface específica; e, em segundo lugar, determinar qual é a 'rota padrão' do seu tráfego para a Internet.
(pule para a seção Suas rotas para minha dissecação da saída de suas rotas)
Em ambos os casos, precisamos da ip route list
saída, mas no meu caso veremos meu laptop (atualmente NÃO está VPN porque estou na minha rede doméstica):
default via 172.18.0.1 dev wlp59s0 proto dhcp metric 600
10.10.0.0/16 dev static-local proto kernel scope link src 10.10.0.1
10.73.252.0/24 dev InternalDHCP proto kernel scope link src 10.73.252.1
10.74.0.0/24 dev docker0 proto kernel scope link src 10.74.0.1 linkdown
169.254.0.0/16 dev docker0 scope link metric 1000 linkdown
172.18.0.0/16 dev wlp59s0 proto kernel scope link src 172.18.2.0 metric 600
Como você pode ver, tenho várias coisas diferentes aqui na minha rede. Eu tenho duas sub-redes docker, duas outras redes ( static-local
e InternalDHCP
para meus contêineres LXD), minha interface sem fio wlp59s0
e a 'rota padrão' na parte superior.
Vamos dissecar isso nas partes componentes. Comece examinando rotas não padrão. Isso seria lido da seguinte forma:
- Todo o tráfego para 10.10.0.0/16 (10.10.0.0-10.10.255.255) passa diretamente pelo
static-local
link de rede com o IP de origem 10.10.0.1. - Todo o tráfego para 10.73.252.0/24 (10.73.252.0-10.73.252.255) passa diretamente pelo
InternalDHCP
link de rede com a origem de 10.73.252.1 - Todo o tráfego para 10.74.0.0/24 (10.74.0.0-10.74.0.255) passa diretamente pelo
docker0
link de rede com a origem de 10.74.0.1. O mesmo link de rede também aceita tráfego para169.254.0.0/16
, porém esse link está offline e não funciona. - Todo o tráfego para 172.18.0.0/16 (172.18.0.0-172.18.255.255) passa diretamente pelo
wlp59s0
link de rede com o IP de origem 172.18.2.0.
Agora a rota padrão:
- Todo o outro tráfego que não corresponda a uma das outras rotas mencionadas acima deve ser roteado através do endereço do gateway/roteador 172.18.0.1 via dispositivo
wlp59s0
(que é minha placa wifi).
É assim que você dissecaria ip route list
resultados como os acima. Podemos ajudá-lo a dissecar sua ip route list
saída, se desejar, mas é assim que você leria a saída.
Suas rotas
Esta é a minha dissecação de suas rotas, tanto quando sua VPN está conectada quanto não.
Primeiro, quando você não estiver na VPN:
- O tráfego para 192.168.26.0/23 (192.168.26.0-192.168.27.255) sai diretamente pelo link da interface wlp0s20f3 (wi-fi). Isso inclui ir diretamente para 192.168.26.1 (a rota padrão)
- O tráfego para 149.11.92.90 sai via 182.168.26.1 diretamente pelo link da interface wifi.
- O tráfego para 172.17.0.0/16 (172.17.0.0-172.17.255.255) passa diretamente pelo link de rede docker0 com o endereço IP de origem 172.17.0.1.
- Algo estava errado com o seu link de rede, então 169.254.0.0/16 (169.254.0.0-169.254.255.255) sai pelo dispositivo wifi no link.
- Para quaisquer outras designações de sub-rede quando você não estiver na VPN, seu tráfego fluirá através de sua interface wifi através do IP do gateway 192.168.26.1 (seu roteador)
Agora, quando você usa a VPN, ela adiciona MUITAS rotas à sua tabela que não fazem sentido, mas podemos condensá-las em uma maneira fácil de avaliar as regras. Observe que as regras anteriores não conectadas por VPN ainda se aplicam:
Quando conectado à VPN, todo o tráfego não abordado pelas regras on-link anteriores (que incluem as regras de quando você não está na VPN) é roteado pelo dispositivo tun0 e pelo link VPN, via 192.168.31.1 pelo túnel . Portanto, todo o tráfego para a Internet (exceto os endereços on-link conforme especificado acima) passará primeiro pelo túnel VPN. Se o link do túnel VPN falhar e o tráfego não puder atravessar esse túnel, ele voltará a usar sua conexão Wi-Fi padrão (no entanto, isso só acontecerá quando o túnel VPN falhar e NÃO se reconectar, então a
tun0
interface desaparecerá)O tráfego entre o seu sistema e o endpoint VPN passa pelo link wifi padrão para chegar ao servidor VPN remoto. (este é o comportamento 'padrão' para se conectar ao servidor VPN, ele usará seu link wifi padrão).