Найти в Дзене

Бюджетный сервер для школы (Linux + NAT + DHCP + Squid). Часть1 (Настраиваем NAT)

Для организации общего доступа к интернет необходимо настроить трансляцию сетевых адресов (NAT), что позволит сетевым службам внутренней сети получать доступ к внешней сети. Для этого достаточно выполнить всего одну команду, но есть одна тонкость: все будет работать только для перезагрузки. На настоящий момент в Linux нет механизма, который бы сохранял настойки iptables при перезагрузке сервера или сети. Поэтому мы пойдем другим путем и вынесем эти настройки в отдельный скрипт, запускаемый при загрузке системы. !!Еще раз обращаю внимание, у меня стоит, старичок сервер, поэтому при настройке роутера на базе Ubuntu Server 12.04 и выше расположение и конфигурация файлов может меняться!! Сначала создадим файл скрипта: sudo touch /etc/nat Потом откроем его в редакторе Midnight Commander (F4) и внесем следующий текст: #!/bin/sh
# Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward
# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT
# Разреш

Для организации общего доступа к интернет необходимо настроить трансляцию сетевых адресов (NAT), что позволит сетевым службам внутренней сети получать доступ к внешней сети. Для этого достаточно выполнить всего одну команду, но есть одна тонкость: все будет работать только для перезагрузки. На настоящий момент в Linux нет механизма, который бы сохранял настойки iptables при перезагрузке сервера или сети. Поэтому мы пойдем другим путем и вынесем эти настройки в отдельный скрипт, запускаемый при загрузке системы.

!!Еще раз обращаю внимание, у меня стоит, старичок сервер, поэтому при настройке роутера на базе Ubuntu Server 12.04 и выше расположение и конфигурация файлов может меняться!!

Сначала создадим файл скрипта:

sudo touch /etc/nat

Потом откроем его в редакторе Midnight Commander (F4) и внесем следующий текст:

#!/bin/sh
# Включаем форвардинг пакетов


echo 1 > /proc/sys/net/ipv4/ip_forward
# Разрешаем трафик на loopback-интерфейсе
iptables -A INPUT -i lo -j ACCEPT


# Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

# Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE

# Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

# Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth1 -j REJECT

Сохраняем (F2), для автоматического запуска скрипта снова открываем /etc/network/interfaces и в самый конец файла дописываем:

post-up /etc/nat

Также не забываем дать нашему скрипту права на исполнение:

sudo chmod +x /etc/nat

Перезапускаем сеть:

sudo /etc/init.d/networking restart

Если нигде не допущено ошибок все должно работать. Для проверки укажем на машинах внутренней сети в качестве шлюза и DNS адрес нашего роутера: 10.0.0.1 и пропингуем любой внешний адрес, например один из OpenDNS серверов: 208.67.222.222. Но интернет пока работать не будет. Почему? Да потому, что мы указали в качестве DNS сервера наш роутер, который пока таковым не является. Можно конечно явно прописать DNS на клиентской машине,однако, это не наш метод, если вдруг DNS сервера изменятся, нам что, бегать перепрописывать?

Одно из решений: поднять на нашем роутере полноценный DNS сервер, но в большинстве случаев это избыточно, поэтому мы ограничимся простым кэширующим DNS (а также и DHCP) сервером Dnsmasq.

sudo apt-get install dnsmasq

После установки открываем /etc/dnsmasq.conf, находим, раскомментируем и изменяем следующим образом строку, чтобы разрешить серверу принимать DNS запросы из внутренней сети.:

listen-address=127.0.0.1, 10.0.0.1

Перезапускаем DNS сервер:

sudo /etc/init.d/dnsmasq restart

После чего на клиентских машинах должен заработать интернет.