Вот точные сведения о моей конфигурации:
Брандмауэр / DNS-сервер: 192.168.2.1 (локальная сеть), который маршрутизируется в Интернет. <- НЕ ПОД МОИМ КОНТРОЛЕМ Мой сервер FreeBSD: 192.168.2.23 (LAN)
«Внутри» моего сервера у меня тюрьма. (У меня будет больше, когда мои правила брандмауэра заработают ..) Я настраиваю это с помощью ezjail, и это работает. Я хочу назначить ему псевдоним на устройстве обратной связи lo0 моего сервера FreeBSD и присвоить этой тюрьме 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) Тюрьма должна иметь возможность отправлять TCP-трафик на любой IP-адрес ИНТЕРНЕТА (кроме 192. * или 127. *) на портах 5555 или 7070 или TBD 2) Тюрьма должна иметь возможность отправлять TCP-трафик на 192.168.2.1 в DNS. только порт (я ДОЛЖЕН использовать это как NS из-за того, что основной брандмауэр настроен вне моего контроля, я не могу это изменить)
И я понятия не имею, как настроить pf для этого. Любая помощь будет оценена. Точные строки pf.conf были бы ОЧЕНЬ признательны. Я не специалист по сетям, я прочитал много часто задаваемых вопросов и справочных страниц по этому поводу, и всегда заканчивается, что я либо следую синтаксису pf> 4.5, либо меня совершенно сбивает с толку то, во что они копаются. То, что я перечисляю здесь, - это буквально все, что нужно моему «брандмауэру», поэтому мне неприятно проводить так много исследований и получать только 1/3 из них ... это похоже на очень простой вариант использования
Дополнительная информация:
В 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
Мои ifconfigs дают мне:
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, но вы ищете что-то подобное?
сопоставить [interface] от 192.168.2.23 с любым nat-to [ip]
передать [интерфейс] с 192.168.2.23 на! 192.168.0.0/24 порт {7070 5555}
перейти на [интерфейс] с 192.168.2.23 на домен порта 168.2.23.1
Я всегда находил, что оба документация openBSD PF и это сайт быть под рукой ...
Редактировать:
сопоставить [interface] от 127.0.0.10 с любым nat-to [ip]
быстро перейти на [интерфейс] из домена 127.0.0.10 в домен 192.168.2.1
перейти на [интерфейс] с 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
Благодаря jhell на freenode #freebsd (и благодаря мне, наконец, я понял большую часть этого)