Вопрос или проблема
Проблема в следующем:
Единственная официально поддерживаемая конфигурация маршрутизатора для 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
для управления трафиком. Вам нужно будет добавить четыре правила для того, чтобы правильно настроить маршрутизацию:
- MASQUERADE: Маскирует выходящий трафик.
- Перенаправление: Позволяет переходить между интерфейсами.
- Прием трафика: Разрешает проходящий трафик.
- 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!