我的應用程序需要接收來自多個目的端口的UDP數據包(這是一位誠實的應用程序,而不是一個嗅探器)。因此,我選擇使用PF_PACKET套接字並在應用程序級別進行端口過濾。PF_PACKET插座和「端口不可達」的ICMP消息
下面是如何創建套接字:
INT g_rawSocket =插座(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL));
我正確地收到UDP報文。但是,運行該應用程序的內核正在向正在向我的應用程序發送數據包的遠程設備發送「Destination unreachable」類型和「Port unreachable」代碼的ICMP數據包。我想這是因爲我沒有將端口號綁定到套接字。但是,我想知道是否適合使用綁定與PF_PACKET套接字,特別是因爲我需要將多個端口綁定到它,我想這是不可能的。
任何意見嗎?
另外,您可以用iptables阻止ICMP回覆,例如'iptables -I OUTPUT -p icmp -icmp-type destination-unreachable -j DROP' – wick