我在Ubuntu 16.04.2 LTS上接收UDP數據包時遇到問題,使用2個不同的網絡接口: 1.以太網與10.xxx IP 2. wifi with 192.168.xx在輔助網絡接口問題上的Linux C/C++ UDP服務器問題
數據包到達第二個接口(wlan0),我可以在wireshark/tcpdump上看到它們,但沒有收到我的udp服務器發來的數據包。
我也試圖結合爲wlan0接口(setsockopt(localSock, SOL_SOCKET, SO_BINDTODEVICE, ...
,結合0.0.0.0,192.168.xx的,但沒有運氣。
另外,netcat -4 -u -l 0.0.0.0 <port>
(以及上192.168.XX)接收無。
我設法使它工作的唯一方法就是隻有我改變默認網關類似192.168.xy
路由表:
[email protected]:/tmp$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.x.x.x 0.0.0.0 UG 0 0 0 eth0
default OpenWrt.lan 0.0.0.0 UG 600 0 0 wlan0
10.x.0.0 * 255.255.0.0 U 100 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.x.0 * 255.255.255.0 U 600 0 0 wlan0
這似乎與Not able to receive UDP/IPv6 packets on secondary interface有關,但是這次是在ipv4上。
任何提示都非常感謝。
謝謝
你的路由表很困惑。只能有一個默認路由,而不是兩個。 –
這些是操作系統的默認設置,它們有不同的指標。我刪除了第二個默認網關'sudo route del default gw OpenWrt.lan',我有同樣的問題。 –