![在 FreeBSD 上使用 natd 标志进行重定向](https://linux22.com/image/623461/%E5%9C%A8%20FreeBSD%20%E4%B8%8A%E4%BD%BF%E7%94%A8%20natd%20%E6%A0%87%E5%BF%97%E8%BF%9B%E8%A1%8C%E9%87%8D%E5%AE%9A%E5%90%91.png)
我正在尝试设置一个基本的 NAT 服务器。我希望所有来自外部世界到 NAT 服务器的流量都被重定向到另一台机器,我在那里运行一个 lipcap 服务来解析这些流量。
我尝试在 rc.conf 中的 natd_flags 部分中使用 -redirect_port 和 -redirect_address,但没有任何作用...有什么想法吗?
答案1
用户空间natd
需要ipfw
启用。IPFW 捕获数据包并将其重定向到natd
转换地址。但现在您可以使用嵌入到 ipfw 中的内核 nat。
启用 IPFW 引擎
# /etc/rc.conf
. . . . .
gateway_enable="YES"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/etc/rc.ipfw"
. . . . .
让我们配置内核重定向:
# /etc/rc.ipfw
. . . . .
oip="1.2.3.4" # Outer IP looking to the internet
tip="10.0.0.100 # Target host
ipfw nat 1 config redirect_addr ${tip} ${oip}
. . . . .
就这样。
答案2
PF 防火墙内置有 NAT 和重定向。将其添加到 /etc/rc.conf:
gateway_enable="YES"
pf_enable="YES"
并配置防火墙。在 /etc/pf.conf 中添加以下几行:
ext_if=em0
ext_addr = N.N.N.N (your external IP)
int_if=em1
int_net=10.0.0.0/8
int_addr=10.0.0.1
libcap_host=10.0.0.2
nat on $ext_if from $int_net to any -> $ext_addr
rdr on $ext_if from any to $ext_addr -> $libcap_host
NAT 规则将按照您的预期执行,通过网关的外部 IP 将您的互联网网络上生成的所有流量发送到世界各地。rdr 规则会将所有传入连接路由到您的目标主机。