2014-12-30 41 views
0

我有一個應用程序,其中我有以下設置,如何轉發來自wlan0的數據包到eth0

--------- LAN ------- Wifi ----- -
| PC1 | < =====> | PC2 | < =====> | STA | --------- ------- -------

PC1連接到網絡和PC2被連接到利用一個套接字連接PC1。 STA使用wifi連接到PC2(使用hostapd將PC2配置爲AP),並且我想在STA上訪問Internet。但是有一個限制,PC2 & PC1之間的所有數據包交換應該只使用給定的套接字。

+0

我不知道libpcap有這個能力。你確定它確實嗎?我懷疑你必須手動設置PC2才能將來自PC1的所有流量轉發到STA。有可能我不明白你在問什麼。 –

+0

通過socket您是指IPC套接字? –

+0

@ o_weisman我的意思是,PC1連接到網絡,PC2通過交換機連接到PC1(可以說),並且還有一個套接字通信(IPC)。 STA通過wifi連接到PC2(使用hostapd將PC2配置爲AP)。我希望STA ping PC1,但是我希望所有從PC2傳遞到PC1的數據包都應該通過套接字 –

回答

0

除非您將此作爲編程練習,否則我建議您只需在PC2上設置SSH服務器,然後使用dynamic port forwarding通過PC2通過PC1隧道。通過這種方式,PC1和PC2將通過單個套接字(SSH的端口22或您定義的任何其他端口)連接,並且PC1將能夠通過隧道將流量發送到可從PC2訪問的任何目的地。

如果你真的熱衷於自己寫這個,不要使用libpcap。使用原始套接字。

+0

我使用DTLS作爲套接字(UDP套接字)......並且我希望每個數據包發送到PC1,無論是來自PC2還是STA(通過PC2)都應該僅使用現有的DTLS會話傳送給PC1 .... –