Настраиваем роутер NAT + DHCP + Squid3 как альтернатива ClearOS Community.

Автор: | 15.06.2017

Мы уже настраивали роутер на ClearOS Community, теперь поговорим как настроить роутер на Ubuntu. Не будем подробно останавливаться на установке системы и назначении тех или иных компонентов, об этом достаточно  материала в интернете, а уделим основное внимание отличиям в современных версиях Ubuntu Server и настраиваемых пакетах.

Настройка сети

В нашем примере внешний сетевой интерфейс – eth0 – имеет статические настройки, если же вы используете PPPoE или PPTP подключение, то для настройки подключения в интернете есть много описаний как это сделать. Рекомендуем использовать только LTS версии и крайне не рекомендуем использовать на серверах промежуточные релизы. Все сетевые настройки, в том числе и DNS-сервера указываются в одном месте, в конфигурационном файле /etc/network/interfaces. Перед тем как приступать к настройке повысим права до суперпользователя:

sudo -s

затем откроем файл в штатном редакторе nano, работа с ним далека от удобства, но для изменения нескольких строк он вполне подойдет:

nano /etc/network/interfaces

Приведем его к следующему виду (настройки внешнего интерфейса приведены исключительно для примера):

auto eth0
iface eth0 inet static
address 10.10.0.10
netmask 255.255.255.0
gateway 10.10.0.10
dns-nameservers 172.18.0.1 208.67.222.222

auto eth1
iface eth1 inet static
address 192.168.31.1
netmask 255.255.255.0

post-up /etc/nat

Для указания DNS-серверов используется директива dns-nameservers, если серверов несколько, они указываются в одну строку, через пробел.

Если вы получаете сетевые настройки от провайдера по DHCP, то настройки будут иметь вид:

auto eth0
iface eth0 inet dhcp

Последней строкой идет автоматическая загрузка правил iptables из файла /etc/nat, который мы создадим позже.

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

service networking restart

Если все сделано правильно, на сервере должен появиться интернет. После чего следует обновить пакеты на сервере и установить необходимый минимум утилит для администрирования:

apt-get update
apt-get upgrade
apt-get install mc ssh

Представлять двухпанельный менеджер с удобным редактором Midnight Commander (mc) мы думаем не нужно, как и SSH-сервер, дающий возможность удаленного администрирования. Хотя я SSH ставлю сразу при установки системы.

Настройка NAT и брандмауэра

Технология сетевой трансляции адресов – NAT – позволяет организовать выход в интернет компьютеров локальной сети через один сетевой адрес. Данная технология абсолютно прозрачна для клиентских устройств и способна работать с любыми сетевыми приложениями и протоколами. За функции NAT в Ubuntu отвечает сетевой фильтр iptables, который предоставляет также функции брандмауэра.

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

touch /etc/nat

и внесем в него следующее содержимое:

#!/bin/sh

#Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

#Разрешаем траффик на lo
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 192.168.31.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

Сохраним изменения и дадим нашему файлу права на исполнение:

chmod +x /etc/nat

перезагрузим сервер:

reboot

Теперь если вручную задать сетевые настройки для рабочей станции, указав в качестве шлюза наш роутер и любой доступный DNS-сервер, то не ней должен появиться доступ в интернет.

Настройка DHCP и кэширующего DNS

DHCP-сервер является неотъемлемой частью сетей любого размера. Также имеет смысл настроить собственный кэширующий DNS-сервер, который не только снизит нагрузку на вышестоящие сервера и уменьшит время отклика, но также позволит создавать собственные записи для хостов внутренней сети, что может оказаться полезным при развертывании иных сетевых сервисов.

Все эти функции реализованы в одном пакете dnsmasq, который предельно прост в установке и настройке:

apt-get install dnsmasq

Функции кэширующего DNS-сервера становятся доступны сразу после установки и в настройке не нуждаются, однако следует явно указать интерфейсы, которые будет обслуживать dnsmasq. Для этого откроем файл /etc/dnsmasq.conf и изменим следующую строку (не забываем раскомментировать при необходимости):

