2016-11-19 20 views
3

我在局域网(最终是UDP)上将某些传出TCP流量转发到本地(透明)代理服务器,然后再将它们发送到Internet上。这些数据包似乎是正确的,我可以在Wireshark中看到SYN。Winsock/BSD套接字 - 接受具有与本地IP不同的目标IP的TCP连接

问题是,绑定到端口X的accept()不接受与目的端口X和目标IP的连接,这与目前的代理服务器自己的IP不同,这是我所期望的。

在Winsock或Linux套接字中有没有解决这个问题的方法?我如何实现accept()或类似?

回答

3

Linux套接字可以选择IP_TRANSPARENT。请参考Linux手册页IP:

IP_TRANSPARENT(因为Linux 2.6.24)

设置这个布尔选项启用上 此套接字透明代理。此套接字选项允许呼叫 应用程序绑定到非本地IP地址,并将 作为客户端和服务器,将外部地址作为本地端点 运行。 ...

据我所知,该选项不适用于Windows套接字。