Настройка сети
интерфейс eth0 – смотрит в инет;
интерфейс eth1 – смотрит в локалку;
Переходим в режим суперпользователя:
sudo -s
затем откроем файл в штатном редакторе nano
nano /etc/network/interfaces
Приведем его к следующему виду (настройки внешнего интерфейса приведены исключительно для примера):
auto eth0
iface eth0 inet static
address 172.18.0.106
netmask 255.255.240.0
gateway 172.18.0.1
dns-nameservers 172.18.0.1 208.67.222.222
auto eth1
iface eth1 inet static
address 192.168.0.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-сервер, дающий возможность удаленного администрирования.
Настройка 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.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
Сохраним изменения и дадим нашему файлу права на исполнение:
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.0.1
Для настройки DHCP сервера достаточно указать диапазон пула адресов и срок аренды:
dhcp-range=192.168.0.100,192.168.0.199,255.255.255.0,12h
Перезапусим сервис:
service dnsmasq restart
После чего хосты внутренней сети будут получать все сетевые настройки автоматически.
Настройка кэширующего прокси-сервера Squid3
На заре своего развития основным назначением прокси-сервера Squid было кэширование трафика, сегодня, когда безлимитный интернет стал нормой жизни, эти возможности отходят на второй план, но остаются достаточно актуальными.
Squid поддерживает кэширование двух типов, в оперативной памяти и на диске. Сегодня можно встретить рекомендации отказаться от дискового кэша, мол проще скачать объект заново, чем искать его на диске. Однако мы считаем, что разумный размер дискового кэша при большом количестве клиентов позволяет эффективно использовать канал за счет хранения в кэше статических элементов: картинок, скриптов, CSS-файлов для часто посещаемых ресурсов.
Сразу предостережем от распространенной ошибки – использования для хранения кэша старых медленных дисков и выделения под кэш значительного пространства. В этом случае эффект будет прямо противоположен ожиданиям, время поиска объекта на диске при большой нагрузке будет занимать значительно больше времени, чем его повторное скачивание.
Но все преимущества Squid раскрываются тогда, когда появляется необходимость тонкой фильтрации трафика, здесь богатые возможности позволяют реализовывать самые разнообразные схемы, которые просто невозможно рассмотреть в рамках одного материала, получить все материалы по данной теме вы можете выполнив поиск по тегу squid.
Для установки squid выполните команду:
apt-get install squid3
Перейдем к настройкам. Для новичка конфигурационный файл squid может показаться излишне сложным, на самом деле большую часть его занимают подробные комментарии и примеры. Поэтому мы пойдем по файлу от начала к концу, указывая какие строки надо добавить или изменить. Откроем файл конфигурации /etc/squid3/squid.conf и перейдем к указанию группы доступа (acl) для локальной сети. Раскомментируем и исправим или добавим ниже строку:
acl localnet src 192.168.0.0/24
Затем, спускаясь далее по конфигурационному файлу найдем секцию отвечающую за правила доступа и убедимся, что она содержит следующие правила:
http_access allow localnet
http_access allow localhost
http_access deny all
Данная секция разрешает доступ для клиентов локальной сети, собственно сервера и запрещает всем остальным.
Теперь укажем порт, интерфейс и режим работы прокси-сервера.
http_port 192.168.0.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 /var/log/squid3/access.log squid
logfile_rotate 31
В нашем случае логи хранятся 31 день, указывая это значение исходите из размеров лога и свободного места на диске, в любом случае этот параметр можно всегда изменить.
Остальные параметры оставляем без изменений, сохраняем файл и перезапускаем squid:
service squid3 restart
Затем в /etc/nat добавляем правило заворачивающее http-трафик на squid:
# Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i eth1 ! -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128
Сохраняем изменения, перезагружаем сервер.
Обращаем ваше внимание, что squid3 в прозрачном режиме, в отличие от предыдущей версии, не принимает соединения, если в настройках прямо указано использование прокси.
В этом случае вы получите сообщение, что доступ запрещен:
Как видим, настройка роутера на современной платформе, несмотря на отличия, остается весьма простой и доступна для повторения широкому кругу читателей. В наших будущих материалах мы также будем принимать за основу роутер, настроенный именно по данному материалу, в тоже время с данным роутером будут работать все решения, опубликованные нами ранее, хотя для некоторых из них могут понадобиться незначительные корректировки.