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

Дано: 1. Компьютер с двумя сетевыми картами. 2. Дистрибутив Debian или Ubuntu Linux. (я бы всё-таки советовал для сервера Debian) 3. Прямые руки и свежая голова.

Итак, приступаем!
Для начала перво-наперво установим Linux на компьютер, указав при этом все настройки сети. Я рекомендую устанавливать Debian, и в момент запроса у нас выбора необходимых пакетов, установим только основные компоненты системы и openssh-server. Всё, больше для работы шлюза на linux нам ничего не надо. Никаких графических оболочек. Устанавливать будем напрямую, а подключаться потом можно по ssh для управления удалённым сервером, или если не подключены клавиатура, мышь и монитор. Установка Debian на компьютер немногим отличается от установки Ubuntu.

Установив Linux на компьютер мы должны сделать его шлюзом. Для это он должен кое-что уметь.
1. Пропускать сетевые пакеты через себя. (FORWARD)
2. Транслировать сетевые адреса (преобразовать адреса локальной сети в 1 внешний адрес, под которым пользователь будет выходит в сеть). Иными словами шлюз (gateway) пускает через себя пользователей локальной сети под своим адресом. Можете назвать это программным роутером или как вам будет угодно. Служба эта называется NAT (Network Address Translation).

Но обо всём по порядку. Для начала настроим сетевые интерфейсы. Настройки локальной сети берёте у себя, настройки интернет - у провайдера. Если выход в интернет не по ip-авторизации, а через xDSL соединение, то используйте утилиту pppoeconf.

Представим, что у нас есть 2 настроенных сетевых интерфейса. Это локальный (eth0) и внешний (eth1). Интернет на шлюзе есть, яндекс пингуется, гугл туда же. Практически последняя задача - заставить наш шлюз на Linux пускать всех в инет через себя. Вот здесь хочу отметить, что на linux есть свой файрволл, и называется он iptables. По умолчанию iptables работает таким образом - "К себе никого не пущу, кроме как по тем соединениям, что были инициированы мной!" Но так не пойдёт) Поэтому настраиваем iptables:

Поехали:
1. Создаем файл с именем firewall.sh в папке /etc/init.d/

# touch /etc/init.d/firewall.sh

2. Даём права на запуск

# chmod 755 /etc/init.d/firewall.sh

3. Добавляем наш скрипт в автозагрузку. На всякий случай:)

# update-rc.d firewall.sh defaults

4. Ну и, собственно, редактируем наш скрипт.

# nano /etc/init.d/firewall.sh

Дадим ядру понять, что это реально.sh скрипт

# !/bin/sh (вот здесь прямо так вместе с символом # и пишем внутри! Это тот тип комментария, который нужен ядру)

Включим форвардинг в линукс.

echo 1 > /proc/sys/net/ipv4/ip_forward (1 - вкл, 0- выкл:))

Сбросим все настройки входящих, исходящих и форварда. Это поможет нам избавится от "неправильных" правил iptables, набранных в консоли. Просто запустим скрипт, и правила обновятся:

iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD

Политика по умолчанию - форвард разрешён:

iptables -P FORWARD ACCEPT

Добавим новое правило постмаршрутизации в сетевую таблицу "nat". Логика правила такая: С источника "локальная сеть" исходящие пакеты через внешний интерфейс должны "натиться" (передваться как один внешний), но мы будем маскарадить. Маскарад (MASQURADE) даёт возможность корректной работы с динамическим внешним ip адресом. iptables -A (новое правило) POSTROUTING (постмаршрутизации) -t (таблицы...) nat (...NAT) -s (source - с источника) 192.168.1.0/24 (всей локальной сети) -o (output - через исходящий...) eth1 (...интерфейс eth1) -j (job -работа (что делать?)) MASQUERADE (маскарадить). Т.е. получается такое правило iptables:

iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth1 -j MASQUERADE

Собственно всё. Можно ещё добавить в конец скрипта что-то вроде оповещения, которое будет говорить о том, что скрипт сработал:

echo firewall rules accepted
Сохраняем и закрываем. (Если редактировали через nano, как в этой статье, то жмём ctrl+o (сохранить) ctrl+x (закрыть)).
Теперь запустим наш скрипт

