Get Adobe Flash player

:: Авторизация ::

Главная Коллегам Обеспечение централизованного выхода в Интернет при помощи Linux.

Обеспечение централизованного выхода в Интернет при помощи Linux.

Автор  Ярослав Федоренко
Оценить
(0 голоса)

В данной статье будет рассмотрено централизованное подключение к Интернету компьютеров образовательных учреждений. В качестве роутера будет использоваться компьютер у установленным на нём Linux Ubuntu. Необходимо чтобы на машине были установлены две сетевые платы. Одна будет использована для доступа в мировую паутину, вторая для того, чтобы сервер был виден в локальной сети.

server_linux

 

 

В качестве опытного образца мною был использован Linux Ubuntu 9.10, но не сервер, а обычный диcтрибутив с рабочей средой Gnome. Все настройки необходимо производить с правами суперпользователя Root.
Поскольку во многих школах подключение к Интернету производится через ADSL модем, данная схема подойдет для большинства образовательных учреждений.

Шаг 1. Настройка сетевых плат.
Вызываем терминал и настраиваем сетевые платы (можно открыть файл /etc/network/interfaces открыть простым текстовым редактором).

sudo nano /etc/network/interfaces

Эта команда откроет в консольном редакторе nano конфигурационный файл с сетевыми интерфейсами. К eth0 у нас подключен ADSL модем (или любая сеть провайдера), а eth1 смотрит во внутреннюю (локальную) сеть. IP адрес на внешнем интерфейсе 192.168.1.2 (сюда нужно вписать Ваш адрес), шлюз (ADSL модем) 192.168.1.1, внутренняя сеть лежит в диапазоне 10.0.0.1 - 254. Тогда настройки будут выглядеть следующим образом:

auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
gateway 192.168.1.1


auto eth1
iface eth1 inet static
address 10.0.0.1
netmask 255.255.255.0


Сохраняем изменения Ctrl+O и выходим Ctrl+X.

Собственно сеть настроена, можно переходить к следующему этапу, лучше установить еще несколько пакетов для удобства администрирования. Сначала обновим список доступных пакетов:

sudo apt-get update

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

sudo apt-get upgrade

Шаг 2. Настройка DNS.

Теперь нужно настроить DNS, для этого выполняем:

sudo nano /etc/resolv.conf

Также данный файл можно открыть при помощи стандартного текствого редактора Linux.
В этом файле необходимо указать адреса DNS серверов, лучше всего указать DNS провайдера или, как в нашем случае, OpenDNS.

В случае с школьными компьютерами, необходимо указать DNS, выданный оператором Волга-Телеком. В г. Ижевске это 82.179.62.64. Поэтому и прописываем в настройках этот адрес.
#OpenDNS Servers
nameserver 82.179.62.64


Сохраняем. Теперь нужно перезапустить сетевые службы

sudo /etc/init.d/networking restart

Шаг 3. Настраиваем NAT

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

sudo touch /etc/nat

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

#!/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

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

post-up /etc/nat

Даем скрипту права на исполнение:

sudo chmod +x /etc/nat

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

sudo /etc/init.d/networking restart

Шаг 4. Настройка кэширующего 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

После чего на клиентских машинах должен заработать интернет.
Настраиваем DHCP
Теперь, когда наш сервер работает, нужно настроить клиентские машины. Можно, конечно, прописать все параметры вручную, но как быть если клиентских машин много и расположены они по всему зданию? Здесь нам на выручку приходит протокол DHCP, который позволяет клиентским машинам получать сетевые настройки автоматически. В качестве DHCP сервера выступит уже установленный Dnsmasq. Настроить его не просто, а очень просто, для чего снова открываем /etc/dnsmasq.conf.
Все что нам надо, это задать диапазон выдаваемых адресов (в нашем случае 10.0.0.100-150), сетевую маску и время, на которое выдается IP адрес:

dhcp-range=10.0.0.100,10.0.0.150,255.255.255.0,12h

Адреса DNS сервера и шлюза сервер берет автоматически из системных настроек. Еще раз перезапускаем Dnsmasq:

sudo /etc/init.d/dnsmasq restart

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

cat /var/log/syslog | grep DHCPOFFER

В выдаче будут перечислены выданные IP адреса и MAC адреса которым они выданы.

Шаг 5. Настраиваем кэширующий прокси-сервер Squid


В любой большой сети определенная часть трафика повторяется от пользователя к пользователю и порой его доля доходит до 50%. Логично бы было кэшировать наиболее повторяющиеся запросы и тем самым снизить нагрузку на канал, сэкономить входящий трафик и ускорить выдачу страниц конечному пользователю. Для этих задач мы используем Squid - кэширующий прокси с широчайшими возможностями.

sudo apt-get install squid

Останавливаем прокси-сервер и приступаем к настройке:

sudo /etc/init.d/squid stop

Открываем /etc/squid/squid.conf, находим и корректируем следующие строки, не забыв их раскомменитровать:
Указываем порт:
http_port 3128 transparent
Настраиваем кэш:
cache_dir ufs /var/spool/squid 4096 32 256
Указываем внутренние сети, лишние комментируем:

acl localnet src 10.0.0.0/24 # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network


Разрешаем доступ из внутренних сетей (найти и раскомменитровать):
http_access allow localnet
Устанавливаем лимит использования памяти:
memory_pools on
memory_pools_limit 50 MB

Задаем язык вывода ошибок для пользователя
error_directory /usr/share/squid/errors/Russian-koi8-r

Важное замечание! В Ubuntu 9.10 эта строка может выглядеть так, рекомендуем проверить правильность пути:
error_directory /usr/share/squid/errors/ru
Сохраняем файл конфигурации. Теперь строим кэш и запускаем:

sudo /usr/sbin/squid -z
sudo /etc/init.d/squid start


Для проверки указываем в браузере на клиентской машине использование прокси-сервера с адресом 10.0.0.1 и портом 3128, убеждаемся что все работает. Остается настроить прозрачную работу прокси-сервера, чтобы http трафик заворачивался на Squid автоматически, без прописывания прокси на клиенте.

Для этого открываем /etc/nat и дописываем в конец строку:
# Заворачиваем http на прокси
iptables -t nat -A PREROUTING -i eth1 -d ! 10.0.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 10.0.0.1:3128
Перезапускаем сеть:
sudo /etc/init.d/networking restart

Все. Если вы все правильно сделали в Вашем распоряжении рабочий сервер, позволяющий организовать общий доступ к интернет, кешируюший http трафик и DNS запросы, а также умеющий раздавать клиентским машинам необходимые для работы в сети настройки. Как уже говорилось, достаточно подключить компьютер к локальной сети запустить браузер и набрать адрес нужного сайта. В МОУ СОШ № 20 г. Ижевска такой сервер успешно работает в течение двух месяцев.

Статья взята с сайта http://interface31.ru/.

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

Защитный код
Обновить