Как использовать маршрут, чтобы сделать определенный маршрут протокола
BSD/MacOS X имеет команду "route" для изменения таблицы системной маршрутизации. Одна из опций, которые он поддерживает, - -proto1 (а также proto2/proto3), предназначенные для настройки маршрута в зависимости от протокола. Я хочу использовать это, чтобы установить маршрут, который специфичен для UDP.
Я пытался использовать -proto1 udp в одиночку с функцией добавления. Увы, это не работает. Я пытался найти пример использования -proto1, но мне не удалось найти пример этой опции для команды route.
Может кто-нибудь объяснить, как это используется или указать на пример? Спасибо.
1 ответ
route
командования -proto
* флаги установлены в соответствии RTF_PROTO
* помечать биты в соответствующей записи таблицы маршрутизации rt_flags
поле (т.е. у них нет другого параметра значения - каждый из них представляет отдельные биты).
Они не делают маршрут "специфичным для протокола", а скорее являются общими битами флага, которые могут использоваться специфичным для протокола способом любым протоколом нижнего уровня, который использует маршрут.
В протоколе сетевого кода BSD определенные части кода часто определяют более значимые имена для отображения на одни и те же биты флага. Например, на уровне ARP RTF_ANNOUNCE
флаг тот же бит в rt_flags
поле как RTF_PROTO2
немного.
В случае ARP флаг устанавливается в таблице маршрутизации arp
команда (если слово pub
задается в командной строке при создании записи ARP вручную), а не route
команда. Тем не менее netstat -r
команда может показать флаг в результирующей записи таблицы маршрутизации как 2
с указанием RTF_PROTO2
(как бы route -v show
).
Если вы хотите форсировать все пакеты для определенного транспортного протокола, например, UDP или TCP, то вам придется исследовать другие механизмы, чем таблица маршрутизации - например, некоторые брандмауэры могут пересылать пакеты на указанные интерфейсы на основе значения протокола, указанного в IP. заголовок.