listen-address=127.0.0.1, 192.168.31.1

Для настройки DHCP сервера достаточно указать диапазон пула адресов и срок аренды:

dhcp-range=192.168.31.100,192.168.31.199,255.255.255.0,12h

Перезапустим сервис:

service dnsmasq restart

После чего хосты внутренней сети будут получать все сетевые настройки автоматически.

Настройка кэширующего прокси-сервера Squid3

Squid поддерживает кэширование двух типов, в оперативной памяти и на диске. Сегодня можно встретить рекомендации отказаться от дискового кэша, мол проще скачать объект заново, чем искать его на диске. Однако разумный размер дискового кэша при большом количестве клиентов позволяет эффективно использовать канал за счет хранения в кэше статических элементов: картинок, скриптов, CSS-файлов для часто посещаемых ресурсов.

Сразу предостережем от распространенной ошибки – использования для хранения кэша старых медленных дисков и выделения под кэш значительного пространства. В этом случае эффект будет прямо противоположен ожиданиям, время поиска объекта на диске при большой нагрузке будет занимать значительно больше времени, чем его повторное скачивание.
Но все преимущества Squid раскрываются тогда, когда появляется необходимость тонкой фильтрации трафика, здесь богатые возможности позволяют реализовывать самые разнообразные схемы.
Для установки squid выполните команду:

apt-get install squid3

Перейдем к настройкам. Конфигурационный файл squid может показаться излишне сложным, на самом деле большую часть его занимают подробные комментарии и примеры. Поэтому пойдем по файлу от начала к концу, указывая какие строки надо добавить или изменить. Откроем файл конфигурации /etc/squid3/squid.conf и перейдем к указанию группы доступа (acl) для локальной сети. Раскомментируем и исправим или добавим ниже строку:

acl localnet src 192.168.31.0/24

Далее найдем секцию отвечающую за правила доступа и убедимся, что она содержит следующие правила:

http_access allow localnet
http_access allow localhost
http_access deny all

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

Теперь укажем порт, интерфейс и режим работы прокси-сервера.

http_port 192.168.31.1:3128 intercept

Параметр intercept указывает, что прокси работает в прозрачном режиме, т.е. не требует прямого указания прокси на клиентах.

Перейдем к указанию параметров кэша. Зададим доступный объем памяти и укажем максимальный объем кэшированного объекта в памяти:

cache_mem 1024 MB
maximum_object_size_in_memory 512 KB

При задании этих параметров исходите из доступной памяти сервера, но учтите, что кэш в памяти начинает эффективно работать только после “прогрева” и будет сброшен при перезагрузке или выключении сервера.

После чего укажем размер дискового кэша и его расположение:

cache_dir ufs /var/spool/squid3 2048 16 256

Размер кэша указывается в МБ, в нашем случае 2048 МБ – 2 Гб, следующие два числа указывают количество директорий первого и второго уровня.
Следующий параметр задает максимальный размер объекта в дисковом кэше:

maximum_object_size 4 MB

Далее по файлу укажем место хранения логов и количество ротаций

access_log daemon:/var/log/squid3/access.log squid
logfile_rotate 31

В нашем случае логи хранятся 31 день, указывая это значение исходите из размеров лога и свободного места на диске, в любом случае этот параметр можно всегда изменить.

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

Перед тем как перезапускать службу выполним проверку файла конфигурации:

squid3 -k check

Если команда отрабатывает без вывода – ошибок нет, в противном случае изучаем вывод и исправляем допущенные ошибки. После этого перезапустим службу, чтобы применить внесенные изменения.

service squid3 restart

В том случае, когда были изменены параметры кэша следует его перестроить:

service squid3 stop
squid3 -z
service squid3 start


Затем в /etc/nat добавляем правило заворачивающее http-трафик на squid:

# Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i eth1 ! -d 192.168.31.0/24 -p tcp -m multiport –dport 80,8080 -j DNAT –to 192.168.31.1:3128

Сохраняем изменения, перезагружаем сервер.

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

Rating: 5.0. From 1 vote.
Please wait...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *