2014-12-30 27 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 .... –