在我的 Raspberry Pi 上设置 NordVPN 网关

在我的 Raspberry Pi 上设置 NordVPN 网关

目标
在我的 Raspberry Pi 上设置 NordVPN 并将其用作网关。

当前设置

  • 运行 Arch ARM 的 Raspberry Pi2,通过以太网线连接到我的路由器
  • NordVPN 帐户
  • nordvpn安装在我的 Rpi 上

配置
这是我配置树莓派的方法。第一步是运行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 扩展程序可以正常工作。

有任何想法吗?

答案1

我不使用浏览器插件,我只是从终端连接。以下是我为让所有内容在 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

答案2

更新于 2024-04-13删除了 mangle 规则,因为不需要

我不喜欢被告知我只能使用一个功能,如果我只使用一个预先选择的设置配置,特别是当基础设施支持并提供一个工具,允许在任何给定时间动态选择最佳可用路径时苍蝇。

我在互联网上找到的选项都共享一个通用的仅限 OpenVPN 的解决方案。起泡沫,冲洗,重复。

目前的解决方案如下:

选择单个服务器。下载该单个服务器的静态配置文件,该文件仅适用于较差的协议。完成不必要的复杂设置和配置过程。最后,请祈祷所选服务器能够随着时间的推移继续一致地执行,或者当性能一次又一次下降时再次重复该过程............为我工作,所以我开始解决这个问题。对于那些感兴趣的人,我相信我已经解决了“dynamic-nordlynx-whole-network-router”问题。

我的解决方案:

它归结为 3 条 iptables 规则。由于它使用本机 Linux 应用程序,因此它可以使用所有可用的功能。这意味着您可以告诉要连接到哪台服务器,或者让它动态连接到您选择的类别中当前最好的服务器,例如 p2p、onion 等。自动连接有效。我想你应该已经明白了。使用 OpenVPN 协议可能会起作用,但我还没有尝试过,因为放弃 OpenVPN 是我这样做的部分原因。 Killswitch 始终开启且无法禁用。

iptables 规则才是真正的关键。我们都知道转发流量的 3 个基本规则。您必须使用“nordlynx”作为 WAN 接口。

$ 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。如果有时间的话我可能会挖一个来尝试一下。我当前的配置是在 Proxmox 上作为 lxc 与 pihole lxc 和 pfsense 虚拟机一起在具有 4 个网卡的 N100 sff 计算机上运行。此设置明显比 OpenVPN-on-pfsense 组合更快。尽管它仍然存在,但已被绕过。保留作为备份选项以防万一。

         internet
             |
           modem
             |
          Proxmox
             |<---physical port
************ | ************
*          * | *          *
*       NordVPN lxc       *
*   vmbr---->|            *
*         pfsense   vmbr  *
*          * | * \<----   *
*          * | *  pihole  *
************ | ************
   |         |        |<---physical ports
  LAN      WiFi     Guest

我试图将他的帖子发布到nordvpn subreddit上,但显然我没有足够的业力。

我只是想在力所能及的时候帮助别人。

我的项目和基于 Linux 的路由器的相当完整的文章可以在这里找到: https://github.com/theOtherLuke/nordlynx-router/tree/main

相关内容