[英]Does routing affect a socket with a bound source address?
假設我有兩個網絡接口:
eth0
,地址10.0.0.1
eth1
,地址為192.168.0.1
使用route
或ip route add
我已將其設置為route:
eth0
1.2.3.4
僅限eth1
所以1.2.3.4
數據包應該路由到eth1
,其他一切都路由到eth0
。
然后我創建一個UDP套接字並使用bind()
將其本地地址設置為192.168.0.1
。 然后我發送一個數據包到1.2.3.4
。
是否會通過路由表或eth0
通過eth1
發送,因為它綁定到該IP地址? 我試過了,似乎是在eth1
上發送的。
有沒有辦法可以強制套接字使用eth0
,它有一個到目的地的有效路由,但不是最具體的規則? 我知道SO_BINDTODEVICE,但更喜歡避免在C代碼中使用接口名稱。
對於套接字,如果您希望內核及其路由表使用任何可用端口為您選擇最佳接口,則在發送數據報套接字之前不必調用bind()
。
如果綁定套接字,它將綁定到具有該特定IP地址的網絡設備。 但是,如果數據包無法從該網絡設備到達目標地址,這是否有意義?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.