В прошлой статье — вот тут — я расказывал как установить такую полезную вещь как CSF. CSF это набор скриптов, которые производят автоматическую настройку правил iptables, что очень облегчает работу c Linux серверами. А сегодня я расскажу как, использую CSF, настроить NAT на Linux сервере для использования его в качестве интернет-шлюза.

Давайте представим что Вы работаете в небольшой организации на 50-100 человек, и каждому из них необходимо предоставить доступ к сети интернет, а в вашем распоряжении только сервер с установленной на нем Ubuntu ( или Debian).

Для начала нам необходимы как минимум два сетевых интерфейса на сервере — один с внешним IP провайдера интернета, и второй для подключения к локальной сети. Для нашего примера возьмем :

eno1 — Внешний интерфейс с IP провайдера

eno2 — Локальный сетевой интерфейс

Теперь нужно определиться с адресацией. Тут на выбор — статические адреса или же динамические. С первым все понятно — настроили NAT, а потом ходите по каждому клиенту и настраиваете им сетевые интерфейсы — думаю не самый лучший вариант. Второй вариант — DHCP-сервер, который будет автоматически раздавать IP адреса клиентам, как настроить который я раскажу в следующей заметке.

Далее хорошо бы определиться с назначаемыми IP адресами. Тут все индивидуально, но для нашего примера возьмем подсеть 192.168.0.0/24 (или 192.168.0.0 с маской 255.255.255.0, как кому угодно)

Итак, с сетевыми интерфесами и адресами определились, с тем, как будут получать IP клиенты тоже. Приступим к настройке NAT.

Для начала разрешим проброс адресов в настройках сервера, для этого открываем

sudo nano /etc/sysctl.conf
и правим строку
net.ipv4.ip_forward=1
Сохраняем файл и выходим из редактора.

Теперь в директориии /etc/csf необходимо создать скрипт csfpost.sh — этот скрипт будет автоматически запускаться при запуске и перезапуске CSF.

sudo touch /etc/csf/csfpost.sh
И дать ему необходимые права
sudo chmod 775 /etc/csf/csfpost.sh
В этот скрипт нужно вписать следующее:
sudo nano /etc/csf/csfpost.sh

#! /bin/bash echo "Применяются правила firewall для поднятия NAT" iptables -A FORWARD -i eno2 -o eno1 -s 192.168.0.0/24 -j ACCEPT iptables -A FORWARD -i eno1 -o eno2 -d 192.168.0.0/24 -j ACCEPT iptables -P FORWARD DROP iptables -A POSTROUTING -s 192.168.0.0/24 -o eno1 -j MASQUERADE echo "Правила применены!" Разрешаем траффик на lo iptables -A INPUT -i lo -j ACCEPT #Разрешаем доступ из внутренней сети наружу iptables -A FORWARD -i eno2 -o eno1 -j ACCEPT #Включаем NAT iptables -t nat -A POSTROUTING -o eno1 -s 192.168.0.0/24 -j MASQUERADE #Разрешаем ответы из внешней сети iptables -A FORWARD -i eno1 -m state --state ESTABLISHED,RELATED -j ACCEPT #Запрещаем доступ снаружи во внутреннюю сеть iptables -A FORWARD -i eno1 -o eno2 -j REJECT

Все, сохраняем файл и закрываем редактор. Осталось только перезапустить CSF

sudo csf -r
и проверить, работает ли интернет на клиентах.