Настройка шлюза ubuntu. Настройка шлюза для домашней локальной сети на Ubuntu Linux

  • Два домашних компьютера с ОС Linux Ubuntu , на одном из которых - две сетевые карты
  • Подключение к интернету от провайдера, которое осуществляется через pppoe (вообще подключение к интернету может быть любым, это роли вообще никакой не играет)
  • IP-адрес для подключения интернета - виртуальный, типа 192.168.x.x

Задача

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

Решение

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

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

  • Настроить подключение к интернету через pppoe на сервере
  • Настроить подключение между домашними компьютерами (сервером и клиентом), это будет домашняя локальная сеть
  • Настроить шлюз, то есть трансляцию пакетов между домашней локальной сетью и интернетом

Сейчас у нас на сервере следующие сетевые интерфейсы: локальная петля lo , первая сетевая карта eth0 и вторая сетевая карта eth1 . Опять же, для определённости будем считать, что eth0 - это сетевая карта с интернетом (в неё воткнут кабель провайдера), а eth1 - сетевая карта с кабелем домашней локальной сети, то есть с кабелем от второго компьютера, от клиента.

Практически все настройки производятся на сервере.

Настройка подключения к интернету через pppoe

Запускаем в консоли от имени суперпользователя:

Начнётся процедура настройки, в которой нам предстоит ответить на несколько вопросов. Процедура понятная и не очень сложная. Важнее то, что после настройки у нас появится новый сетевой интерфейс: ppp0 .

Сетевой интерфейс ppp0 работает на интерфейсе eth0 . Его можно включить и выключить следующими командами:

# включение интерфейса с заданными ранее настройками: pon dsl-provider # выключение интерфейса: poff

При включении ppp0 все необходимые сетевые настройки передаёт нам провайдер, вернее, его сервер pppoe . Для того, чтобы в отсутствие интернета безболезненно пользоваться локальной сетью провайдера, надо сделать ещё несколько телодвижений.

Настраиваем интерфейс eth0 .

Файл /etc/network/interfaces

Auto eth0 iface eth0 inet static # Настройки для подключения, выданные провайдером: address ip_адрес netmask маска_подсети gateway ip_адрес_шлюза...

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

Файл /etc/resolv.conf

# Снова настройки от провайдера: nameserver ip_адрес_DNS1 nameserver ip_адрес_DNS2

В моём случае для работы с провайдерской локалкой больше ничего и не надо.

Настройка подключения между домашними компьютерами

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

Выбираем подсеть для домашней локальной сети, желательно чтобы она не пересекалась с адресами провайдера. Допустим, такую: 10.0.0.0/24 . Это означает, что адреса нашей сети будут иметь вид 10.0.0.х , где х - число от 1 до 255, с маской подсети 255.255.255.0 .

Задаём адреса из выбранной подсети клиенту и серверу. Когда связь между компьютерами появится - идём дальше.

Настройка трансляции пакетов между домашней локальной сетью и интернетом

Для этой задачи воспользуемся возможностями файрвола iptables .

Проверяем наличие iptables в системе (команда вернёт список пакетов, содержащих название iptables):

dpkg -l | grep iptables

И если его нет - устанавливаем (от имени суперпользователя).

apt-get install iptables

Настройка iptables требует достаточно специфичных навыков и знаний, так что нам очень повезло, что для дебианоподобных систем (а Ubuntu - как раз одна из них) есть пакет arno-iptables-firewall . Установим его, также от имени суперпользователя.

apt-get install arno-iptables-firewall

Ещё в процессе установки программа потребует ввода данных для настройки. Но эта настройка - предварительная и ответов на заданные вопросы будет недостаточно. Чтобы настроить iptables полностью, нужно будет запустить команду реконфигурирования:

dpkg-reconfigure arno-iptables-firewall

При реконфигурировании окна с запросами будут частично дублировать те, что возникали при установке. В любом случае ориентируйтесь на снимки экрана ниже.


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

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

Хотите настроить файрвол с помощью конфигуратора пакетов?

Да, конечно хотим.


Внешние сетевые интерфейсы соединяют локальную машину с небезопасными сетями (например, с интернетом). Файрвол будет разрешать только те соединения, которые явно заданы комбинациями портов источника/назначения на этих интерфейсах. Вы должны задать все внешние интерфейсы (например, eth0 и/или ppp0).

Для интерфейса ppp, который пока ещё не существует, вы можете использовать маску устройства под именем «ppp+», но использование ppp+ возможно только тогда, когда нет никаких других интерфейсов ppp!

Если не будет задано никаких интерфейсов, никакие настройки файрвола не будут изменены.

Предупреждение о том, что в следующем окне надо будет указать все внешние интерфейсы через пробел.


Внешние сетевые интерфейсы:

В нашем случае это ppp0 и eth0 . Интерфейс ppp0 существует и используется при включенном интернете, eth0 для провайдерской локалки.


Данный компьютер может использовать DHCP для получения адреса от интернет-провайдера (ИП). Это верно практически всегда в том случае, если вы пользуетесь непостоянным (например, модемным) подключением.

Если использование DHCP не указано явно, файрвол будет блокировать весь сетевой трафик, связанный с запросами DHCP.

Если вы не уверены - оставьте эту настройку включенной.

Внешние интерфейсы используют DHCP?

Получает ли наш сервер внешний адрес по DHCP или он статический? В нашем конкретном случае это не имеет значения, но выберем динамику.


Укажите пожалуйста номера портов TCP служб, которые должны быть доступны из внешнего мира. Часто используемые номера портов: 80 (http), 443 (https) или 22 (ssh).


Открыть внешние порты TCP:

Какие TCP порты открываем для интернета? В подавляющем большинстве случаев, особенно в нашем - никакие, оставляем поле пустым.


Политика файрвола по умолчанию - блокировать все входящие соединения на внешние интерфейсы. Если данный компьютер предоставляет службы внешнему миру (например, является веб-сервером интернета), они должны быть заданы явно.

Укажите пожалуйста номера портов UDP служб, которые должны быть доступны из внешнего мира.

Вы можете указать не только один порт, но и диапазон (например, 10000:11000). Несколько записей должны быть разделены пробелом.

Если сомневаетесь - не вводите ничего.

Открыть внешние порты UDP:

Короче, то же самое для портов UDP.


В целях увеличения безопасности файрвол может быть настроен так, чтобы игнорировать широковещательные ICMP запросы (пинги). Иногда это может быть полезно (на первый взгляд хост кажется выключенным), иногда наоборот (затрудняет диагностику, по той же причине).

Если сомневаетесь - оставьте настройку выключенной.

Компьютер должен пинговаться из внешнего мира?

Выбираем можно ли пинговать сервер из интернета.


Внутренние сетевые интерфейсы соединяют данный компьютер с доверенными сетями (например, с офисной или домашней). Файрвол разрешит все попытки входящих соединений на эти интерфейсы. Если вы зададите эти интерфейсы, можно будет обеспечить доступ внутренним сетям к интернету через эту машину. Если таких интерфейсов нет оставьте поле пустым.

Несколько интерфейсов может быть задано с помощью разделителя - пробела.

Внутренние интерфейсы:

Выбираем внутренний сетевой интерфейс, у нас это eth1 , как мы и договаривались раньше.


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

Задайте подсети по правилам CIDR (например, 192.168.1.0/24). Если у вас несколько внутренних сетей, задайте каждую через пробел.

Внутренние сети:

Задаём подсеть нашей домашней локалки.


Если подключённые внутренние сети должны иметь доступ к внешнему миру (например, к интернету) через файрвол, должен быть включен маскарадинг (NAT).

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

Вы хотите включить NAT?

Самое главное. Межсетевая трансляция пакетов, ради чего всё это и затевалось. Включаем обязательно.


