Назад | Перейти на главную страницу

Правила и конфигурация PF для разрешения локального IP-псевдонима NAT на FreeBSD?

Вот точные сведения о моей конфигурации:

Брандмауэр / 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 (и благодаря мне, наконец, я понял большую часть этого)