NAT 可设置映射规则,用于将源 IP 地址和目标 IP 地址转换为其他 Internet 或内联网地址。这些规则可修改传入或传出 IP 包的源地址和目标地址并继续发送包。另外,还可以使用 NAT 将流量从一个端口重定向到另一个端口。在对包进行任何修改或重定向的过程中,NAT 将维护包的完整性。
可以在命令行上使用 ipnat 命令或在 NAT 配置文件中创建 NAT 规则。必须创建 NAT 配置文件并将其路径名设置为该服务的 config/ipnat_config_file 属性的值。缺省值为 /etc/ipf/ipnat.conf。有关更多信息,请参见 ipnat(1M) 命令。
NAT 规则可以应用到 IPv4 和 IPv6 地址。然而,必须为每种地址类型创建单独的规则。在包含 IPv6 地址的 NAT 规则中,不能同时使用 mapproxy 和 rdrproxy NAT 命令。
使用以下语法创建 NAT 规则:
command interface-name parameters
每个规则都以以下命令之一开头:
在无法控制的循环过程中将一个 IP 地址或网络映射到另一个 IP 地址或网络。
将包从一个 IP 地址和端口对重定向到另一个 IP 地址和端口对。
在外部 IP 地址和内部 IP 地址之间建立双向 NAT。
建立基于静态 IP 地址的转换。此命令基于将地址强制转换为目标范围的算法。
此命令后面的下一个单词是接口名称,如 bge0。
接下来,可以从确定 NAT 配置的各种参数中进行选择。其中一些参数包括:
指定网络掩码。
指定 ipmask 要转换成的地址。
指定 tcp、udp 或 tcp/udp 协议以及端口号的范围。
以下示例说明如何构造 NAT 规则。要重新编写从源地址为 192.168.1.0/24 的 net2 设备上传出的包并在外部将该设备的源地址显示为 10.1.0.0/16,需要在 NAT 规则集合中包括以下规则:
map net2 192.168.1.0/24 -> 10.1.0.0/16
以下规则适用于 IPv6 地址:
map net3 fec0:1::/64 -> 2000:1:2::/72 portmap tcp/udp 1025:65000 map-block net3 fe80:0:0:209::/64 -> 209:1:2::/72 ports auto rdr net0 209::ffff:fe13:e43e port 80 -> fec0:1::e,fec0:1::f port 80 tcp round-robin
有关完整的语法和句法,请参见 ipnat(4) 手册页。