As táboas de encamiñamento lense como rotas cada vez que a columna da porta de enlace queda baleira, cando a liña adoita estar completa por si soa. O campo via aparece só cando o núcleo entrega o paquete a un enderezo de seguinte salto; unha ruta ligada a unha interface alcanza os seus destinos mediante resolución de capa de enlace ou mediante un par punto a punto. Ler as columnas de esquerda a dereita diche en que caso estás, e esa lectura debería ocorrer antes de que alguén edite unha ruta predeterminada. A maioría dos tickets sobre unha porta de enlace ausente rematan nesta distinción.

Le unha liña de ruta columna por columna

Cada entrada comeza co destino e a lonxitude do seu prefixo, e despois engade modificadores nun vocabulario fixo: via, dev, proto, scope, src e metric. Unha liña como 198.51.100.0/24 dev tun0 proto kernel scope link src 198.51.100.2 é densa pero está completamente especificada. Non lle falta nada e non se implica ningún enderezo de router.

A ausencia de via é a parte interesante. Sen un seguinte salto, o núcleo resolve o destino directamente na interface indicada, o que para un túnel significa entregar o marco ao dispositivo de túnel e deixar que a encapsulación se encargue a partir de aí. proto kernel rexistra que a entrada se instalou automaticamente cando se asignou un enderezo, non que a escribise un administrador. scope link di que o destino é alcanzable nesa ligazón sen pasar por un router, e src nomea o enderezo que o núcleo preferirá como orixe para o tráfico que coincida.

Agora le unha ruta predeterminada do mesmo xeito: default via 192.0.2.254 dev eth0 proto static metric 100. Aquí via está presente porque o paquete si necesita un seguinte salto, e ese salto debe ser alcanzable el mesmo en eth0. As dúas liñas non son variantes unha da outra; responden a preguntas distintas sobre onde vai o tráfico.

Dúas formas de ruta que se confunden entre si

Unha ruta de subrede de túnel e unha ruta predeterminada parécense nunha captura de pantalla e compórtanse de xeito totalmente distinto. Usa a táboa de abaixo como axuda de lectura para os campos e despois confirma os números reais na máquina que estás depurando en lugar de fiarte dunha mostra dunha guía.

Piece of the lineWhat it settlesWhat it says nothing about
The destination and maskWhich packets are eligible to matchWhere those packets leave the host
via plus its addressWhich next hop receives them, and therefore that a router is involvedWhether that router is reachable or sane
devWhich interface carries the encapsulated or raw packetWhether the interface is up or has a carrier
proto and scopeWho installed the entry and how far the destination is considered to beWhether a firewall later drops the traffic

O que a táboa non pode dicirche é a intención. Unha ruta directa a un rango privado a través dun túnel é un deseño deliberado de túnel dividido; a mesma forma nun host que debería enviar todo pola VPN é un síntoma. A intención vive na configuración que produciu a entrada, así que mira a ferramenta que a instalou antes de concluír que o núcleo se equivocou.

Do mesmo xeito, que falte unha porta de enlace non é permiso para inventar unha. Se unha ruta necesita de verdade un seguinte salto, ese salto ten que ser alcanzable na interface que o transporta, e para un túnel punto a punto o enderezo do par non é o mesmo obxecto que o enderezo local. Tratar o enderezo local do túnel como un router Ethernet é unha forma habitual de producir unha ruta que parece correcta e non reenvía nada.

Pregúntalle ao núcleo que liña vai usar realmente

Ler a táboa non é o mesmo que realizar a consulta, porque o núcleo consulta regras de política, varias táboas e entradas na caché antes de responder. O verbo que realiza a consulta real é ip route get, e imprime a ruta que tomaría un paquete con esas propiedades.

ip route get 203.0.113.37 from 198.51.100.2 iif tun0

Substitúe o destino que de verdade che importa e despois engade from ou iif cando o tráfico se selecciona por orixe ou se reenvía, porque unha consulta local ordinaria pode escoller un camiño distinto do que escolle un cliente reenviado. A resposta nomea a interface, o enderezo de orixe escollido e calquera seguinte salto, que é a mesma información coa que se encamiñaría un paquete nese momento.

Se a resposta te sorprende, imprime as regras antes de cambiar nada: ip -4 rule show enuméraas por orde de prioridade, e un cliente VPN que instale a súa propia táboa ou unha regra para paquetes marcados non aparecerá en absoluto na táboa principal. Enumerar todas as táboas pecha ese oco.

ip -4 route show table all | grep -E 'tun|default'

Comproba a capa subxacente antes de substituír a ruta predeterminada

Os paquetes propios do túnel teñen que chegar ao extremo remoto, e fanllo pola interface física usando a ruta que existía antes de que se levantase a VPN. Substituír toda a ruta predeterminada sen fixar ese extremo envía os paquetes encapsulados ao túnel que se supón que deben construír, e a conexión derrúbase. Confirma primeiro o camiño ao extremo cunha consulta só do seu enderezo.

Mantén tres cousas separadas cando fagas o cambio: a ruta ao extremo que debe quedar na interface física, os rangos privados que deberían entrar no túnel e a ruta predeterminada que decide todo o demais. Sepáraas nesa orde, aplica unha á vez e volve executar a consulta despois de cada paso. Un ping fallido despois demostra moi pouco por si só, xa que os permisos, o encamiñamento de respostas, o DNS e o propio servizo quedan todos augas abaixo dunha ruta correcta.

Anota os catro valores que che deu a liña antes da edición: destino, seguinte salto ou a súa ausencia, dispositivo e orixe escollida. Se un cambio posterior move calquera deles, sabes que decisión se alterou en realidade, e podes restaurar unha entrada en lugar de adiviñar toda a táboa.

Artigos relacionados