/etc/init.d/firewall.sh

Увидели сообщение "firewall rules accepted"? Никаких ошибок не было? Поздравляю! Шлюз на linux готов! Теперь все компьютеры из вашей локальной сети смогут ходить в интернет, правда совсем без каких либо ограничений. И да, если в вашей сети нет DNS сервера, то в настройках клиента нужно указать DNS сервера провайдера или например, DNS сервер Google ;) (адрес легко запомнить - 8.8.8.8)

iptables -A FORWARD -p igmp -i eth0 -o eth1 -j ACCEPT
iptables -I INPUT -d 224.0.0.0/4 -j ACCEPT
iptables -I FORWARD -d 224.0.0.0/4 -j ACCEPT
route add -net 224.0.0.0 netmask 240.0.0.0 eth0
iptables -t filter -A INPUT -d 224.0.0.0/240.0.0.0 -i eth0 -j ACCEPT
iptables -t filter -A INPUT -s 224.0.0.0/240.0.0.0 -i eth0 -j ACCEPT
iptables -t filter -A FORWARD -d 224.0.0.0/240.0.0.0 -j ACCEPT
iptables -t filter -A FORWARD -s 224.0.0.0/240.0.0.0 -j ACCEPT
iptables -t mangle -A PREROUTING -d 224.0.0.0/240.0.0.0 -p udp -j TTL --ttl-inc 1

Среди великого разнообразия Linux систем особо популярны специализированные дистрибутивы-роутеры. Такие решения, как правило, имеют небольшой размер, просты и понятны в установке и настройке, а имеющиеся функции позволяют подключить к Интернет домашнюю/корпоративную сеть, защитив ее от сетевых атак и вирусов. Дополнительно многие из них имеют функции контроля трафика, блокировки протоколов, антиспам фильтр, шейпер и много другое. Поэтому выбрать «своего защитника» достаточно не просто. Эта статья поможет тебе быстрее сориентироваться.

Untangle Gateway 7.0.1

ОС : Untangle Gateway 7.0.1
Сайт проекта : www.untangle.com
Дата выхода : 20 октября 2009 года
Лицензия : GPL
Аппаратные платформы : x86_32
Системные требования : CPU 800 МГц, 512 Mб RAM, 20 Гб диск, 2+ NIC

Дистрибутив Untangle, выпускаемый одноименной компанией, способен заменить коммерческие решения вроде ISA Server (Forefront TMG), обеспечивая безопасный доступ в Интернет. Рассчитан Untangle на небольшие и средние организации, имеющие 50-300 и более компьютеров (системные требования приведены для 50). Основой Untangle послужил Debian, все настройки производятся при помощи понятного, хотя и нелокализованного интерфейса. Для управления достаточно понимать суть, глубоких знаний Unix систем в обычной ситуации не потребуется. В отличие от других решений, использующих веб-технологии, интерфейс Untangle написан на Java, поэтому все изменения в консоли управления, статистика работы и так далее выводятся в реальном времени, что очень удобно. Хотя за использование Java пришлось заплатить повышенными системными требованиями.
Untangle выполнен в виде конструктора. После установки базовой системы в нем отсутствуют модули защиты, администратор самостоятельно выбирает то, что действительно необходимо, ориентируясь по задачам и имеющемуся оборудованию. В Untangle можно добавить 94 пакета (19 приложений), которые обеспечат: маршрутизацию, антивирусную/антифишинг/spyware защиту, обнаружение атак, анализ протоколов (7 уровень), контентную фильтрацию веб-трафика, VPN-подключения и многие другие функции. В их основе лежат популярные OpenSource приложения — Snort, ClamAV, SpamAssassin, Squid и т.д. От DoS’а и некоторых низкоуровневых сетевых атак защищает модуль собственной разработки «Attack Blocker», который предлагается бесплатно. Антиспам фильтр распознает спам в изображениях, для чего он подключается к OCR. Модуль анализа протоколов при необходимости способен ограничить работу любых протоколов прикладного уровня (P2P, IM и т.п., всего ~100 протоколов), даже если они используют нестандартные порты.

