Linux允许执行以下代码将套接字绑定到特定的网络接口。因此,通过该套接字发送的数据将始终通过原始接口进行通道传输。
setsockopt(socket, SOL_SOCKET, SO_BINDTODEVICE, name, strlen(name))
据我所知,这个功能在VPN客户端中使用。套接字连接到远程服务器并绑定到网络接口。这样,VPN客户端本身的流量就不会被反弹回VPN客户端。是否有OS X相当于这样做的方法?要么将套接字绑定到某个特定接口,要么标记VPN客户端中的套接字不要被反弹回来。顺便说一下,我发现了类似的问题,但我不理解答案:Writing an OS X kernel extension to implement Linux's SO_BINDTODEVICE socket option。更新1:我发现一些VPN客户端使用TUN/TAP设备来防止反弹问题。http://backreference.org/2010/03/26/tuntap-interface-tutorial/。然而,我不确定所有OS X VPN都使用它。