在 NetBSD 上绑定非本地地址

在 NetBSD 上绑定非本地地址

这不是一个编程问题,而是一个关于NetBSD的问题。

Linux、FreeBSD 和 OpenBSD 具有相互排斥但相似的接口,允许将连接的本地端绑定到任何本地接口上都不存在的地址。例如建立连接8.8.8.8。我一直在 NetBSD 中探索,但没有成功,看看是否有相同效果的东西。有没有?

这是(我的)示例代码,供参考:

https://github.com/UlricE/pen/blob/master/server.c

函数 spoof_bind,第 ~250 行。

大大简化的例子来说明这个概念:

Linux:

setsockopt(upfd, SOL_IP, IP_TRANSPARENT, &one, sizeof one);
bind(upfd, (struct sockaddr *)&addr, sizeof addr);

自由BSD:

setsockopt(upfd, IPPROTO_IP, IP_BINDANY, &one, sizeof one);
bind(upfd, (struct sockaddr *)&addr, sizeof addr);

打开BSD:

setsockopt(upfd, SOL_SOCKET, SO_BINDANY, &one, sizeof one);
bind(upfd, (struct sockaddr *)&addr, sizeof addr);

再次强调,这不是一个编程问题,而是一个 NetBSD 上是否存在这样的接口的问题。

相关内容