Маршрутизатор на базе unix-системы

Обслуживая ИТ-инфраструктуру института искусств художественного моделирования и дизайна им. Сальвадора Дали встал вопрос о раздаче интернета в административной части института и студенческой. Бюджет был очень ограничен и о покупке маршрутизатора не могло быть и речи. Имея в распоряжении пару стареньких ПК было решено реализовать маршрутизатор на базе unix-системы в частности на SLES 11 SP3 (SUSE Linux Enterprise Sever). Установку самой системы и базовую настройку сетевых интерфейсов я опущу — перейдем сразу к делу.

Заниматься маршрутизацией у нас будет утилита iptables, которая входит в набор стандартных утилит почти в в любой unix-системе.
Создадим файл-скрипт с именем nat.sh, который будет содержать нужные нам команды:

#touch nat.sh

touch

 

Далее нужно выдать права этому файлу на выполнение:

#chmod +x nat.sh

chmod

 

Теперь нужно отредактировать этот файл — можно сделать это с помощью Midnight Commandera или с помощью текстового редактора, например, vi или nano. В данном случае я воспользуюсь vi.

Открываем файл командой:

#vi nat.sh

и нажимаем «i», чтобы перейти в режим редактирования; затем вносим изменения в файл и нажимаем «Esc» для выхода в командный режим и вводим «:wq», чтобы сохранить внесенные изменения и выйти из редактора. Теперь немного о содержимом файла:

nat

INET_IP="192.168.0.1"
INET_IFACE="eth2"
IPTABLES="/usr/sbin/iptables"

Это переменные, которым заданы определенные значения — в частности переменной IPTABLES задан путь к исполняющему файлу утилиты с одноименным названием.

/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack

и остальные схожие команды нужны для загрузки нужных нам модулей.

echo "1" > /proc/sys/net/ipv4/ip_forward

эта команда позволяет разрешить пересылку пакетов между интерфейсами (forwarding).

#$IPTABLES  -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP

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

#IPTABLES -t nat -A POSTROUTING -s 192.168.5.0/24 -j MASQUERADE
#IPTABLES -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE

эта команда реализует трансляцию сетевых адресов так же как и предыдущая, но для её работы не нужно указывать внешний адрес.

$IPTABLES -t nat -A PREROUTING -p tcp 213.154.211.190 --dport 3389 -j DNAT --to-destination 192.168.5.1:3389

данная команда реализует проброс порта 3389 — это значит, что при обращении на адрес 213.154.211.190 и порт 3389 запрос будет перенаправлен на адрес 192.168.5.1 и порт 3389

Теперь осталось добавить наш скрипт в автозагрузку, чтобы он запускался при включении сервера — мы сделаем это с помощью утилиты Yast:

#yast

далее System—>>System Services (Runlevel), включаем его и задаем уровни запуска:

autorun

 

Маршрутизатор готов к выполнению своих задач.