Если вы хотите ограничить доступ ко внешним сетям, можно определить разрешённые внутренние подсети по правилам CIDR (например, 192.168.1.0/24). Также можно задать отдельные узлы по их IP-адресам. Если у вас много внутренних сетей и/или узлов, их можно задать через пробелы.

Если оставить значение пустым, оно автоматически приравнивается ко внутренней сети. В этом случае ВСЯ внутренняя сеть будет иметь доступ ко внешним сетям, так что будьте внимательны и задайте только те сети, которые должны иметь доступ к внешнему миру.

Если сомневаетесь - ничего не вводите.

Предупреждение о том, что сейчас мы должны будем ввести адреса локальной сети, которым будет разрешён выход в интернет.


Внутренние сети с доступом во внешние сети:

Задаём разрешённые адреса, в нашем случае это вся подсеть.


Из соображений безопасности новые настройки файрвола не применяются автоматически. Возможно, вы захотите проверить конфигурацию файрвола в /etc/arno-iptables-firewall/firewall.conf , особенно после обновления версии, так как переменные при этом могут измениться.

В случае, когда понадобится применить новые настройки файрвола вручную до следующей перезагрузки, введите: "invoke-rc.d arno-iptables-firewall start ".

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

Должен ли файрвол быть (пере)запущен прямо сейчас?

Да, конечно. Почему бы и нет.

Добавление от 27.03.2011

По многочисленным просьбам трудящихся: « ».

Что теперь

Теперь у нас есть практически полноценный шлюз на убунте и доступ к интернету из домашней локальной сети.

Если нужно подключить к инету не две, а больше машин - используем вместо кроссовера свич и назначаем адреса в диапазоне от 10.0.0.3 до 10.0.0.255.

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

Ранее я уже рассматривал настройку программных роутеров на операционных системах freebsd и centos. Сегодня я хочу настроить интернет шлюз для локальной сети на основе популярного linux дистрибутива Debian. Выполним подготовку сервера и реализуем основной функционал, необходимый для выхода в интернет из локальной сети.

Я буду работать со следующим сервером:

# uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux # cat /etc/debian_version 8.3

На сервере имеются 2 сетевых интерфейса:

Файл конфигурации сетевых интерфейсов выглядит следующим образом:

# cat /etc/network/interfaces source /etc/network/interfaces.d/* auto lo iface lo inet loopback allow-hotplug eth0 iface eth0 inet dhcp allow-hotplug eth1 iface eth1 inet static address 10.0.15.1 netmask 255.255.255.0

Подготовка шлюза

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

Сеть на будущем программном роутере настроили, доступ в интернет на сервере есть. Обновим его:

# apt-get update # apt-get upgrade

Установим MC, мне в нем удобнее всего работать, в том числе в редакторе mcedit :

# apt-get -y install mc

Настроим часовой пояс, если раньше не сделали это:

# dpkg-reconfigure tzdata

Устанавливаем сервис ntp для автоматического обновления времени:

# apt-get -y install ntp

На этом основные подготовительные действия закончены. Приступаем к настройке шлюза.

Настройка маршрутизации, firewall и nat

Первым делом включим маршрутизацию пакетов между сетевыми интерфейсами. Для этого редактируем конфиг /etc/sysctl.conf :

# mcedit /etc/sysctl.conf net.ipv4.ip_forward=1

Либо раскомментируйте эту строку, либо добавьте, если ее нет. Но она по-умолчанию быть должна, закомментированная со значением 1. Применяем эту настройку:

# sysctl -p

На выходе работы команды в консоли будет выведен измененный параметр со значением 1.

Теперь приступаем к самому главному — и nat в нем для обеспечения выхода в интернет из локальной сети. Я очень подробно рассмотрел эту тему в отдельной статье. Хотя там речь идет о другом дистрибутиве, сами правила iptables абсолютно одинаковые с точностью до строчки, за исключением маленького нюанса, связанного с тем, что правила нужно сохранять в другой файл для применения их после перезагрузки.

