2015-08-17 113 views
-1

BSD/MacOS X具有用於更改系統路由表的命令「route」。它支持的選項之一是-proto1(以及proto2/proto3),它們用於將路由設置爲協議特定的。我想用它來設置特定於UDP的路由。如何使用路由來制定協議特定路由

我已經單獨使用-proto1 UDP與add函數嘗試。唉,這不起作用。我一直在試圖找到使用-proto1的例子,但是我一直無法找到route命令的這個選項的例子。

任何人能解釋這是怎麼使用的,或指向一個例子嗎?謝謝。

回答

0

route命令的-proto *標誌設置在適當的路由表的rt_flags字段匹配RTF_PROTO *標誌位(即它們具有任何其他值參數 - 它們每一個代表各個位)。

他們不作路線「協議的具體」的,而是可以在協議具體辦法由任何低層協議的路由使用可以使用的通用標誌位。

在代碼的BSD網絡代碼協議特定部分往往會定義更多有意義的名稱映射到相同的標誌位。例如,在ARP層中,RTF_ANNOUNCE標誌位與RTF_PROTO2位的rt_flags字段中的位相同。

在標誌在路由表由arp命令設置(如果字pub在命令行上手動創建表項時給出)的ARP的情況下,不是由route命令。但netstat -r命令可能會在生成的路由表條目上顯示爲2,表示RTF_PROTO2(與route -v show一樣)。

如果要強制所有數據包特定的傳輸協議,例如UDP或TCP,那麼您將不得不研究與路由表不同的機制 - 例如,某些防火牆可以根據IP報頭中給定的協議值將數據包轉發到指定的接口。