Проброс портов по IP адресам локальной сети во внешнюю сеть с использованием ipfw kernel NAT в ОС FreeBSD 10.0 | OS CONFIG

Проброс портов по IP адресам локальной сети во внешнюю сеть с использованием ipfw kernel NAT в ОС FreeBSD 10.0

Данная статья является продолжением предыдущей статьи. В ней описано, как в локальной сети сделать проброс портов по IP адресам во внешнюю сеть или в Интернет в ОС FreeBSD. Для этого интерфейс внешней сети должны иметь статический белый IP-адрес.

В локальной сети имеются сервера, которые должны использоваться не только внутри локальной сети, но и во внешней. Для проброса необходимо, чтобы эти машины имели статические IP-адреса и не входили в диапазон раздачи DHCP-сервера.



К примеру:

  • БД PostgreSQL (порт 5432) и Web-сервер Apache (порт 80 и 443) настроены на машине с IP-адресом 192.168.10.10;
  • БД MySQL (порт 3306) и SSH (порт 20) — на машине с IP-адресом 192.168.10.11;
  • файловый FTP-сервер (порт 21) — на машине с IP-адресом 192.168.10.12;
  • и защищённый Web-сервер (порт 8443) — на машине с IP-адресом 192.168.10.13.

Для проброса редактируем конфиг /etc/ipfw.conf. Находим строчку $cmd nat 1 config log if $exface reset same_ports deny_in, в ней через пробел ставим знак «\», а после неё добавляем необходимые правила, как описано в ниже:

$cmd nat 1 config log if $exface reset same_ports deny_in \

redirect_port tcp 192.168.10.10:5432 5432 \

redirect_port tcp 192.168.10.10:80 80 \

redirect_port tcp 192.168.10.10:443 443 \

redirect_port tcp 192.168.10.11:3306 3306 \

redirect_port tcp 192.168.10.11:20 20 \

redirect_port tcp 192.168.10.12:21 21 \

redirect_port tcp 192.168.10.13:8443 8443

То есть, приводим конфиг примерно к такому виду (как на скриншоте ниже):

ipfw_nat_redirect_port

1) Стоит обратить внимание, что в строчке $cmd nat 1 config log if $exface reset same_ports deny_in \ добавился знак «\» (в отличии от конфига, описанного в прошлой статье), и в правилах проброса портов он присутствует в каждой строчке, за исключением последнего правила;

2) Для того, чтобы сервер базы данных PostgreSQL был доступен из внешней сети или из Интернета, в файле pg_hba.conf должна быть исправлена строчка

host all all 192.168.0.0/24 md5

на

host all all all md5

расположение этого файла:

в ОС FreeBSD: /usr/local/pgsql/pg_hba.conf как описано в этой статье

в ОС CentOS: /var/lib/pgsql/data/pg_hba.conf как описано в этой статье

в ОС Ubuntu Server: /etc/postgresql/9.3/main/pg_hba.conf как описано в этой статье

Теперь перезапускаем файрволл:

service ipfw restart

Всё, готово!

P.S.: Другие команды для работы с ipfw:

service ipfw stop — отключить файрволл

service ipfw start — включить файрволл

ipfw list — проверка работы ipfw, команда выдаст перечень правил из скрипта /etc/ipfw.conf

ipfw nat show — проверка работы NAT.


Если Вам помогла статья, вы можете отблагодарить автора:
перечислить на WMR кошелёк (WebMoney): R301575071888
перечислить на Яндекс.Кошелёк: 410011003938168
или на PayPal:

Вы можете оставить комментарий, или ссылку на Ваш сайт.
  • AMIN

    privet, a razreshenie ipfw kak? ne nujen?

    • OSC_Evgeny

      не нужен

  • Yurii Lukashevich

    Подскажите как пробросить VPN в часности GRE Протокол?

    • OSC_Evgeny

      судя по тому, что пишут в Википедии, скорее всего не получится:

      «Так как GRE является протоколом сетевого уровня и не использует порты (как протоколы TCP или UDP), а одним из необходимых условий работы механизма PATявляется наличие «открытого» порта, то работа протокола GRE через межсетевой экран может быть затруднена[3].»

  • Антоха

    Не работает со слэшами. Два дня мучался. На борту FreeBSD 10.2, без слешей в одну строку все редиректы — заработало!:)

    • OSC_Evgeny

      странно… должно работать

  • А если надо пробросить несколько портов подряд, например с 10000 по 20000. то в этом случае запись типа:
    redirect_port tcp 192.168.10.10:10000-20000 10000-20000

    пройдет?



Яндекс.Метрика
Проверка ТИЦ Яндекс цитирования