是否可以这样设置 OpenBSD,使其内部拥有 IP1(在主机中,在 hostname.en0 中,套接字绑定到 IP1),但当数据包进入以太网时将其转换为 IP2。此外,应该接收 IP2 的数据包并将其传送到绑定到 IP1 的服务。
我认为,这在 Linux 中是可能的,使用iptables
防火墙(类似于 DNAT/SNAT),但现在我想在 OpenBSD 上执行此操作。
我可以以任何方式设置真实 LAN 的路由。
答案1
这应该或多或少可以通过在接口上设置别名和使用少量 PF/NAT 魔法来实现。你有没有仔细研究过PF 指南?
答案2
这可以很容易地完成pf(4)
及其nat
,binat
和rdr
规则。
听起来你特别想研究一下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 作为传出流量,反之亦然。
您想要的是哪种协议?