强制 OpenBSD 在内部使用一个 IP,但从其他 IP 从网络发送和接收?

强制 OpenBSD 在内部使用一个 IP,但从其他 IP 从网络发送和接收?

是否可以这样设置 OpenBSD,使其内部拥有 IP1(在主机中,在 hostname.en0 中,套接字绑定到 IP1),但当数据包进入以太网时将其转换为 IP2。此外,应该接收 IP2 的数据包并将其传送到绑定到 IP1 的服务。

我认为,这在 Linux 中是可能的,使用iptables防火墙(类似于 DNAT/SNAT),但现在我想在 OpenBSD 上执行此操作。

我可以以任何方式设置真实 LAN 的路由。

答案1

这应该或多或少可以通过在接口上设置别名和使用少量 PF/NAT 魔法来实现。你有没有仔细研究过PF 指南

答案2

这可以很容易地完成pf(4)及其natbinatrdr规则。

听起来你特别想研究一下binat规则;所有这些规则的编写方式在几个版本之前已经发生了变化(从nat ... -> ...,到pass ... nat-to ...),但对于 OpenBSD 5.2,它应该如下所示(示例直接取自http://www.openbsd.org/faq/pf/nat.html#binat):

web_serv_int = "192.168.1.100"
web_serv_ext = "24.5.0.6"

pass on tl0 from $web_serv_int to any binat-to $web_serv_ext`

在这里查看有关 OpenBSD 中的 NAT 和流量重定向的更多信息:

http://www.openbsd.org/faq/pf/nat.html
http://www.openbsd.org/faq/pf/rdr.html

答案3

您可以修改内核,用 IP2 替代 IP1 作为传出流量,反之亦然。

您想要的是哪种协议?

相关内容