Я приведу здесь сразу готовый вариант файла с правилами iptables, необходимых для работы интернет шлюза в debian. В файле даны подробные комментарии ко всем значениям, так что вы без проблем разберетесь и закомментируете или наоборот раскомментируете необходимые вам значения. Качаем скрипт правил iptables —

Копируем содержимое файла и создаем скрипт с правилами на сервере:

# mcedit /etc/iptables.sh

Вставляем в редактор правила. Редактируем их под свои нужды, обязательно заменяя переменные WAN и LAN на свои. Сохраняем файл.

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

Делаем файл с правилами исполняемым:

# chmod 0740 /etc/iptables.sh

Прежде чем применить новые правила, посмотрим на текущие:

# iptables -L -v -n

Видим, что на настраиваемом роутере firewall полностью открыт. Теперь применим новые правила и посмотрим на результат:

# /etc/iptables.sh

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

/sbin/iptables-save > /etc/iptables.rules

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

# mcedit /etc/network/interfaces post-up iptables-restore < /etc/iptables.rules

Для проверки перезагружаем шлюз и проверяем, все ли в порядке. По сути основная настройка программного роутера на debian завершена. Осталось сделать небольшое дополнение и настроить dhcp и dns сервер в локальной сети. Я для этих целей использую простой и легкий в настройке dnsmasq.

Установка и настройка dnsmasq в Debian

Выполним установку dnsmasq на дебиан:

# apt-get install -y dnsmasq

Сделаем минимальную настройку программы. Нам нужно просто выдавать сетевые настройки пользователям. Для этого приводим конфигурационный файл dnsmasq к следующему виду:

# mcedit /etc/dnsmasq.conf domain-needed bogus-priv interface=eth1 dhcp-range=eth1,10.0.15.50,10.0.15.150,24h

В данном случае мы будем выдавать пользователям ip адреса в диапазоне от 10.0.15.50 до 150. Сохраняем конфиг, добавляем программу в автозагрузку и запускаем.

# insserv dnsmasq # /etc/init.d/dnsmasq start

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

Посмотреть выданные leases можно в файле /var/lib/misc/dnsmasq.leases . На этом настройка интернет шлюза на debian 8 закончена. Все что нужно для обеспечения доступа в интернет из локальной сети сделано. Получился программный роутер с широкими возможностями по наращиванию функционала.

Просмотр загрузки сети с помощью iftop

Теперь представим ситуацию, что кто-то забил весь интернет канал и вам надо быстро выяснить, кто это сделал. По-умолчанию, никаких подручных и удобных средств на шлюзе для этого нету. Установим одно из таких средств — программу iftop . Это простая консольная утилита, которая дает возможность оперативно посмотреть статистику загруженности сетевого интерфейса в реальном времени.

Устанавливаем iftop на debian:

# apt-get install -y iftop

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

# iftop -i eth1

Чтобы увидеть порты, по которым идет трафик, добавляем ключ -P:

# iftop -i eth1 -P

На основе этой картинки уже можно сделать определенные выводы по использованию интернет канала. Обращаю внимание, что я смотрю загрузку локального интерфейса eth1. Если смотреть на eth0, то мы увидим только исходящие соединения сервера.

Заключение

Вот так легко и быстро можно настроить роутер, маршрутизатор или шлюз в интернет. Названия разные, а суть одна. В данном случае я использовал операционную систему Debian, но схожий функционал легко организовать на или . Для решения текущей задачи разница в работе не будет заметна. Каждый выбирает то, что больше нравится и к чему привык.

Пройдемся быстренько по этапам того, что сделали:

  1. Подготовили сервер Debian к настройке шлюза.
  2. Настроили маршрутизацию, iptables, нат. Проверили, что весь функционал восстанавливается после перезагрузки.
  3. Установили и настроили простой dhcp сервер и кэширующий dns сервер — dnsmasq. С его помощью автоматизировали поучение сетевых настроек пользователями.
  4. Установили простое средство мониторинга сетевой активности в консоли в режиме реального времени с помощью утилиты iftop.

На этом мы закончили настройку. Как продолжение развития темы интернет шлюза можно заняться для управления доступам к ресурсам интернета, или для подключения филиалов или удаленных сотрудников. Для примера привел ссылки на другие дистрибутивы. Со временем планирую описать реализацию этого функционала на debian. Принципиальных отличий нет, только нюансы разных дистрибутивов.

Онлайн курс "Администратор Linux"

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Администратор Linux» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров. Проверьте себя на вступительном тесте и смотрите программу детальнее по.

В этой заметке будет рассказано как с помощью iptables настроить системы с Ubuntu 9.10-11.04, Debian 5 и 6 для раздачи интернета другим компьютерам локальной сети. На простом примере будет показано как машину с двумя сетевыми интерфейсами (в один поступает интернет, из другого - «выходит») сделать шлюзом.

Допустим, что аппаратно-сетевая часть уже полностью настроена, на вашей машине имеются работоспособный интернет и вы видите другие компьютеры сети. Поэтому давайте разберемся что к чему, для этого введем команду:
ifconfig
Она выдаст список работающих в данный момент сетевых интерфейсов. Среди них надо опознать те, что начинаются со слов «Link encap:Ethernet» - это интерфейсы сетевых карт. Как правило, это eth0 и eth1.
Теперь потребуется опознать в какой из них поступает интернет, а из какого «выходит». Проще всего это сделать по их ip-адресам.
Итак, допустим через eth0 вы получаете интернет (например через adsl-модем по протоколу ppp), а eth1 связывает вас с локальной сетью.
Если локальная сеть настроена через Network Manager, то мы рекомендуем прописать эти настройки непосредственно в системном конфигурационном файле сети:
sudo nano /etc/network/interfaces
Здесь исправьте настройки вашего сетевого интерфейса, подключенного к локальной сети (в нашем случае eth1), соответствующим образом:
auto eth1 iface eth1 inet static address 192.168.0.10 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.0.255
Значение address - это айпи вашей машины в локальной сети, по этому адресу собственно и будет располагаться шлюз.
Значение netmask - в локальных сетях для этого диапазона чаще всего такая. Для других диапазонов можно вычислить здесь.
Значения network и broadcast будут зависеть от вашего адреса. То есть, если ваш локальный ip - 10.0.0.10, то network и broadcast будут 10.0.0.0 и 10.255.255.255 соответственно.

Либо, это можно проделать всего одной командой:
sudo ifconfig eth1 192.168.0.10
Эта команда самостоятельно настроит вашу сетевую карту eth1 на использование статичного айпи-адреса, и самостоятельно пропишет описанные выше настройки в файл /etc/network/interfaces

В любом случае, после этих изменений перезапустите networking:
sudo /etc/init.d/networking restart
Командой:
ifconfig
проверьте, что изменения вступили в силу и все работает.

Теперь осталось дело за малым. В случае если вы уже пытались настроить вашу систему шлюзом, но у вас не получилось или по каким-то другим причинам вы желаете обнулить все настройки файрвола iptables, то это можно сделать следующими командами:
iptables --flush iptables --table nat --flush iptables --delete-chain iptables --table nat --delete-chain
Если прямой необходимости в сбросе настроек iptables нет, то лучше этого не делать.

Следующие команды настроят ваш iptables для NAT-трансляции (NAT, Network Address Translation - «преобразование сетевых адресов») через Ubuntu-шлюз:
sudo iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT sudo iptables -A POSTROUTING -t nat -j MASQUERADE
Если необходимые вам сетевые интерфейсы отличаются от eth0 и eth1, то просто измените первую строку соответствующим образом.
Если ваша локальная сеть находится вне диапазона 192.168.x.x, то маску подсети для указания в первой строке вы сможете легко вычислить через сервис Network Calculators.

Теперь для конфигурации gateway’я для роутинга между двумя интерфейсами необходимо включить IP-форвардинг командой:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
И последний штрих: надо отредактировать файл sysctl.conf:
sudo nano /etc/sysctl.conf
Добавьте в него вот эти две строки для активации роутинга:
net.ipv4.conf.default.forwarding=1 net.ipv4.conf.all.forwarding=1
После этого ваш Ubuntu-шлюз готов к работе. Можете настраивать клиентские машины. На нашем примере для них gateway будет 192.168.0.10

Если все внесенные вами изменения работают корректно и вы желаете внести эти настройки в автозагрузку (а именно, вышеприведенные настройки iptables теряют активность после перезагрузки системы), то сохраните нынешнюю рабочую конфигурацию iptables в файл командой:
sudo sh -c "iptables-save > /etc/iptables.up.rules"
После этого в сам файл сетевых настроек /etc/network/interfaces (sudo nano /etc/network/interfaces) к описанию вашего сетевого интерфейса, из которого к вам поступает интернет (в нашем случае - это eth0) добавьте строку:
pre-up iptables-restore < /etc/iptables.up.rules
То есть оно станет примерно такого вида:
auto eth0 iface eth0 inet manual pre-up iptables-restore < /etc/iptables.up.rules
Только не меняйте значения в строке iface, просто добавьте указанную строку последней в разделе auto eth0. После этого при перезагрузке сохраненные настройки iptables будут подниматься автоматически.

0. Задача

Недавно встала задача раздать интернет в локальную сеть. Причем не просто раздать, но еще и наладить оперативный контроль и управление пользователями, а также проверить входящий трафик на вирусы. Задачей номер два являлось поднятие файл-сервера (так же с антивирем), чтобы запретить расшаривание папок и все файлы передовать только через этот сервер.

В начале было решено поставить на одном компе с двумя сетевыми картами Ubuntu и с помощью IPTables перенаправить трафик на прокси-сервер Squid, а для удобного управления прикрутить к нему веб-интерфейс SAMS. Однако после продолжительного гугления и разговоров со знакомыми решение было измененно, и в качестве дистрибутива был выбран ClarkConnect 4.3 . Его преимущества заключаются в том, что в нем уже есть все необходимое для поднятия сервера (WEB, FTP, Mail, прокси-сервера, сервера доступа, файл-сервера и пр) для малой и средней организации.

1. Установка

Скачать Clarkconnect Community можно . Дистрибутив распространяется в виде образа iso для последующего создания установочного диска. Пока записывается диск проверим соответствие выбранного компьютера минимальным системным требованиям (CPU 500Mhz, 512RAM, HDD 1Gb). Для начала установки загрузимся с созданного CD. Установка происходит в текстовом режиме, в виде диалога и в целом очень напоминает RedHat Linux. Среди языков есть русский, при выборе которого вы получите русифицированную инсталляцию, консоль и немного web-интерфейса(пока только Current status).
Основные моменты: выбор режим работы сервера Standalone (Изолированный) или Gateway (Шлюз) и разбивка диска с последующим выбором сервисов. При использовании режима Gateway необходимо использовать как минимум два сетевых адаптера. В этом режиме обеспечивается общий доступ в интернет, с контролем входящих и исходящих соединений.
При разбивке дисков следует внимательно отнестись к автоматическому режиму - вся информация на них будет уничтожена. Возможен ручной режим при помощи Disk Druid. Выбор сервисов зависит от того, какие функции вы хотите возложить на сервер.
После копирования файлов и перезагрузки вы можете локально войти в систему под учетной записью root используя приглашение ввести пароль. Здесь можно настроить сетевые интерфейсы и изменить роль сервера (Standalone/Gateway). Также присутствует анализатор трафика и естественно консоль.
Для настройки сервера предусмотрен web-интерфейс. Он доступен по умолчанию только на внутреннем интерфейсе (если есть необходимость входа с внешнего интерфейса потребуется в Firewall Incoming открыть 81 порт). Для входа наберите в адресной строке браузера https://(ip-адрес вашего сервера):81. При первом входе используйте логин root с паролем заданным во время установки, а в дальнейшем рекомендуется создать профиль с правами администратора и пользоваться им.