По подписке распространяются некоторые проприетарные разработки — антивирус Касперского, eSoft Web Filter, модуль для работы с Active Directory, резервирование настроек и т.д. Для удобства имеются и готовые «сборки» модулей, предназначенные для различных сетей — Educations, Small Business, Professional , Government (в разных вариантах поставки, распространяются также по подписке). Бесплатный модуль Reports позволяет админу получать отчеты по всем возможным ситуациям — сетевой активности, протоколам, обнаруженному спаму и вирусам, активности пользователей. Результат можно сохранить в файлы форматов PDF, HTML, XLS, CSV и XML и отправить по e-mail.
Установка дистрибутива достаточно проста и занимает минимум времени: традиционно следуем по подсказкам мастера (во время установки можно выбрать русский язык), отвечая на вопросы. По ходу будут проверены системные требования, во всех позициях должно стоять ОК. Далее форматируем жесткий диск, процесс автоматизирован, для чего достаточно нажать кнопку «Продолжить «.
После перезагрузки активируется мастер, задача которого — помочь в настройке шлюза. В списке предложенных языков понятен только англицкий, русского здесь уже нет. Далее последовательно набираем пароль для учетной записи admin, выбираем часовой пояс, вводим регистрационную информацию (обязательны e-mail и количество компов). После этого система распознает сетевые карты и назначает их — External/Internal (при наличии третьего сетевого интерфейса можно без особых проблем организовать демилитаризованную зону). Используя мышку, назначение можно поправить, только вот определить, где какая из карт при имеющейся информации невозможно. Указываем тип интернет-подключения (DHCP, PPPoE, Static), для проверки нажимаем «Testing Connectivity «. На шаге «Internal Network » потребуется выбрать один из двух вариантов применения Untangle: Transparent Bridge или Router . При выборе второго варианта нужно указать IP-адрес интерфейса внутренней сети и опционально активировать встроенный DHCP сервер. И последний этап — отправка тестового сообщения по e-mail, по умолчанию используется внутренний SMTP, но можно указать и любой внешний. По окончании загружается консоль управления. Слева две вкладки. В Apps выбираем и устанавливаем пакеты, в Config — производим настройки. Все разбито по пунктам, поэтому найти нужные установки и разобраться весьма просто. Например, для настройки Firewall переходим в одноименную вкладку. Система сразу же предложит скачать требуемый пакет. Нажимаем «Free Download», по окончании загрузки в центре окна появится ярлык для настройки компонента.
Аналогичным образом ставим все необходимое — Attack Blocker , Protocol Control , OpenVPN, Reports и т.д. Для настройки модуля выбираем его и щелкаем по кнопке Setting. Например, в Firewall уже имеются 3 подготовленных правила (блокировка входящих соединений на 21 порт, блокирующий и разрешающий рулесеты для входящего трафика с сети 1.2.3.0). Их можно взять за основу, отредактировав или создав свое правило по аналогии. Правило создается очень просто, нажимаем Add и заполняем соответствующие поля. Здесь же в подвкладке «Event Log » можно просмотреть связанные события.
Если закрыть окно веб-клиента, перед нами появится рабочий стол. В панели несколько ярлыков, назначение которых носит больше вспомогательный характер — запуск и останов скринсейвера, восстановление, изменение разрешения и т.п.

Endian Firewall Community 2.3

ОС : Endian Firewall Community 2.3
Сайт проекта : www.endian.com/en/community/overview/
Дата выхода : 27 октября 2009 года
Лицензия : GPL
Аппаратные платформ ы: x86_32
Системные требования : CPU 166 МГц, 64 Mб RAM, 2 Гб


Основой Endian Firewall (EFW) изначально служил IPCop Firewall, в котором разработчики решили усилить функции безопасности и юзабилити интерфейса. Сегодня от родства уже мало чего осталось, а EFW строится на базе CentOS и включает полный набор средств защиты от внешних угроз, что позволяет относить его к UTM системам (Unified Threat Management). Это stateful пакетный фильтр (netfilter), IDS/IPS (Snort), фильтр контента, антивирусная проверка HTTP/FTP/POP3/SMTP трафика, защита от спама, антиспуфинг и антифишинг модули. Политики фильтрации и маршрутизации позволяют указать практически всю актуальную информацию — протокол, порт, сетевой интерфейс, IP- и МАС-адреса. Предусмотрена возможность настройки ACL к сайтам через HTTP Proxy (прозрачный или непрозрачный) с привязкой к пользователю, группе, по адресу, useragent, времени. Контентный фильтр содержит готовые настройки для более чем 20 категорий и подкатегорий.
Подключение к Интернет реализовано посредством Ethernet, PPPoE, ADSL (USB, PCI), ISDN, модема, в том числе и 3G. Внешнему интерфейсу можно назначить несколько IP-адресов (IP-алиасинг). Кроме локальной (NCSA) аутентификации пользователей, предусмотрена поддержка Active Directory, LDAP и RADIUS. Добавим к этому списку создание и управление VLAN, полноценное управление QoS, поддержку SNMP. В составе EFW находим два приложения для организации защищенного VPN соединения — OpenVPN и Openswan/Pluto (реализация IPsec для Linux).
Ведется статистика по соединениям, трафику, работе пользователей. При наступлении определенных событий на e-mail админа отправляется сообщение.


