Программный интернет шлюз для уже не маленькой компании (Shorewall, OpenVPN, OSPF). Часть 1
Представляю пока две статьи, ориентированных на «продолжающих» системных администраторов, для опытных я вряд ли открою что-то новое.
В этих статьях мы рассмотрим построение интернет шлюза на linux, позволяющего связать несколько офисов компании, и обеспечить ограниченный доступ в сеть, приоритезацию трафика (QoS) и простую балансировку нагрузки с резервированием канала между двумя провайдерами.
Конкретно в этой части:
- Простейшая настройка Shorewall
- Ужасно сложная настройка dnsmasq
- Не менее сложная настройка OpenVPN
- И для многих продолжающих админов нетипичная, динамическая маршрутизация, на примере OSPF
А во второй части будут рассмотрены:
- Более подробная настройка Shorewall
- Страшный и не понятный QoS
- Балансировка нагрузки и резервирование
В третьей части:
- QoS во всю ширь в Shorewall
- Более подробная настройка Shorewall
- Раскидывание трафика по каналам в соответствии с протоколами
- Костыли, без них, никуда
В четвертой части:
Настройка транкового шлюза Eltex SMG и asterisk
- Автоматические события
- Макросы
Все описанное ниже справедливо для CentOS 7.1 (и выше, 6 серия тоже подойдет, но с небольшими особенностями)
Исходим из того, что у нас:
- Локалка первого филиала: 172.16.0.0/23
- Подсеть OpenVPN первого филиала: 172.16.3.0/25
- Второй филиал соответственно: 172.16.8.0/23 и 172.16.11.0/25
Вообще мой ip план подразумевал резервацию /21 сети для каждого филиала из диапазона 172.16.0.0/12. Каждый диапазон /21 нарезается на подсети для различных нужд (подробнее в следующей статье).
Простейшая настройка Shorewall
Для тех кто не слышал раньше, Shorewall это надстройка над утилитой iptables для конфигурирования NetFilter в ядре Linux. Сама по себе iptables не слишком сложная, но когда конфигурация шлюза становится большой и от этого сложной, разобраться в таком объеме команд iptables становиться не просто.
На помощь в таких ситуациях приходят различные самопальные скрипты или, уже давно не самопальные, системы аналогичные Shorewall.
В Shorewall все вертится вокруг понятия «зона». В зону включаются хосты (путем задания интерфейсов или непосредственно сетей и/или отдельных адресов).
Ключевые слова значат следующие:
- ACCEPT — принимать (в том числе форвардить) пакеты
- REJECT — Отбросить пакет, а отправителю сообщить, что писем мы от него не ждем
- DROP — Отбросить пакет, и загадочно осмотревшись, никому ничего не сказать
В третий столбец можно прописать еще несколько параметров, один из которых info, задаст логирование данной политики (имеет смысл для DROP и REJECT, а то ACCEPT завалит вас логами).
Заданная политика примитивна и не годится для серьезных проектов, соответствует настройке большинства домашних роутеров, но для самого старта она нам подойдет.
Настройка VoIP шлюзов Eltex. Вебинар
Осталось чуть чуть, а именно настроить маскарадинг (чего в эпоху IPv6 делать будет не надо):
Очевидно, все что идет в сторону интерфейса $IF_RED1 из сети $NET_GRN нужно замаскировать. Третий столбец ADDRESS используется для SNAT.
Для отслеживания и соответствующего изменения правил файрвола, в ответ на включениеотключение интерфейса, нам поможет небольшой скрипт:
Дав команду «systemctl enable shorewall.service systemctl restart shorewall.service», мы применим настройки нашего файрвола, и у нас ничего (ну почти), не заработает, нам не хватает самой малости: нет кэширующего DNS И DHCP серверов (не будем же мы сами все клиентские машины настраивать).
Простейшая настройка dnsmasq
Эта служба очень неплохо справляется со своей задачей, и сеть /23 для неё не является проблемой, а простота и гибкость настроек делает её очень подходящей для нашей ситуации.
Так как файл настроек большой, приведу и его тоже в урезанном виде:
Думаю пояснять тут ничего особо не надо, задали интерфейс, на котором обслуживать DNS и DHCP запросы, задали диапазон раздаваемых адресов, задали некоторые передаваемые в DHCP параметры и задали
Опубликовано: 04.03.2021
Используемые термины: FreeBSD, Маршрутизатор, Firewall. pfSense является программным маршрутизатором/фаерволом на основе операционной системы FreeBSD. Рассмотрим его установку и начальную настройку на виртуальную машину.
Установка
Система распространяется как образ операционной системы, готовой к работе в качестве фаервола/маршрутизатора. Переходим на страницу загрузки pfSense и заполняем форму для получения установщика и нажимаем на DOWNLOAD: * в данном примере мы выбрали архитектуру AMD64 (для всех современных компьютеров архитектуры x86), образ ISO и Нью-Йорк в качестве зеркала загрузки.
Дожидаемся загрузки файла. Если мы выполняем установку на виртуальную машину, то просто монтируем образ ISO. Если же мы будем устанавливать с помощью сменного носителя, то готовим его с помощью специализированных программ, например, WinSetupFromUsb или Rufus для флешки или InfraRecorder для DVD.
Монтируем образ или подключаем установочный носитель, настраиваем БИОС для загрузки с диска или флешки и запускаем установщик — мы должны увидеть сообщение о необходимости принять лицензионное соглашение. Нажимаем Accept: После выбираем, что будем делать.
В нашем случае, выполнять установку: На следующем шаге установщик предложит выбрать раскладку клавиатуры — выбираем вариант по умолчанию:
Выбираем вариант разбивки диска на разделы. В моем случае, это выполняется автоматически:
* при необходимости использовать сервер не только в качестве pfSense (что не рекомендуется) можно самостоятельно разбить диск на разделы.
Начнется процесс установки системы: Дожидаемся его окончания. Процесс займет немного времени. Установщик предложит перейти в командную строку для выполнения ручных настроек — отказываемся:

Настройка подключения к веб-интерфейсу
После загрузки pfSense мы увидим меню настройки. Первое, что нам нужно сделать — настроить сеть и веб-интерфейс. Дальнейшую настройку можно делать в последнем. Выбираем опцию Set interface(s) IP address — номер 2:
Сначала внутренний (LAN): Задаем IP-адрес в соответствии с нашей инфраструктурой:
* в нашем примере мы хотим задать адрес 192.168.0.23. Указываем маску подсети:
* в локальных сетях, как правило, используются маски 24, 23, 22.
Если нужно, прописываем адрес шлюза, в противном случае, просто нажимаем Enter: * обратите внимание, что адрес шлюза на LAN интерфейсе нам нужен только для статических маршрутов. Система нам предложит активировать сервер DHCP для локальной сети.
Если наш pfSense должен выполнять такую задачу, ставим y. Мы же этого делать не будем: Также отказываемся к возврату протокола HTTP как веб-конфигуратора:
Открываем браузер и переходим по адресу нашего сервера https://192.168.0.23 — появится предупреждение о нарушении безопасности.
Просто игнорируем и продолжаем загрузку. Система потребует ввода логина и пароля — вводим логин/пароль admin/pfsense. Готово. Теперь приступим к базовой настройке.
Базовая настройка pfSense
После входа в веб-интерфейс, система может попросить принять условия — просто нажимаем Accept: Для удобства поменяем языковые настройки. Переходим в раздел System — General Setup:
В подразделе «Localization» выбираем наш часовой пояс и язык, с которым нам будет удобнее работать:
Однако, нужно отметить, что для pfSense нет полного перевода и некоторые элементы будут на английском. Для применения настроен кликаем по Save: Теперь сменим пароль по умолчанию для учетной записи admin.
В верхней части интерфейса мы увидим предупреждение — кликаем по Change the password in the User Manager: Вводим дважды новый пароль:
Сохраняем настройки:
Сообщение с предупреждением в верхней части экрана должно исчезнуть. Переходим к настройке Интернет соединения. Кликаем по Интерфейсы — WAN:
В подразделе «Общие настройки» выбираем вариант получения сетевых настроек:
* в нашем примере мы зададим вручную IP-адрес. Если не используется IPv6 — отключаем его (как в данном случае). Ниже задаем IP-адрес (если мы выбрали вариант получения Статический IPv4):
Указываем маску подсети:
Справа от «IPv4 Шлюз» кликаем по Добавить новый шлюз:
В открывшемся окне добавляем адрес шлюза для доступа к сети Интернет и кликаем Добавить:
Сохраняем настройки:
Если для подключения к панели управления по локальной сети требуется статический маршрут, после применения настроек мы можем потерять управление системой. Необходимо заранее позаботиться о добавлении статических маршрутов.
Для того, чтобы изменения вступили в силу, необходимо их применить: Настройка завершена. Можно попробовать прописать наш pfSense в качестве шлюза и проверить доступ к сети Интернет.
В моем случае Интернет не заработал по причине наличия маршрута через локальную сеть. Решение ниже.
Статические маршруты
Если у нас есть несколько подсетей, доступ к которым нужно обеспечить через внутренние маршрутизаторы, pfSense позволяет добавить статические маршруты. Для этого переходим в Система — Маршрутизация: Кликаем по ссылке Статические маршруты:
Кликаем по кнопке Добавить:
В открывшемся окне вводим подсеть, для которой нам нужен маршрут и выбираем шлюз, через который будет осуществляться доступ к данной сети:
* в данном примере мы создадим статический маршрут в сеть 192.168.1.0/24 через шлюз 192.168.0.1. Сохраняем настройки:

Возможные ошибки
Рассмотрим проблемы, которые могут возникнуть при настройке pfSense.
Нет доступа в Интернет
После настройки WAN для компьютеров локальной сети нет доступа к сети Интернет. Я столкнулся с данной проблемой маршрутизации после того, как был настроен WAN-интерфейс. По идее, компьютеры локальной сети, которые подключены к pfSense как к шлюзу по умолчанию, должны получить выход к глобальной сети. Однако, этого не произошло.
При этом, если перейти в панели управления в раздел меню Диагностика — Пинг и отправить тест на любой адрес в сети Интернет, он проходил корректно, то есть, на самом pfSense выход в Интернет был. Причина: проблема может возникнуть, если мы сначала указывали шлюз на интерфейсе LAN, затем поменяли его на WAN. Возможно, систему клинит, и появляется ошибка маршрутизации. Решение: удалить маршрутизацию через LAN, убедиться, что появился Интернет на компьютерах локальной сети, после снова создать маршрутизацию через LAN. Для этого переходим к настройкам маршрутизации: Переходим к статическим маршрутам:
Удаляем все маршруты через локальную сеть:
Переходим в раздел Шлюзы:
Удаляем шлюз через локальную сеть:
Проверяем, что у нас появился интернет на компьютерах локальной сети. После того, как мы убедились в исправной работе шлюза для доступа к глобальной сети, на той же вкладке по работе со шлюзами нажимаем Добавить:
Задаем имя и адрес маршрутизатора в локальной сети:
Сохраняем настройки:
. и применяем их:
Возможности pfSense
- Брандмауэр.
- DNS и DHCP.
- Проброс портов.
- Маршрутизация и NAT.
- Ограничение скорости.
- VPN — IPSEC, L2TP, OpenVPN.
- Аутентификация через LDAP (например, Active Directory) или RADIUS.
Это не совсем все возможности — лишь пример, довольно, часто используемых функций.
Помимо доступных сервисов, мы можем воспользоваться менеджером пакетов (Система — Менеджер пакетов — Доступные пакеты), чтобы расширить возможности pfSense, например, мы можем установить:
- Прокси-сервер, например, SQUID + squidGuard.
- Блокировщики отслеживания и рекламы: pfblockerng.
- Средства мониторинга: zabbix-agent, zabbix-proxy.
Возможно, вам будет интересны следующие инструкции:
Источник: www.dmosk.ru
Использование приложения локального шлюза данных
Чтобы открыть приложение локального шлюза данных, сделайте следующее:
- На компьютере, на котором работает шлюз, введите шлюз в поиске Windows.
- Выберите приложение Локальный шлюз данных.
Некоторые возможности приложения локального шлюза данных можно использовать только после входа в свою учетную запись Office 365. Например, на вкладке Параметры службы вы можете перезапустить шлюз без входа в систему, но вы не можете изменить учетную запись службы вашего шлюза без входа в систему.
Возможности приложения локального шлюза данных
После входа в свою учетную запись Office 365 у вас есть доступ к следующим возможностям в приложении локального шлюза данных.
Состояние | Состояние кластера шлюза | Указывает, подключен ли ваш шлюз к Интернету, номер версии шлюза и список любых приложений, на данный момент связанных с шлюзом. |
Параметры службы | Перезапуск шлюза | Обеспечивает способ перезапуска шлюза всякий раз, когда требуется перезагрузка. |
Параметры службы | Учетная запись службы шлюза | По умолчанию, шлюз настроен для использования NT SERVICEPBIEgwService для хранения учетных данных для входа в службы Windows. Вы можете изменить учетную запись службы на учетную запись пользователя домена в вашем домене Active Directory. Кроме того, чтобы избежать необходимости менять пароль, можно воспользоваться управляемой учетной записью службы. |
Диагностика | Дополнительное ведение журнала | Включение этой возможности предоставляет дополнительные подробные сведения в файле журнала, который включает в себя информацию о продолжительности. Эта информация может быть полезна для выяснения того, почему некоторые ответы через шлюз являются медленными. Включение этой возможности может существенно увеличить размер журнала в зависимости от режима использования шлюза. Поэтому мы рекомендуем не оставлять этот параметр включенным в течение длительного времени. |
Диагностика | Журналы шлюза | Предоставляет копию всех журналов шлюза в одном файле в формате ZIP. |
Диагностика | Проверка сетевых портов | Проверяет, имеет ли шлюз доступ ко всем необходимым портам. |
Сеть | Статус сети | Указывает, может ли шлюз подключаться за пределами вашей сети. Статус сети отображается как «Подключен» или «Отключен». |
Сеть | Режим HTTPS | Когда включен, принудительно задает использование связи шлюза со Служебной шиной Azure по протоколу HTTPS, а не TCP. |
Соединители | Пользовательские соединители данных | Вы можете подключаться и получать доступ к данным из Power BI с помощью пользовательских соединителей данных, которые вы разрабатываете. |
Ключи восстановления | Ключи восстановления | Изменяет ключ восстановления, который вы указали при установке локального шлюза данных. Эта возможность не отображается, пока вы не войдете в систему. Недоступно в локальном шлюзе данных (персональный режим). |
Дальнейшие действия
Источник: learn.microsoft.com