Проброс портов разными способами: rinetd, redir, natd, kernel nat, pf, ssh, ipnat

В статье будет рассказаны разные методы проброса порта во внутреннюю сеть.

Пример: пробрасывает порт 80 на сервере 2.2.2.2 на порт 8080 на сервере 10.10.10.10 (кроме примера для openssh)

1) redir (находится в портах)

Port:   redir-2.2.1_2
Path:   /usr/ports/net/redir
Info:   A tcp connection redirection utility
Maint:  araujo@FreeBSD.org
B-deps:
R-deps:
WWW:    http://sammy.net/~sammy/hacks/

Установка достаточно простая.
Достаточно лёгкая утилита с большими возможностями, но ПОДМЕНЯЕТ SRC-ADDRESS. Запускается как приложение и висит не как демон, а как обычный процесс (обязательно в фоне):

#redir --lport=80 --laddr=2.2.2.2 --cport=8080 --caddr=10.10.10.10 &

Остальные параметры можно посмотреть в справочном руководстве.
К недостаткам можно отнести тот факт, что при больших нагрузках часто падает, поэтому нужно время от времени проверять, запущен ли.

2) rinetd (находится в портах)

Port:   rinetd-0.62_3
Path:   /usr/ports/net/rinetd
Info:   A simple TCP port redirector
Maint:  garga@FreeBSD.org
B-deps:
R-deps:
WWW:

Так же небольшая утилитка. Чем-то похожа на предыдущую, но работает уже как демон. Для запуска используется конфигурационный файл, в котором собственно описываются пробросы. Имя файла /usr/local/etc/rinetd.conf. И так, пишем пробросы:

2.2.2.2 80 10.10.10.10 8080

К недостаткам можно отнести тот факт, что при пробросе порта будет светиться IP-адрес сервера, на котором осуществляется проброс, а не того клиента, который подключается к проброшенному порту. То есть, тоже ПОДМЕНЯЕТ SRC-ADDRESS При больших нагрузках может подвисать и немного завешивать систему.

3) bounce (находится в портах)

Port: bounce-1.0_8
Path: /usr/ports/net/bounce
Info: Bounce TCP connections to another machine/port
Maint: matt@efs.org
B-deps:
R-deps:
WWW: http://www.iagora.com/~espel/hacks.html

Аналогична предыдущим. Недостатки — ПОДМЕНЯЕТ SRC-ADDRESS

4) ssh

OpenSSH поддерживает возможность создания туннеля для пропуска соединения по другому протоколу через защищенную сессию.
Следующая команда указывает ssh(1) создать туннель для telnet:

% ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com

Команда ssh используется со следующими параметрами:

-2
Указывает ssh использовать версию 2 протокола (не используйте этот параметр, если работаете со старыми SSH серверами).

-N
Означает использование в не-командном режиме, только для туннелирования. Если этот параметр опущен, ssh запустит обычную сессию.

-f
Указывает ssh запускаться в фоновом режиме.

-L
Означает локальный туннель в стиле localport:remotehost:remoteport.

user@foo.example.com — Удаленный сервер SSH.

Пример:

$ ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
user@mailserver.example.com's password: *****

$ telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTP

5) natd (для тех, кто использует natd)

В /etc/natd.conf добавляем такую строчку

redirect_port tcp 10.10.10.10:8080 80

После этого делаем

#/etc/rc.d/natd restart

6) kernel nat (для тех, кто использует kernel nat)

В правило nat’a добавляем

ipfw nat 123 config if $external_iface redirect_port tcp 10.10.10.10:8080 80

После этого перегружаем правила ipfw

7) ipnat (для тех, кто использует ipnat)

/etc/ipnat.conf

rdr fxp0 2.2.2.2/32 port 80 -> 10.10.10.10 port 8080 tcp

После этого перечитываем конфиг:

#/etc/rc.d/ipnat reload

8 ) pf (для тех, кто использует pfnat)

rdr on $external_iface proto tcp from any to 2.2.2.2 port 80 -> 10.10.10.10 port 8080

После этого перечитываем правила

#pfctl -f {файл с правилами}

Проброс портов разными способами: rinetd, redir, natd, kernel nat, pf, ssh, ipnat: 4 комментария

  1. rnd

    Вы хорошо начали, но плохо закончили.
    Почему-то для способов с 3-го по 8-й не указаны преимущества и недостатки по сравнению с другими, как в 1-м и во 2-м.

    1. skeletor Автор записи

      Спасибо, поправил 3-ий.
      Опишу здесь, что бы не повторяться. Проброс портов через файерволы (5-8) НЕ ПОДМЕНЯЕТ SRC-ADDRESS. 4-ый — все преимущества и недостатки ssh.

    1. skeletor Автор записи

      Не описан, потому как он умеет работать только с локальными интерфейсами/адресами, то есть теми, которые непосредственно на этом сервере. К примеру нельзя через fwd пробросить пакет с сервера А на сервер Б. Кстати, на pf’e это можно сделать.

Добавить комментарий для Alex_471 Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *