PF规则和configuration允许本地IP别名在FreeBSD上进行NAT转换?

这里是我的configuration的确切细节:

防火墙/ DNS服务器:192.168.2.1(本地局域网),它将路由到互联网。 < – 不受我的控制我的FreeBSD服务器:192.168.2.23(局域网)

我的服务器“内部”,我有一个监狱。 (我会有更多的,一旦我的防火墙规则工作..)我设置了这个使用ezjail,这很多工作。 我想在我的FreeBSD服务器的loopback设备lo0上分配一个别名,并给这个jail ip 127.0.0.10

到目前为止,在我的/etc/pf.conf中,以下工作正在进行:

# allow the outside world or internet to hit my FreeBSD server on 6500, and send this traffic to 6500 # verified through nc -l 6500 inside the jail, and telnet in from outside world rdr pass on em0 inet proto tcp from any to 192.168.2.23 port = 6500 -> 127.0.0.10 port 6500 

不过,我还有2个需求:

1)监狱必须能够发送TCPstream量到端口5555或7070或TBD上的任何INTERNET IP(不是192. *或127. *)2)监狱必须能够发送TCPstream量到DNS上的192.168.2.1只有端口(我必须使用这个作为一个NS,因为我的控制主要防火墙设置的方式,我不能改变)

而我不知道如何设置PF做到这一点。 任何帮助,将不胜感激。 确切的pf.conf行将非常感激。 我不是一个networking人,我已经阅读了许多常见问题解答和手册页,而且总是结束,我要么遵循4.5以上的语法,要么我完全被他们正在挖掘的东西所困惑。 我在这里列出的实际上是我的“防火墙”需要做的一切,所以做这么多的研究并且只得到它的三分之一是令人沮丧的。这看起来像是一个非常基本的用例

支持信息:

在rc.conf中我已经设置了:

 defaultrouter="192.168.2.1" ifconfig_em0="inet 192.168.2.23 netmask 255.255.255.0" ifconfig_lo0_alias0="inet 127.0.0.10 netmask 255.255.255.0" pf_enable="YES" gateway_enable="YES" # Enable as LAN gateway 

我的ifconf给我:

 server# ifconfig em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM> ether 00:0c:29:fc:6f:48 inet 192.168.2.23 netmask 0xffffff00 broadcast 192.168.2.255 media: Ethernet autoselect (1000baseT <full-duplex>) status: active plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=3<RXCSUM,TXCSUM> inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 inet 127.0.0.10 netmask 0xffffff00 nd6 options=3<PERFORMNUD,ACCEPT_RTADV> jail# ifconfig em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM> ether 00:0c:29:fc:6f:48 media: Ethernet autoselect (1000baseT <full-duplex>) status: active plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> metric 0 mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384 options=3<RXCSUM,TXCSUM> inet 127.0.0.10 netmask 0xffffff00 

我和PF有点生疏,但是你在找那种东西吗?

匹配在[接口]从192.168.2.23到任何nat-to [ip]

将[interface]从192.168.2.23传递到!192.168.0.0/24端口{7070 5555}

将[interface]从192.168.2.23传递到168.2.23.1 port域

我一直发现,这两个OpenBSD的PF文件和这个网站是方便的…

编辑:

在[interface]上从127.0.0.10匹配到任何nat-to [ip]

在[interface]上从127.0.0.10到192.168.2.1域快速传递

将[interface]从127.0.0.10传递给{!192.168.2.0/24}

我相信这就是你正在寻找的基于你留下的评论。

 allowed_bounce_ports="{ 21, 23 }" nat on em0 from 127.0.0.10 to 192.168.2.1 port = domain -> em0 nat on em0 from 127.0.0.10 to !192.168.0.0/24 port $allowed_bounce_ports -> em0 rdr pass on em0 inet proto tcp from any to 192.168.2.23 port = 6500 -> 127.0.0.10 port 6500 

感谢freenode #freebsd上的jhell(感谢我,终于把它弄出来了)