SULI COMPANY | Научно-технический сайт Сулико Асабашвили » IT » UNIX » Перенаправление портов через linux-шлюз
Информация к новости
  • Просмотров: 718
  • Автор: sulicompany
  • Дата: 13-02-2013, 15:20
 (голосов: 0)
13-02-2013, 15:20

Перенаправление портов через linux-шлюз

Категория: IT » UNIX


Часто в системном администрировании может потребоваться осуществление переадресации портов (port forwarding) через linux-шлюз. Прежде всего, такая необходимость появляется, когда вы хотите сделать доступными ресурсы локальной сети в сеть внешнюю. В этой статье будет дан пример на базе ОС Ubuntu, хотя аналогичным образом перенаправление можно будет осуществить в любой другой linux-системе, с помощью функционала iptables.

Для начала стоит ввести команду
ifconfig
и определить для себя две вещи: интерфейс связывающий шлюз со внешней сетью (допустим eth0) и внешний ip-адрес шлюза на этом интерфейсе (допустим 123.123.123.123).

Далее, предположим, вам надо пробросить ssh-порт одной из машин локальной сети.
Для этого под root-пользователем введите следующие команды:

iptables -t nat -A POSTROUTING -s 192.168.0.100 -o eth0 -j MASQUERADE

(где 192.168.0.100 — ip-адрес локальной машины, эта команда делает доступной этот хост для построутинга)

iptables -t nat -A PREROUTING -p tcp -d 123.123.123.123 --dport 20022 -j DNAT --to-destination 192.168.0.100:22
iptables -t filter -A FORWARD -i eth0 -d 192.168.0.100 -p tcp --dport 20022 -j ACCEPT

(где 20022 — порт, на который будет переадресация с 192.168.0.100:22)

Вам, соответственно, надо будет поменять адреса, порты и имя интерфейса в этих двух командах.

Аналогичным образом можно настроить любое количество перенаправляемых портов, в случае, если вы сделали все верно, то можно внести эти настройки в автозагрузку в системе Ubuntu двумя способами:

- как описано в конце , сохранив всю нынешнюю конфигурацию iptables и добавив ее в поднятие сетевого интерфейса;

- или как описано в , написав отдельный скрипт с этими командами и добавив его в init.d.