Часто в системном администрировании может потребоваться осуществление переадресации портов (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.

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>