Маршрутизация специфических HTTP-запросов через pfSense OpenVPN.

Вопрос или проблема

Для начала, у меня очень мало знаний о маршрутах, iptables и т. д. Тем не менее, вот что я пытаюсь сделать и где, как мне кажется, я зашёл в тупик:

Проблема: у нас есть внешний сайт, который мы недавно защитили файрволом, чтобы он принимал трафик только с IP-адресов нашего офиса. Это хорошо работает в офисе, но не работает для удаленного доступа через VPN, так как мы не перенаправляем весь трафик через OpenVPN. Я бы предпочел избежать того, чтобы заставлять всех перенаправлять весь трафик только для доступа к этому сайту.

Среда: основной маршрутизатор работает на pfSense. Em0 — это внутренний IP, Em1 — внешний. Внутренняя сеть — 10.23.x, а VPN — 10.0.8.0/24

Я полагаю, что мне нужно добавить маршрут в конфигурацию VPN-сервера для отправки всего трафика на этот IP через VPN-туннель. Я думаю, что эта часть работает, но я не получаю ответ обратно, поэтому я предполагаю, что мне нужна конфигурация NAT на VPN-сервере, чтобы направить ответ обратно через туннель?

Что я нашёл, это попытка следующего, но так как это коробка pfSense на FreeBSD, я не могу использовать iptables и т.д.

Убедитесь, что пересылка IP включена:
echo 1 > /proc/sys/net/ipv4/ip_forward

Настройка NAT на выход:
iptables -t nat -A POSTROUTING -s 10.0.8.0/24 -o em0 -j MASQUERADE

Я на верном пути, и если да, то как это сделать через интерфейс pfSense или CLI FreeBSD? Спасибо!

Понял! Мы с коллегой набрели на успех (пока что).

XXX.XXX.XXX.XXX = IP-адрес конкретного сайта, который мы хотели маршрутизировать через VPN

Решение:

  1. VPN > OpenVPN > Server > Edit > Custom Options: push “routeXXX.XXX.XXX.XXX”;
  2. Firewall > NAT > Outbound >
    • Выбрать Manual Outbound NAT (AON)
    • Добавить 2 маршрута ниже:
      • Interface Source SrcPort Destination DestPort NATAddr NATPort StaticPort
      • WAN 10.23.23.0/24 * * * * * NO
      • WAN 10.0.8.0/24 * XXX.XXX.XXX.XXX/32 * * * NO
  3. Используйте 😉

Шаг 3 — опциональный.

Рад, что вы решили это! Другой способ — сделать внешний сервер частью VPN. Затем просто установите домен/ы на новый VPN IP сервера вместо публичного IP. Таким образом, весь административный доступ к внешнему серверу также проходит по VPN. Плюс никаких специальных маршрутов или правил NAT.

Вы можете сделать следующее.

Я предполагаю, что вы настроили VPN.

Для Wireguard это разрешение всего — 0.0.0.0/0.

Убедитесь, что включен NAT по умолчанию для исходящего трафика,

перейдите во меню: Firewall -> NAT -> Outbound

Внизу есть список автоматических правил:

  • WAN, Автоматически созданное правило
  • VPN, Автоматически созданное правило
  • ….

Если нет, вам нужно взглянуть на:

  • Автоматическая генерация правил NAT для исходящего трафика. (включая IPsec passthrough)
  • Гибридная генерация правил NAT для исходящего трафика. (Автоматический NAT + правила ниже)

чтобы изменить это, вне рамок этого ответа.

1. Создайте IP alias с FQDN серверов, которые вы хотите перенаправить.

  1. Перейдите: Firewall -> Alias -> IP

  2. Нажмите Добавить
    type — это host
    Для каждого FQDN, который вы хотите добавить, добавьте в список под Host(s)
    Имя alias, которое вы выберете, будет использоваться позже, я назвал его serverfault_com.

PFsense, Firewall -> Alias -> IP, редактировать Alias

2. Добавьте статический маршрут

  1. Перейдите: System -> Routing -> Static Routes

  2. Нажмите Добавить

  3. Заполните
    Сеть назначения: serverfault_com, маску оставьте на 32.
    Выберите ваш шлюз.
    Дайте описание.

  4. Сохраните

PFsense System -> Routing-> Static Routes -> Edit

  1. Примените изменения

    Применение Alias займёт некоторое время, но когда это произойдёт, вы можете использовать такие инструменты, как traceroute, чтобы убедиться, что всё работает.
    PFsense System -> Routing -> Static Routes, обзор

Ответ или решение

Конечно, давайте разберемся, как перенаправить определенные HTTP-запросы через OpenVPN на pfSense для вашего сценария. Я постараюсь объяснить шаги как можно подробнее, учитывая ваш уровень подготовки в сетевых и маршрутизационных вопросах.

Задача

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

Решение

  1. Режим маршрутизации и NAT в pfSense:

    • Маршрутизация: Для начала, вы должны попросить pfSense, использующего OpenVPN-сервер, «толкать» маршруты для нужного веб-сайта вашим VPN-клиентам.
    • NAT (Network Address Translation): Это позволит корректно обрабатывать входящие и исходящие пакеты, возвращая их в правильный интерфейс.
  2. Конфигурация OpenVPN на pfSense:

    • Перейдите в VPN > OpenVPN > Сервер, выберите нужный сервер и добавьте в поле «Custom Options» следующую строку:
      push "route XXX.XXX.XXX.XXX 255.255.255.255"

      Вместо XXX.XXX.XXX.XXX укажите IP-адрес сайта, к которому нужно получить доступ через VPN.

  3. Настройка NAT:

    • Перейдите в Firewall > NAT > Outbound.
    • Выберите Manual Outbound NAT (AON).
    • Добавьте два правила NAT:
      • Правило 1: WAN 10.23.23.0/24 → применяется ко всей локальной сети офиса.
      • Правило 2: WAN 10.0.8.0/24 → применяется к трафику, исходящему от VPN-сети к указанному сайте. Убедитесь, что указано ваше целевое внешнее IP в колонке "Дestination".
  4. Проверка и Устранение Проблем:

    • Убедитесь, что маршрутизация и NAT настроены правильно, и протестируйте соединение. Используйте команды вроде traceroute и ping, чтобы проверить маршрут к ресурсу.
    • Убедитесь, что на вашем pfSense включена пересылка IP. Это можно проверить в System > Advanced > Firewall & NAT, где должно быть разрешено Enable NAT Reflection.

Другое решение

Вы также можете рассмотреть возможность сделать ваш внешний сервер частью VPN. Это позволит вам работать без необходимости прописывать специальные маршруты или создавать сложные правила NAT. Просто задайте выделенный IP-адрес для сервера в рамках VPN и обновите записи DNS на нужные домены, чтобы они указывали на новый IP.

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

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

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

Капча загружается...