Вопрос или проблема
Цель
Настроить 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
Шаги по настройке
-
Установка и настройка приложения 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
-
Подключение к VPN:
Чтобы подключиться к NordVPN, выполните команду:nordvpn connect
-
Включение IP-переадресации:
Для того чтобы ваш Raspberry Pi мог принимать и перенаправлять трафик, необходимо включить IP-переадресацию:echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf sudo sysctl -p
-
Настройка 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
-
Дополнительная настройка для работы с локальным трафиком:
Если вам необходимо использовать локальный трафик (например, для VNC), добавьте белый список для вашей локальной подсети:nordvpn whitelist add subnet 192.168.1.0/24
-
Настройка правил mangle для маркировки трафика:
Для назначения меток на локальный трафик и улучшения обработки пакетов можете использовать следующие команды:iptables -t mangle -A PREROUTING -i <LAN> -m comment --comment nord-router -j CONNMARK --set-xmark 0xe1f1/0xffffffff
Проблема с доступом к контенту
У вас может возникнуть проблема с доступом к определённым сервисам (таким как Netflix или YouTube), даже несмотря на то, что ваш IP-адрес указывает на другую страну. Это может быть связано с тем, как данные сервисы обрабатывают трафик и используют различные методы для определения местоположения пользователей.
Решения
-
Попробуйте разные серверы: Иногда разные серверы могут обходить блокировки. Используйте команду:
nordvpn connect <server_name>
-
Использование дополнительных правил iptables: Убедитесь, что ваше правило mangle работает корректно и не заблокировано. Эти дополнительные правила помогут убедиться, что локальный трафик проходит корректно.
-
Проверка обхода блокировок: Некоторые пользователи сообщают о том, что переключение на определённый протокол (например, OpenVPN) или использование специального сервиса NordVPN для обхода блокировок может помочь улучшить доступ.
Заключение
Настройка NordVPN на Raspberry Pi может показаться сложной задачей, но следуя предложенным шагам, вы сможете использовать ваше устройство в качестве надежного шлюза. Убедитесь в том, что вы проверили каждую часть конфигурации, и при необходимости адаптируйте правила iptables для достижения наилучшего результата.