gpt4 book ai didi

linux - OS X 相当于 SO_BINDTODEVICE

转载 作者:太空狗 更新时间:2023-10-29 12:17:48 25 4
gpt4 key购买 nike

Linux 允许执行以下代码将套接字绑定(bind)到某个特定的网络接口(interface)。因此,通过此套接字发送的数据将始终通过原始接口(interface)传输。

setsockopt(socket, SOL_SOCKET, SO_BINDTODEVICE, name, strlen(name))

据我了解,此功能用于 VPN 客户端。套接字连接到远程服务器并绑定(bind)到网络接口(interface)。这样,来自 VPN 客户端本身的流量就不会环回到 VPN 客户端。

是否有 OS X 相当于这样做?要么

  • 将套接字绑定(bind)到某个特定接口(interface)

  • 将 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 都使用它。

最佳答案

是的,使用 IP_BOUND_IF

int idx = if_nametoindex("en0");
setsockopt(sockfd, IPPROTO_IP, IP_BOUND_IF, &idx, sizeof(idx))

但是,您可以只使用带有接口(interface) IP 地址的 bind(),这通常更容易。

关于linux - OS X 相当于 SO_BINDTODEVICE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20616029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com