почему изменение метрики не влияет на выбор маршрута

У меня есть следующий вывод для моего маршрута по умолчанию:

Kernel IP routing table Destination     Gateway         Genmask        Flags Metric Ref    Use Iface
0.0.0.0         192.168.167.1   0.0.0.0         UG    100    0        0 enp1s0
192.168.167.0   0.0.0.0         255.255.255.0   U     100    0        0 enp1s0

А здесь выбранный маршрут к 8.8.8.8. Пока здесь ничего экстраординарного.

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  192.168.167.1 (192.168.167.1)  0.326 ms  0.465 ms  0.527 ms
 2  192.168.1.254 (192.168.1.254)  1.409 ms  1.422 ms  1.429 ms

Когда я активирую VPN, маршрут становится:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.13       128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.167.1   0.0.0.0         UG    100    0        0 enp1s0
10.8.0.1        10.8.0.13       255.255.255.255 UGH   0      0        0 tun0
10.8.0.13       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.8.0.13       128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 tun0
192.168.167.0   0.0.0.0         255.255.255.0   U     100    0        0 enp1s0
213.246.56.21   192.168.167.1   255.255.255.255 UGH   0      0        0 enp1s0

Какое бы значение я ни установил для метрики tun0:

sudo ifmetric tun0 3000

route -n output:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.13       128.0.0.0       UG    3000   0        0 tun0
0.0.0.0         192.168.167.1   0.0.0.0         UG    100    0        0 enp1s0
10.8.0.1        10.8.0.13       255.255.255.255 UGH   3000   0        0 tun0
10.8.0.13       0.0.0.0         255.255.255.255 UH    3000   0        0 tun0
128.0.0.0       10.8.0.13       128.0.0.0       UG    3000   0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     3000   0        0 tun0
192.168.167.0   0.0.0.0         255.255.255.0   U     100    0        0 enp1s0
213.246.56.21   192.168.167.1   255.255.255.255 UGH   0      0        0 enp1s0

Выбранный маршрут всегда проходит через интерфейс tun0 :

traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
 1  10.8.0.1 (10.8.0.1)  28.510 ms  33.924 ms  33.941 ms
 2  ik056002.ikoula.com (213.246.56.2)  33.960 ms
...

Почему ??

Спасибо!

1
задан 11 July 2019 в 20:00
1 ответ

Маршруты обрабатываются от наиболее специфичных к наименее специфичным, если есть два маршрута с одинаковым уровнем специфичности, только тогда проверяется метрика.

Вы используете маршрут -n Формат , который отстой, IMO, он выглядел бы лучше и был бы более очевидным, если бы вы выполнили ip route show , вывод которого, вероятно, для вас выглядит следующим образом.

default via 192.168.167.1 dev enp1s0 metric 100
0.0.0.0/1 via 10.8.0.13 dev tun0 metric 3000
128.0.0.0/1 via 10.8.0.13 dev tun0 metric 3000
...

специфичность, поэтому метрика не имеет значения. / 1 более конкретен (на 1 бит), чем маршрут / 0 .

Когда вы смотрите на выход route -n , вы следует помнить, что вы должны учитывать как 1-й, так и 3-й столбцы. Маршрут - это сетевой адрес и маска.

1
ответ дан 3 December 2019 в 23:03

Теги

Похожие вопросы