[英]Forwarding UDP packets in C using the socket API
我使用套接字API在C語言中編寫了一個內容過濾器,它將攔截DNS請求,並且僅在允許域的情況下才返回響應。 描述這一點的偽代碼是:
目前,我的程序正在UDP端口X上偵聽,但問題是我無法訪問IP標頭,因此不能在保持原始標頭的情況下簡單地將DNS請求轉發至原始服務器。
我嘗試使用socket(AF_INET, SOCK_RAW, IPPROTO_UDP)
但該端口未綁定在端口X上(可以理解),並且未收到任何流量。
在仍然可以訪問傳入數據包的IP標頭的同時,偵聽UDP端口X的最佳方法是什么?
我認為UDP套接字上的recvfrom應該為您提供正確的源地址。 您可能仍然需要原始套接字來轉發消息。
基於SOCK_RAW的套接字的功能因您所使用的平台而異。 通常,當您想訪問完整的IP數據報信息時,我建議使用Berkeley數據包過濾器來分接尋址到感興趣的UDP端口的數據鏈路層幀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.