Как использовать маршрут, чтобы сделать определенный маршрут протокола

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. заголовок.

Другие вопросы по тегам