Como obter a interface de rede através da qual o tráfego é roteado

Como obter a interface de rede através da qual o tráfego é roteado

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 listsaí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-locale InternalDHCPpara meus contêineres LXD), minha interface sem fio wlp59s0e 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-locallink 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 InternalDHCPlink 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 docker0link de rede com a origem de 10.74.0.1. O mesmo link de rede também aceita tráfego para 169.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 wlp59s0link 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 listresultados como os acima. Podemos ajudá-lo a dissecar sua ip route listsaí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 tun0interface 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).

informação relacionada