IPIP Forward
1.0.0
一個簡單的IPIP轉送程序,支援UDP、TCP和ICMP封包。程式使用原始 AF_PACKET 套接字。當客戶端傳送封包,目的IP為程式監聽IP,且連接埠號碼在1024以上時,會新增外層IP頭建立一個IPIP封包,並傳送給目的IP,並進行NAT IPIP 端點隧道。當程式收到IPIP封包時,會將其傳送回客戶端。
注意- 截至目前,它僅在 UDP/TCP 端口高於 1024 時發送數據包。我將程式碼發佈到該程式中,以簡單地展示 IPIP 轉送是如何完成的。
注意- 這使用 AF_PACKET 套接字,並且核心會將資料包複製到使用者空間。我計劃在將來的某個時候考慮使用 DPDK,這應該會帶來更好的性能。
下面是該程式的用法:
./IPIPForward <Listen IP> <Listen Port> <Destination IP> <Nat IP> <Nat Port> <Interface> [<Thread Count>]
這是一個例子:
./IPIPForward 10.50.0.3 27015 10.50.0.4 10.2.0.5 27015 ens18 4
我使用 GCC 7 編譯了這個程式。
這是我用來建立程式的內容:
gcc-7 -g IPIPForward.c -g common.c -o IPIPForward -lpthread
我還添加了警告,以確保我沒有遺漏任何內容。然而,這是基本的建置命令。