BSD / MacOS X有一个命令“route”,用于更改系统路由表。它支持的选项之一是-proto1(以及proto2 / proto3),它们用于将路由设置为特定于协议。我想用它来设置特定于UDP的路由。
我尝试过单独使用-proto1 udp和add函数。唉,这不起作用。我一直试图找到一个使用-proto1的例子,但我一直无法找到route命令的这个选项的例子。
任何人都可以解释这是如何使用或指向一个例子?谢谢。
答案 0 :(得分:0)
route
命令的-proto
*标志设置与相应路由表条目RTF_PROTO
字段中的rt_flags
*标志位匹配(即它们没有其他值参数 - 它们各自代表各个位。)
它们不会使路由"协议特定",而是通用标志位,可以通过路由使用的任何低层协议以协议特定的方式使用。
在BSD网络代码协议中,代码的特定部分通常会定义更有意义的名称以映射到相同的标志位。例如,在ARP层中,RTF_ANNOUNCE
标志与rt_flags
位中的RTF_PROTO2
字段相同。
在ARP的情况下,通过arp
命令在路由表中设置标志(如果在手动创建ARP条目时在命令行上给出了单词pub
),而不是route
命令。但是,netstat -r
命令可能会将生成的路由表条目上的标志显示为2
,表示RTF_PROTO2
(与route -v show
一样)。
如果要强制特定传输协议的所有数据包,例如无论是UDP还是TCP,您都必须研究与路由表不同的机制 - 例如,某些防火墙可以根据IP头中给出的协议值将数据包转发到指定的接口。