Зашифрованный архив с настройками бэкапится на USB флэшку или засылается на e-mail, так что при необходимости восстановить работу шлюза можно буквально за пару щелчков мышки.
Управление системой предусмотрено из командной строки или через локализованный веб-интерфейс.
Установка производится при помощи мастера с псевдографическим интерфейсом и достаточно проста для неискушенного пользователя. Загружаемся и подтверждаем форматирование диска, после чего начнется копирование системы, по запросу указываем IP-адрес GREEN (внутреннего) интерфейса. Вот и вся установка. После перезагрузки в консоль будут выведены данные для регистрации через веб (http://ip-адрес/ или https://ip-адрес:10443 ). Предлагаемое консольное меню позволяет выйти в shell, установить пароль учетных записей root (для SSH) и admin (веб). Набрав в браузере предоставленный адрес и пройдя несколько шагов, завершаем установку — выбираем язык (есть русский), часовой пояс, соглашаемся с условиями лицензии GNU GPL. Далее мастер предлагает импортировать настройки из бэкапа, говорим «Нет » и указываем пароли для root и admin.
Теперь настал черед «Мастера настройки сети «, упрощающего процесс подключения к сети. С ним необходимо пройти 8 шагов, например, выбрать тип подключения RED (внешнего) интерфейса и отметить, есть ли в наличии WiFi (BLUE) и DMZ (ORANGE). При необходимости изменяем настройки GREEN, присутствует возможность «переназначить» карту и указать алиасы, задать имя хоста. Аналогично повторяем эту операцию для других интерфейсов, вводим адреса основного и резервного DNS серверов, e-mail админа. Все. После регистрации с учетными данными admin попадаем на главную страницу консоли управления, где выводятся обновляемые в реальном времени графики по трафику, данные по состоянию служб и загрузке системы. Настроек достаточно много, но все они удачно распределены по группам, названия которых говорят сами за себя — Система, Статус, Компьютерная сеть, Службы, Межсетевой экран, Прокси, VPN и События. Поэтому справиться с дальнейшими настройками EFW достаточно просто.

IPCop Firewall 1.9.8

ОС : IPCop Firewall 1.9.8
Сайт проекта : www.ipcop.org
Дата выхода : 29 октября 2009 года
Лицензия : GPL
Аппаратные платформы : x86_32
Системные требования : Intel Pentium II 233 МГц, 64 Mб RAM, 2 Гб


Версия IPCop 0.1.1 (2002 год) базировалась на SmoothWall 0.9.9, затем проект полностью перешел на LFS и сегодня о родстве уже мало, что говорит. Дистрибутив ориентирован на рынок SOHO (Small Office, Home Office), поэтому основная задача разработчиков — сделать интерфейс удобным и простым. В поставке имеется все необходимое для организации защищенного шлюза — фильтр пакетов, IDS/IPS, веб и DNS прокси, DHCP сервер/клиент, Openswan, OpenVPN, ограничение трафика, NTP сервер. Реализован контроль соединений через веб-прокси по IP-адресам и имени системы.
Все, чего не хватает в базовой поставке, доступно в аддонах (sf.net/apps/trac/ipcop/wiki/Addons ), которые разрабатываются и поддерживаются, как правило, сторонними программистами. Здесь уже находим фильтр URL, продвинутые настройки firewall, проверку веб и SMTP трафика на вирусы и многое другое. Как и в EFW, интерфейсы имеют цвета — GREEN, RED, ORANGE (DMZ) и т.д. Внешний интерфейс поддерживает подключение по Ethernet (статический, DHCP), PPTP, PPPoE, ISDN, а также посредством модемного соединения. Некоторые операции (подключение, отключение, обновление и т.п.) можно выполнять по расписанию.
До недавнего времени стабильной версией считалась 1.4.20 (с обновлением до 1.4.21), сегодня активно разрабатывается версия IPCop v2, с релизом 1.9.8 мы и познакомимся.
Для загрузки доступны не только традиционные ISO (размер 50 Мб), но и образы для сетевой загрузки, установки на USB флэшку/хард и некоторые другие.
Процесс установки производится в псевдографической консоли и весьма тривиален. По окончании набираем в браузере адрес https://айпишник_шлюза:8443/ . Для локализации интерфейса следует перейти в System — GUI Setting и выбрать в списке русский язык.
Консоль управления достаточно проста. Вверху 7 вкладок (Система, Состояние, Сеть, Сервисы, Файервол, ВЧС, Логи ), при наведении мышки на любой появляются подпункты. Например, чтобы настроить OpenVPN, переходим в нужную вкладку, где установив флажок «OpenVPN on RED «, активируем сервер.


Теперь указываем дополнительные параметры (IP-адрес внешней и внутренней сети, протокол, алгоритм шифрования, сжатие передаваемых данных с помощью библиотеки LZO и т.п.) Переход по «Advanced Server Options » позволит более тонко настроить работу OpenVPN сервера. Также просто в «Файервол — Firewall Rules » настраиваются правила пакетного фильтра. Выбираем тип правила (Outgouing Traffic, Перенаправление портов, IPCop Access, External IPCop Access ) и заполняем предложенные поля.

SmoothWall Express 3.0 SP1 «Polar»

ОС : SmoothWall Express 3.0 SP1
Сайт проекта : smoothwall.org
Дата выхода : 8 января 2009 года
Лицензия : GPL
Аппаратные платформы : x86_32, x86_64
Системные требования : Intel Pentium 166 МГц, 32 Mб RAM, 2Гб HDD


Проект, возникший в середине 2000 года, ставил перед собой цель превратить устаревший компьютер в полноценный шлюз с функциями защиты, с настройками которого мог бы справиться обычный пользователь. Начинание имело успех. За первые месяцы с SourceForge было скачано несколько десятков тысяч копий. Хотя удобным веб-интерфейсом, IDS/IPS и некоторыми другими полезными функциями SmoothWall обзавелся чуть позже (с версии 0.9.9). А так в составе SmoothWall имеется все необходимое — firewall, форвардинг портов, поддержка VPN, Web/DNS/SIP/POP3 прокси, IM прокси (MSN/AIM/ICQ/Yahoo) с готовыми фильтрами и журналированием трафика (на базе IMSpector), DHCP сервер, NTP, поддержка QoS. Возможна установка доступа выхода в Интернет для определенных адресов в зависимости от времени суток. При необходимости трафик проверяется при помощи антивируса Clamav.
Как и в двух предыдущих дистрибутивах, поддерживается до 4 сетевых подключений: WAN, LAN, DMZ, WiFi. «Красный» интерфейс можно закрепить за: Ethernet (static, DHCP), PPPoE, ISDN, ADSL или модемным соединением.
Сам релиз 3.0 вышел в конце 2007 года, сегодня доступна свежая версия с SP1. Кроме ISO (x86, x86_64), на отдельной странице доступен образ VMWare.
Установка достаточно проста, несколько раз нажимаем ОК и все, процедура завершена. Далее идут первичные настройки — раскладка, hostname и выбор политики исходящего трафика:

Open — весь исходящий трафик разрешен;
Half-Open — разрешено подключение только по основным портам, потенциально опасные соединения блокированы;
Closed — все исходящие соединения блокированы.

Затем настраиваем тип сети. Предлагается несколько комбинаций интерфейсов и типов соединений (GREEN + RED, GREEN + RED + ORANGE и т.п.) После чего распределяем сетевые устройства по назначению, указываем адреса интерфейсам (где нужно) и адреса шлюза и DNS сервера. Указываем пароль для пользователей root и admin . После перезагрузки для дальнейших установок вызываем браузер и набираем http://ip-адрес:81/ или https://ip-адрес:441 .


Веб-интерфейс не локализован, но достаточно прост. Выбираем одну из основных вкладок (Control, About, Services, Networking, VPN, Logs, Tools, Maintenance ) и получаем доступ к настройкам. По умолчанию Snort не активирован, необходимо перейти в Services — IDS , установить флажок «Snort » и ввести «Oink code «. Настройки правил брандмауэра производятся в Networking , выбираем нужное направление (например, outgoing) и заполняем предложенные поля. Использование AJAX позволяет админу просматривать графики загрузки каналов в реальном времени (вкладка About ). Доступна статистика трафика по любому IP-адресу, за любой период времени. Обновление дистрибутива производится нажатием одной кнопки в Maintenance — Updates .

Vyatta CE 5

ОС : Vyatta Community Edition 5.0.2
Сайт проекта : www.vyatta.org
Дата выхода : 9 марта 2009 года
Лицензия : GPL
Аппаратные платформы : x86_32
Системные требования : Intel Pentium III 450 МГц, 128 Мб ОЗУ и 2 Гб, 2+ NIC

Разработчики дистрибутива Vyatta решили составить конкуренцию не кому-нибудь, а самой Cisco Systems. Взяв за основу Debian, они интегрировали его со свободно распространяемой платформой маршрутизации XORP (eXtensible Open Router Platform , xorp.org), разработкой которой занимается группа в ICSI (International Computer Science Institute) Беркли при финансировании такими гигантами, как Intel и Microsoft. Установив Vyatta на x86 компьютер, получаем маршрутизатор с функциями IDS/IPS (на базе Snort), кэширующий прокси и фильтр URL (Squid + SquidGuard ), сетевые политики (Network Access Policies ), OpenVPN, DNS Forwarding, Ethernet Bonding и Bridget Ethernet over ADSL (RFC 2684). Поддерживаются мультипортовые карты (T1/E1, T3 и др.) и беспроводные 3G модемы.
Первые версии Vyatta настраивались исключительно посредством командной строки (как маршрутизаторы Cisco). Затем с версии 4 стал доступен веб-интерфейс (для этих целей в состав включен lighttpd). Особо подчеркивается поддержка популярных сегодня виртуальных машин — VMware, Xen, Hyper-V и некоторых других гипервизоров. Дистрибутив может работать с LiveCD с сохранением настроек на флэшку или другой носитель (файл config.boot ). Возможна установка на хард, USB-брелок или карту Compact Flash. При наличии двух дисков установщик позволяет их автоматически связать в RAID 1.
Проект предлагает коммерческую поддержку и продает роутеры с предустановленным ПО. Для свободной загрузки и использования доступна версия Vyatta Community Edition (ISO, образы Citrix XenServer и VMWare).
Процесс установки достаточно прост, хотя и производится при помощи командной строки. Регистрируемся как root с паролем vyatta и запускаем инсталлятор:

# install-system

Далее подтверждаем установку и приступаем к созданию разделов. По умолчанию стоит Auto. Введя «Yes», подтверждаем уничтожение данных на диске, указываем размер корневого раздела (по умолчанию весь диск) и ждем, пока скопируются данные. Затем устанавливаем пароли пользователей root и vyatta, водружаем GRUB, после чего перезагружаемся и переходим в режим конфигурирования:

# configure

Настраиваем сетевой интерфейс:

# set interfaces ethernet eth0 address 192.168.1.1/24 # set interfaces ethernet eth0 description LAN

Включаем веб-интерфейс:

# set service https

Аналогично включаются и остальные сервисы — nat, dns, dhcp-relay, dhcp-server, webproxy, ssh. В консоли доступно автодополнение: нажимая, получаем список возможных значений. Подтверждаем все установки.

# commit

Смотрим, что получилось:

# show interfaces

Все настройки можно вывести, набрав show-all . Выходим из режима редактирования по команде exit. Теперь вызываем браузер и настраиваем параметры при помощи веб-интерфейса. Выбираем нужную категорию и нажимаем кнопку Create, после чего заполняем предложенные поля. Кнопка Show в самом верху покажет конфигурационный файл, в котором знаком «+» будут подсвечены добавленные, но еще неактивированные параметры. Чтобы привести их в действие, нажимаем кнопку Commit (отмена — Discard).


На мой взгляд, проще ввести в командной строке:

# set firewall name allow rule 10 action accept # set firewall name allow rule 10 source address 192.168.0.0/24 # set interfaces ethernet eth0 firewall in name allow # commit

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

Заключение

Победителя каждый выберет себе сам, исходя из конкретных задач. Мне лично нравится Vyatta за гибкость и Cisco-подобные команды, Endian Firewall и Untangle — за оснащенность. Тем, кому нужны простота в настройках, присмотритесь к SmoothWall и IPCop.

  • Два домашних компьютера с ОС 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 прописывать руками.

Итак наша задача — сделать из компьютера под управлением Debian / Ubuntu (буду писать для Debian) шлюз или программируемый роутер для раздачи интернетов в локальную сеть. Рассмотрен пример с двумя сетевыми картами в раздающем (шлюзовом) ПК.

Если вы не укажите это, а провайдер автоматом вам не транслирует нс-сервера, то вы попросту не сможете ни работать в интернете, не пинговать внешние ресурсы. В общем пробуйте!

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

Итак, машинка доступна во внутренней сети, на самой машинке у нас есть интернет (проверить легко, залогиньтесь на нее по ssh и попингуйте яндекс например). Как нам раздать то интернет в локалку теперь? Проще простого! Воспользуемся специальной псевдо графической утилитой arno firewall.

apt-get install arno-iptables-firewall

P.s. Чтобы в дальнейшем реконфигурировать файрволл для добавления новых портов например, вводим команду: dpkg-reconfigure arno-iptables-firewall

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

На вопросы с DHCP отвечаем да , NAT — включить да, пинговать ли снаружи, как хотите, если будете с внешки лазить в офис / домой то да, в противном случае нет. Далее вас попросят указать, какие порты надо открыть для TCP и UDP подключений (входящего и исходящего траффика). Как правило у каждой программы есть свой порт, который указан в хелпе к ней, а так же имеется набор стандартных портов. 80 / 8080 https, 22 FTP, 21 SSH и так далее. Открывайте порты какие вам нужны. Обращаю ваше внимание еще раз на то, что если какая то программа будет пробовать что-то скачать / закачать через неуказанный тут порт, то у вас ничего не выйдет.

Номера портов разделяются пробелами а диапозоны через двоеточие между цифрами (без пробела). Так же удостоверьтесь что записи портов аналогичны и для UDP и для TCP вкладок, иначе будут казусы в духе того, что информацию программа отправляет, а получить не может — и наоборот.

Далее нас спросят о правилах CIDR и внутренней подсети. У нас внутренняя подсеть это 192.168.0.0/24 (это вписываем туда), эта запись позволит всем компьютерам сети 192.168.х.х получать внешнюю информацию. Вы можете так же отдавать интернет только избранным компьютерам или устройствам с определенным сетевыми адресами, укажите их тут же, строго ограничив адресацию.

А получилось следующее — на компьютере в локальной сети я указал явно адрес и шлюзом выставил наш раздающий компьютер-роутер с адресом 192.168.0.1 , НС-сервера на компьютере клиенте я установил провайдерские и ns-сервера гугла (адрес 8.8.8.8). И вуа-ля, интернет есть на нем.

Однако попробовав приконнектиться к сети с устройством, которое не умело само задавать себе адрес и шлюз, меня ждал облом! Раздачу адресов то мы не настроили. А это уже в следующей статье — сервера.

В этой заметке будет рассказано как с помощью 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 будут подниматься автоматически.




Top