2.Первичная настройка

После входа в web-интерфейс перейдите в меню Reports, пункт Current Status — вы попадете в общие сведения об установленной системе. Здесь можно увидеть аппаратную конфигурацию вашего сервера, время работы с момента последней перезагрузки и информацию о файловых системах и точках монтирования. На статус использования памяти равный 99% не стоит реагировать её увеличением, все равно она будет использована вся без исключения. Так-же присутствует статус сетевых интерфейсов и объем трафика прошедшей через них.
Первое ваше действие после установки будет заключаться в регистрации системы на сайте (бесплатно) и загрузки необходимых обновлений. Идем на сайт www.clarkconnect.com, далее во вкладку Login и выбираем пункт Create account. После получения логина и пароля используем их при регистрации в web-интерфейсе зайдя в меню Services, пункт Register System. После завершения регистрации переходим к пунктам Critical Updates и Recommended Updates. Выбираем все обновления и устанавливаем их. В разделе Software Modules можно посмотреть и установить дополнительные модули.

3.Настойка модулей.

После обновления системы переходим в меню System во вкладку Running Services. На этой странице мы можем видеть состояния сервисов и управлять их запуском, а по ссылке Configure переходить к страницам их конфигурирования. В web-интерфейсе реализованы лишь базовые функции их настроек, которых достаточно для обеспечения начального функционирования. Для желающих осуществить более полноценное управление сервисами есть командная строка доступная по SSH.
Не забудьте воспользоваться меню Account Manager для создания администраторского и пользовательских профилей и групп. Помните,что например в web-почту https://(ip-адрес вашего сервера):83 невозможно авторизоваться под учетной записью root.

4.Общий доступ в Интернет.
Если при установке Clarkconnect вы выбрали роль сервера Gateway. то для обеспечения общего доступа в интернет все базовые настройки уже присутствуют.
Firewall уже настроен для блокирования запросов по всем портам за исключением порта 1875 требуемым для взаимодействия с www.clarkconnect.com. Исходящие соединения разрешены все. Управление модулем Firewall достаточно простое и не вызовет трудностей.
При помощи Network Tools вы можете увидеть активные соединения, таблицу маршрутизации и статистику протоколов.
Также доступно перенаправленные портов и выделение пользователям/ip-адресам/портам полосы пропускания с приоритетом использования. Например, если в вашей сети работает телефонный сервер Asterisk то его ip-адресу или порту (sip-5060) можно установить высший приоритет. Или наоборот пользователю использующему Emule можно ограничить полосу до 64kbit/sec и установить низший приоритет. Все это легко настраивается в меню Network, пункт Bandwidth.
Для экономии трафика и его учета воспользуйтесь модулем Proxy Server. При включении прозрачного прокси-сервера вы сможете просматривать статистику по пользователям/ ip-адресам/именам компьютеров в меню Report пункт Proxy Report.
Для распознавания/блокирования атак используется модуль Intrusion Detection/Prevention. Всем распознаваемым атакам присваивается код атаки, обозначение которого можно посмотреть нажав на него. IP-адреса с которых обнаружены атаки блокируются на 24 часа.
Ознакомиться со статистикой работы всех систем сервера можно в меню Report, пункт Statistics(графическое представление). Лог файлы там-же в пункте Logs.

Средствами ОС Linux легко раздать интернет в локальную сеть, как по проводным сетям, так и по wi-fi. В настоящее время появилось много роутеров, которые способны выполнить такую задачу.

Но у них тоже есть недостатки - некоторые без причин регулярно подвисают, требуя перезагрузки, у других функционал настроек доступа ограничен. Так что если есть желание полностью контролировать раздачу интернета в локальную сеть, лучшим вариантом будет настроить интернет шлюз на Linux.

Способов настройки множество, все зависит от квалификации того, кто будет ее производить. Есть специальные дистрибутивы, в которых организовать подобный доступ можно через работу мастера или через web-интерфейс, есть графические программы для организации интернет шлюза. Но в основе всего лежит один принцип работы.

