Настройка шлюза NordVPN на моем Raspberry Pi

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

Цель
Настроить NordVPN на моем Raspberry Pi и использовать его в качестве шлюза.

Текущая настройка

  • Raspberry Pi2 с Arch ARM, подключенный к роутеру по Ethernet-кабелю
  • Аккаунт NordVPN
  • nordvpn установлен на моем Rpi

Конфигурация
Вот как я настроил свой Raspberry.
Первый шаг – запустить nordvpn и выбрать нужную страну. Затем я должен позаботиться о маршрутизации трафика.

Включение пересылки IP:
echo -e 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf

Настройка NAT:

sudo iptables -t nat -A POSTROUTING -o nordlynx  -j MASQUERADE
sudo iptables -A FORWARD -i nordlynx -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o nordlynx -j ACCEPT

Проблема
На этом этапе все работает без сбоев, и я получаю IP, который находится в нужной стране. К сожалению, большинство сервисов, таких как Netflix, Youtube и некоторые другие сайты, не распознают, что я нахожусь в другой стране.
Я знаю, что это не проблема NordVPN, потому что расширение Chrome работает корректно.

Есть идеи?

Я не использую плагин браузера, я просто подключаюсь из терминала. Вот шаги, которые я предпринял, чтобы все заработало на Raspberry Pi OS 64 бита:

$ sudo wget -qnc https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb
$ sudo dpkg -i /pathToFile/nordvpn-release_1.0.0_all.deb
$ sudo apt update 
$ sudo apt install nordvpn
$ sudo usermod -aG nordvpn $USER
$ sudo nordvpn login

Если вам нужен локальный трафик, например, для использования VNC, добавьте свой локальный диапазон IP в белый список, в моем случае:

$ nordvpn whitelist add subnet 192.168.1.0/24

Не уверен, почему, но на Linux я не мог запустить NordVPN без изменения технологий:

$ nordvpn set technology nordlynx

Наконец-то мы можем подключиться!

$ nordvpn connect

ОБНОВЛЕНО 2024-10-20 Я был прав с самого начала. В большинстве случаев правило mangled необходимо. Это не повредит остальным случаям. Я добавил его обратно.

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

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

Текущая решение следующее:

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

Мое решение:

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

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

iptables -t mangle -A PREROUTING -i <LAN> -m comment --comment nord-router -j CONNMARK --set-xmark 0xe1f1/0xffffffff
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

Установите на свой интерфейс, который выходит на LAN.

Я развернул это на нескольких ВМ 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 на Raspberry Pi как шлюза

Введение

В данной статье описывается процесс настройки NordVPN на Raspberry Pi с операционной системой Arch ARM, подключенном к маршрутизатору. Цель состоит в том, чтобы сделать Raspberry Pi шлюзом с использованием NordVPN, чтобы весь исходящий трафик проходил через VPN.

Текущая настройка

  • Устройство: Raspberry Pi 2
  • Операционная система: Arch ARM
  • Подключение: Ethernet-кабель к маршрутизатору
  • Учетная запись: NordVPN
  • Установленное программное обеспечение: nordvpn

Шаги по настройке

  1. Установка и настройка приложения NordVPN:
    Убедитесь, что вы выполнили все необходимые установки:

    sudo wget -qnc https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb
    sudo dpkg -i /pathToFile/nordvpn-release_1.0.0_all.deb
    sudo apt update 
    sudo apt install nordvpn
    sudo usermod -aG nordvpn $USER
    sudo nordvpn login

    После этого настройте предпочтительный протокол (в данном случае nordlynx):

    nordvpn set technology nordlynx
  2. Подключение к VPN:
    Чтобы подключиться к NordVPN, выполните команду:

    nordvpn connect
  3. Включение IP-переадресации:
    Для того чтобы ваш Raspberry Pi мог принимать и перенаправлять трафик, необходимо включить IP-переадресацию:

    echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
    sudo sysctl -p
  4. Настройка NAT с использованием iptables:
    Добавьте правила для NAT, которые позволят маршрутизировать трафик через интерфейс nordlynx:

    sudo iptables -t nat -A POSTROUTING -o nordlynx -j MASQUERADE
    sudo iptables -A FORWARD -i nordlynx -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    sudo iptables -A FORWARD -i eth0 -o nordlynx -j ACCEPT
  5. Дополнительная настройка для работы с локальным трафиком:
    Если вам необходимо использовать локальный трафик (например, для VNC), добавьте белый список для вашей локальной подсети:

    nordvpn whitelist add subnet 192.168.1.0/24
  6. Настройка правил mangle для маркировки трафика:
    Для назначения меток на локальный трафик и улучшения обработки пакетов можете использовать следующие команды:

    iptables -t mangle -A PREROUTING -i <LAN> -m comment --comment nord-router -j CONNMARK --set-xmark 0xe1f1/0xffffffff

Проблема с доступом к контенту

У вас может возникнуть проблема с доступом к определённым сервисам (таким как Netflix или YouTube), даже несмотря на то, что ваш IP-адрес указывает на другую страну. Это может быть связано с тем, как данные сервисы обрабатывают трафик и используют различные методы для определения местоположения пользователей.

Решения

  1. Попробуйте разные серверы: Иногда разные серверы могут обходить блокировки. Используйте команду:

    nordvpn connect <server_name>
  2. Использование дополнительных правил iptables: Убедитесь, что ваше правило mangle работает корректно и не заблокировано. Эти дополнительные правила помогут убедиться, что локальный трафик проходит корректно.

  3. Проверка обхода блокировок: Некоторые пользователи сообщают о том, что переключение на определённый протокол (например, OpenVPN) или использование специального сервиса NordVPN для обхода блокировок может помочь улучшить доступ.

Заключение

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

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

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