Оскільки ці маршрути є в різних підмережах, тут більше задіяно, ніж просто показник. Якщо, наприклад, похідний трафік знаходиться в підмережі 192.168.1.1, і у таблиці маршрутизації є збіг, який не за замовчуванням, то цей маршрут буде відповідати найдовшему збігу префіксів до того, як показник коли-небудь розглянеться.
Якщо припустити, що маршрут за замовчуванням не відповідає, то ядро , яке не має метрики, має трактуватися ядром як показник 0, а отже, маршрут з найвищим пріоритетом. Хоча це спрощене уявлення, оскільки деякі демони маршрутизації згодом переведуть цю метрику за замовчуванням в інше значення, як 1024. Я очікую, що саме це відбувається з вами та вашим безіменним дистрибутивом.
Якщо ip route
показник зовсім не відображається, ви можете підтвердити, що він дійсно дорівнює 0, скориставшись старшою route -n
командою з пакету net-tools або cat /proc/net/route
. Однак цей вихід не обов'язково відповідає тому, що демон маршрутизації буде використовуватися внутрішньо, коли він зустрічає значення метрики 0.
Крім того, питання створення маршруту також має значення. ip route
використовує API netlink, тоді як route
використовує ioctl. Код створення метрик за замовчуванням між двома підходами призводить до різних значень метрики. Наприклад: створення маршруту за замовчуванням IPv6 через ip route
результат призведе до значення метрики 1024 на RHEL 7, тоді як створення цього ж маршруту через route
призведе до показника 1.
Від RedHat :
- якщо нічого не передано команді route в якості метрики маршруту, значення 1 використовується самою командою.
- Якщо команда ip нічого не передається як метрика маршруту, атрибут взагалі не створюється, і ядро розуміє його як 0, що пізніше переводиться 1024 за замовчуванням.