Какова точка поиска второго маршрута после выхода 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

Ошибочно ли эти ошибки пересылки BIND безопасны для игнорирования?

alt-shift переключает ключевую карту, когда часть ярлыка

Xcompmgr, ставит дочерние окна в фоновом режиме

Как найти размер размонтированного раздела в Linux?

Изменение времени изменения файла для доступа к времени в массовом порядке

Как я могу передать только stderr в zsh?

Отправить сетевой трафик через виртуальную машину Windows на том же хосте, чтобы использовать корпоративный vpn?

Не удается запустить KDE в Fedora 22

Как извлечь текущую дату Date Log из файла catalina.out

Стратегии построения распределенной вычислительной системы с гибридными системами Mac и Linux

Прокрутите по 384 парам и создайте 384 новых конкатенированных файла

Имя пользователя не находится в файле sudoers. Этот инцидент будет сообщен

awk, если цикл не может печатать

Почему я могу получить IP-адрес другого интерфейса?

Почему gcc показывает `unknown` в Target: x86_64-unknown-linux-gnu в Arch Linux?

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