Как настроить выделенный маршрутизатор и шлюз NordVPN на Linux?

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

Проблема в следующем:
Единственная официально поддерживаемая конфигурация маршрутизатора для nordvpn — это использование статического конфигурационного файла и openvpn.

Это не работает для меня.

Вопрос:
Как настроить маршрутизатор/шлюз nordvpn на linux, который позволяет использовать динамические подключения, nordlynx и любые другие опции, доступные в родных приложениях nordvpn?

Полное раскрытие информации: это в основном дубликат ответа, который я предоставил здесь:Настройка шлюза NordVPN на моем Raspberry Pi

Теперь перейдем к делу.

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

Опции, которые я нашел в интернете, все имеют общее решение только для OpenVPN. Намыливай, смывай, повторяй.

Текущее общепринятое решение выглядит следующим образом:

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

Мое решение:

ОБНОВЛЕНО 2024-10-14 оказалось, что нам нужно добавить правило mangle. Прошу прощения у всех, кто пробовал это без успеха из-за этого неверного предположения.

Всё сводится к 4 правилам iptables. Поскольку это использует родное приложение linux, оно может использовать все доступные функции. Это означает, что вы можете указать, к какому серверу подключаться, или позволить ему динамически подключаться к текущему лучшему в выбранной вами категории, такой как p2p, onion и т.д. Автоподключение работает. Думаю, вы поняли идею. Это, вероятно, будет работать и с протоколом OpenVPN, но я не пробовал, потому что переход с OpenVPN был частью моей мотивации для этого. Киллтвитч всегда включен и не может быть отключен с этой настройкой.

Правила iptables — это настоящая ключевая часть. Мы все знаем 3 основных правила для пересылки трафика, но вы должны использовать ‘nordlynx’ в качестве интерфейса WAN. 4-е правило помечает ваш трафик, чтобы правила nordvpn позволили ему проходить.

$ iptables -t nat -A POSTROUTING -o nordlynx -j MASQUERADE
$ iptables -A FORWARD -i <LAN> -o nordlynx -m state --state RELATED,ESTABLISHED -j ACCEPT
$ iptables -A FORWARD -i <LAN> -o nordlynx -j ACCEPT
$ iptables -t mangle -A PREROUTING -i <LAN> -m comment --comment nord-router -j CONNMARK --set-xmark 0xe1f1/0xffffffff

Установите для вашего интерфейса, обращенного к lan. ‘-m comment –comment nord-router’ в правиле mangle является необязательным, или вы можете изменить его на что-то другое, например ‘-m comment –comment bobs-box’.

Я развернул это на нескольких виртуальных машинах Proxmox и контейнерах lxc на различном потребительском и корпоративном оборудовании. Я уверен, что это легко адаптируется под pi. Возможно, я достану один, чтобы попробовать, если найду время. Моя текущая конфигурация работает как lxc на Proxmox вместе с контейнером pihole и виртуальной машиной pfsense на компьютере N100 sff с 4 NIC. Эта установка заметно быстрее, чем комбинация OpenVPN на pfsense. Хотя она все еще на месте, но обойдена. Оставлена в качестве резервного варианта на всякий случай.

         интернет
             |
           модем
             |
          Proxmox
             |<---физический порт
************ | ************
*          * | *          *
*       NordVPN lxc       *
*   vmbr---->|            *
*         pfsense   vmbr  *
*          * | * \<----   *
*          * | *  pihole  *
************ | ************
   |         |        |<---физические порты
  LAN      WiFi     Гости

Я попытался опубликовать это на сабреддите nordvpn, но, похоже, у меня недостаточно кармы.

Я просто хочу помочь другим, когда смогу.

Мой проект и довольно полное описание моего маршрутизатора на базе linux можно найти здесь:
https://github.com/theOtherLuke/nordlynx-router/tree/main

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

Настройка выделенного маршрутизатора и шлюза NordVPN на Linux

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

Необходимое ПО

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

  • Linux-система (например, Ubuntu, Debian и т.д.)
  • Установленный и настроенный клиент NordVPN (nordvpn).
  • Доступ к терминалу с правами суперпользователя.

Установка клиента NordVPN

Если у вас еще не установлен клиент NordVPN, вы можете установить его, следуя командам ниже:

# Добавляем репозиторий NordVPN
sudo apt-get install -y apt-transport-https
echo "deb https://repository.nordvpn.com/deb/nordvpn/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/nordvpn.list

# Добавляем ключ
wget -qO - https://repository.nordvpn.com/gpg/nordvpn.gpg | sudo apt-key add -

# Обновляем репозиторий и устанавливаем NordVPN
sudo apt-get update
sudo apt-get install nordvpn

Настройка iptables

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

  1. MASQUERADE: Маскирует выходящий трафик.
  2. Перенаправление: Позволяет переходить между интерфейсами.
  3. Прием трафика: Разрешает проходящий трафик.
  4. MANGLE правило: Отмечает трафик, чтобы он мог проходить через NordVPN.
# Замените <LAN> на ваше LAN интерфейс, например eth0 или wlan0.
sudo iptables -t nat -A POSTROUTING -o nordlynx -j MASQUERADE
sudo iptables -A FORWARD -i <LAN> -o nordlynx -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i <LAN> -o nordlynx -j ACCEPT
sudo iptables -t mangle -A PREROUTING -i <LAN> -m comment --comment nord-router -j CONNMARK --set-xmark 0xe1f1/0xffffffff

Пояснение команд

  • MASQUERADE – это правило, которое замещает IP-адрес отправителя на IP-адрес подключения NordVPN, что позволяет скрыть местоположение вашего устройства.
  • FORWARD – эти правила позволяют пакетам, которые идут назад по установленным соединениям и новые соединения из вашей локальной сети, проходить черезNordLynx – интерфейс.
  • MANGLE – используется для маркировки пакетов, так что NordVPN может управлять маршрутизацией.

Использование клиента NordVPN

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

nordvpn connect

Если вы хотите выбрать конкретный сервер или категорию, вы можете воспользоваться следующими командами:

nordvpn connect us # соединение с сервером в США
nordvpn connect p2p # соединение с P2P-сервером

Автозапуск при загрузке

Для того чтобы ваш NordVPN автоматически подключался при загрузке системы, вы можете использовать systemd для создания сервиса. Создайте файл /etc/systemd/system/nordvpn.service со следующим содержимым:

[Unit]
Description=NordVPN Autoconnect
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/nordvpn connect
Restart=on-failure

[Install]
WantedBy=multi-user.target

После создания файла, выполните следующие команды для активации автозапуска:

sudo systemctl enable nordvpn
sudo systemctl start nordvpn

Заключение

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

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

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

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

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