Se você possui (no Linux) estas duas rotas:
default via 192.168.1.1 dev enp58s0f1
default via 192.168.16.1 dev wlp59s0 proto static metric 600
Eu esperaria que o primeiro seja usado, mas esse não é o caso: o segundo é usado.
Se eu mudar isso para isso:
default via 192.168.1.1 dev enp58s0f1 proto static metric 100
default via 192.168.16.1 dev wlp59s0 proto static metric 600
Então funciona como esperado. Parece que "nenhuma métrica" é uma métrica pior (mais alta) que qualquer número, em vez da métrica 0.
O que isso está acontecendo? É específico para Linux ou um padrão de rede?
Desde já, obrigado.
fonte
Como essas rotas estão em sub-redes diferentes, há mais envolvimento aqui do que apenas a métrica. Se o tráfego de origem estiver na sub-rede 192.168.1.1, por exemplo, e houver uma rota não padrão correspondente em sua tabela de roteamento, essa rota corresponderá pela correspondência de prefixo mais longa antes que a métrica seja considerada.
Supondo que uma rota não padrão não corresponda, a ausência de métrica deve ser interpretada pelo kernel como tendo uma métrica 0 e, portanto, a rota de maior prioridade. Embora essa seja uma visão simplista, porque alguns daemons de roteamento posteriormente converterão essa métrica padrão em outro valor como 1024. Espero que seja isso o que está acontecendo com você e sua distribuição não identificada.
Se
ip route
não mostrar nenhuma métrica, você poderá confirmar que é realmente 0 usando oroute -n
comando mais antigo do pacote net-tools oucat /proc/net/route
. No entanto, essa saída não corresponde necessariamente ao que o daemon de roteamento usará internamente quando encontrar um valor métrico 0.Além disso, como você cria a rota também importa.
ip route
usa a API netlink, enquantoroute
usa ioctl. O código de como as métricas padrão são criadas entre as duas abordagens resulta em diferentes valores de métricas. Por exemplo: criar uma rota padrão IPv6 viaip route
resultará em um valor de métrica de 1024 no RHEL 7, enquanto criar a mesma rota viaroute
resultará em uma métrica de 1.De RedHat :
fonte