Настройка интернет шлюза на Linux

Раздача интернета производится в Linux с помощью файрволлов. Их несколько видов, но основным, который постоянно развивается, дополняется новыми функциями, и в тоже время прост в настройке, является iptables .

В iptables раздать интернет можно с помощью трансляции сетевых адресов - NAT, а сам метод называется IP маскарадинг. Но кроме самой настройки правил iptables нужно загрузить модули ядра, отвечающие за трансляцию сетевых адресов (по умолчанию они отключены).

Самый простой способ - это сохранение настроек iptables и загрузки модулей ядра в конфигурационный файл. Затем только останется настроить его выполнение при каждом запуске компьютера. И естественно, на компьютере должны быть установлены две сетевые карты - с одной получают интернет, а другая будет раздавать интернет в локальную сеть. Или одна, если доступ в интернет организован c юсб-модема.

Вот пример, надо учесть, что в этом случае iptables установлен, но не настроен.

Процесс самой настройки интернет шлюза
Открываем консоль с правами администратора, создаем файл командой:

Touche /etc/nat.sh
Открываем в знакомом редакторе, здесь пример для nano:

Nano -w /etc/nat.sh
И вписываем в него строки

#!/bin/bash
Объявим переменные, пути для нужных исполняемых файлов и обозначения сетевых интерфейсов:

IPT=/sbin/iptables MDB=/sbin/modprobe
eth0 будем считать тот интерфейс, по которому интернет приходит на компьютер, а eth1 подключен к локальной сети, куда будет раздавать трафик интернет шлюз на Linux:

EX="eth0" INT="eth1"
Подгружаем нужные для NAT модули ядра:

$MDB ip_tables $MDB ip_conntrack $MDB ip_conntrack_ftp $MDB ip_conntrack_irc $MDB iptable_nat $MDB ip_nat_ftp $MDB ip_nat_irc
Разрешаем форвардинг пакетов:

Echo "1" > /proc/sys/net/ipv4/ip_forward echo "1" > /proc/sys/net/ipv4/ip_dynaddr
Сбрасываем все настройки iptables:

$IPT -P INPUT ACCEPT $IPT -F INPUT $IPT -P OUTPUT ACCEPT $IPT -F OUTPUT
В iptables правила настраиваются так - сначала запрещаются все соединения, а затем создаются правила, которые разрешают то или иное соединение

Устанавливаем блокировку на все цепочки:

$IPT -P INPUT DROP $IPT -P FORWARD DROP $IPT -P OUTPUT ACCEPT
далее пойдут разрешающие правила:

Сначала общие, не раздающие интернет, а разрешающие прохождение пакетов из внешнего интерфейса:

$IPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT $IPT-A INPUT -i lo -j ACCEPT $IPT -A INPUT -m conntrack --ctstate INVALID -j DROP $IPT -A INPUT -p tcp -m multiport --dports 21,22,1024:6800 -j ACCEPT $IPT -A INPUT - multiport --dports 21,80,8080,443,3306,8000,411,22,27015,26016 -j ACCEPT
А вот на каких правилах будет основан интернет шлюз на Linux - разрешаем форвардинг пакетов c внешнего соединения в локальную сеть:

$IPT -A FORWARD -i $EX -o $INT -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -i $ EX -o $ INT -j ACCEPT
Включаем трансляцию адресов:

$ IPT -t nat -A POSTROUTING -o $EX -j MASQUERADE
Теперь сохраняем файл, делаем его исполняемым, chmod +x /etc/nat.sh, добавляем строчку sh /etc/nat.sh в файл rc.local до строки exit 0. Перезагружаемся и проверяем, есть ли интернет в локальной сети.

Это самый простой способ, можно организовывать контроль доступа, как компьютеров, так и сайтов c нежелательным контентом, ведение мониторинга соединений, но для этого лучше использовать интернет шлюз на Linux c прокси-сервером , например SQUID.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то