Какова точка поиска второго маршрута после выхода OUTPUT?

В соответствии с диаграммой пакетных маршрутов и ее описанием :

Таблица 6-2. Источник локального хоста (наша собственная машина)

[…]

  1. Решение о маршрутизации, поскольку предыдущие изменения mangle и nat, возможно, изменили способ маршрутизации пакета.

[…]

есть второй поиск маршрута после цепи OUTPUT, потому что NAT и другие вещи могли бы изменить фактический интерфейс вывода. Но в моих тестах я обнаружил, что невозможно изменить интерфейс вывода после его выбора .

Например, у вас есть приложение, которое отправляет UDP-пакет из несвязанного сокета в какой-то пункт назначения: запрашивается основная таблица и выбирается источник, интерфейс и шлюз по умолчанию. Затем вы устанавливаете fwmark на нем и используете это в маршрутизации на основе политик, чтобы попытаться поместить пакет на другой интерфейс:

[root@localhost ~]# ip rule add fwmark 1 lookup 1 [root@localhost ~]# ip route add default dev lo table 1 

Пакет будет иметь эти поисковые запросы

 #first lookup, assuming main NIC is in LAN with address 192.168.1.2/24, gateway 192.168.1.1 [root@localhost ~]# ip route get 8.8.8.8 8.8.8.8 from 192.168.1.2 via 192.168.1.1 dev eth0 cache #second lookup, source address and oif chosen [root@localhost ~]# ip route get 8.8.8.8 oif eth0 from 192.168.1.2 mark 1 8.8.8.8 from 192.168.1.2 via 192.168.1.1 dev wlp3s0 mark 1 cache 

У вашего пакета будет уже выбранный интерфейс вывода. Обратите внимание: если вы не установите параметр oif вы получите правильный интерфейс:

 [root@localhost ~]# ip route get 8.8.8.8 from 192.168.1.2 mark 1 8.8.8.8 from 192.168.1.2 dev lo mark 1 cache 

Так в чем смысл? Кажется (и я протестировал), что вы можете эффективно менять шлюз, но вы даже не можете использовать blackhole или unreachable .

Interesting Posts

find: текущее имя файла оценивается как пустое в вложенной команде

GRUB: как изменить диск по умолчанию для будущих обновлений ОС?

Как удалить фиксированную часть некоторых строк из текстового файла?

Поверните удаленный сервер в конфигурации openvpn

Пакетное переименование файлов

Как я могу восстановить удаленные логические тома LVM?

Bash – как сделать явный приоритет оператора без создания подоболочки

Как найти время, прошедшее в миллисекундах, между одной строкой вывода на следующую?

Включить Bash-Completion для расширения исполняемых файлов Superuser до полного пути

Удаление символов из строки

Могу ли я запустить команду после того, как пользователь использует Ctrl-C, чтобы убить команду?

Какое правило удева срабатывало?

Что такое демонстрация для Linux? Сохранение секретных паролей SSH

Есть ли способ исключить вложенный подкаталог, указанный по пути к этому директору из рекурсивного поиска grep?

Вызов скрипта в ~ / .profile останавливает мой вход в систему

Linux и Unix - лучшая ОС в мире.