Private Internet Access
Private Internet Access 是一项基于订阅的 VPN 服务。
- 所有 PIA 应用程序都已开源发布:https://github.com/pia-foss
- WireGuard 已添加到 VPN 服务器和 VPN 应用程序
- VPN 服务器已从 Ubuntu 14.04 LTS 迁移到 Arch Linux
- 现在所有 VPN 服务器都通过 dm-crypt 加密,遵循来自 Arch Linux 开发人员的建议
- 现在所有 VPN 服务都在内存中通过 ramdisk 运行
手册
NetworkManager 小程序方法
安装
从 PIA 下载 OpenVPN 配置文件。将 ZIP 文件解压到您用户主目录中或将来访问时容易记住的其他位置。值得注意的是,即使 WireGuard 可以在 Linux 二进制文件和应用程序上使用,但 PIA 尚未提供用于配置的 WireGuard 文件。换句话说,使用 NetworkManager 方法时,只能使用 OpenVPN。
安装并配置 NetworkManager 以及 NetworkManager 小程序和 OpenVPN 插件。
配置
- 右键单击桌面环境中的 NetworkManager 小程序,然后单击“编辑连接”。单击出现的“网络连接”窗口左下角的加号。
- 当您选择连接类型时,单击下拉菜单,向下滚动到底部,直到看到“导入已保存的 VPN 配置”。选择该选项。现在,单击“创建”。
- 导航到您之前解压所有 OpenVPN 文件的目录,然后打开该文件夹中的一个文件。一般来说,您将需要打开与您特别想要的连接关联的文件。
- 打开其中一个 OpenVPN 文件后,出现的窗口应为“正在编辑 <连接类型>”。输入您从 Private Internet Access 收到的用户名和密码。密码框中有一个图标,指示用户凭据的权限;根据需要更改设置。
- 现在,单击“高级”。在“使用 LZO 数据压缩”旁边,单击下拉菜单以选择“自适应”,然后在“设置虚拟设备类型”旁边,单击菜单并确保选中“TUN”。
- 接下来,转到“安全”选项卡,并将密码设置为“AES-128-CBC”,将 HMAC 身份验证设置为“SHA-1”。
- 单击窗口左下角的“确定”按钮以保存此更改。
- 转到“IPv6 设置”选项卡,并将“方法”选择为“忽略”,因为 PIA 阻止 IPv6 地址 [2]。
- 单击“正在编辑 <连接类型>”窗口右下角的“保存”。
使用
左键单击 NetworkManager 小程序。有一个 VPN 连接菜单。里面应该有您保存的 VPN 连接。单击它以连接到 Private Internet Access。
当 NetworkManager 小程序上出现金色锁时,您已成功连接到 Private Internet Access。访问 Private Internet Access 并参考其主页顶部的状态消息,确认您已连接。
OpenVPN 命令行方法
安装
从 PIA 下载 OpenVPN 配置。解压缩文件并将所有文件移动到 /etc/openvpn/client
。确保文件所有者为 root
。
openvpn-client@config
),请重命名所有文件,将 .opvn
扩展名替换为 .conf
,并将配置文件名中的空格替换为下划线。使用
请参阅 OpenVPN#启动 OpenVPN。
auth-user-pass
后立即附加包含您的用户名和密码的文件名。有关更多信息,请参阅 openvpn(8)中的此选项。要测试您是否已成功连接到 VPN,请参阅 这篇文章,其中推荐了以下四个工具
Aur 方法
官方安装脚本
Private Internet Access 有一个安装脚本,用于设置 NetworkManager 以与 VPN 一起使用。在此处下载脚本 here,然后运行以进行设置。
官方 Linux 客户端
Private Internet Access 现在有一个官方 Linux 客户端,支持 Arch。从 此页面 下载客户端,解压缩文件(例如 pia-v81-installer-linux.tar.gz
)并运行安装脚本(例如 # ./pia-v81-installer-linux.sh
)。
软件包
- piavpn-bin — 自动化官方安装程序
- || piavpn-binAUR
- Private Internet Access/AUR — 安装 NetworkManager、ConnMan 和 OpenVPN 的配置文件
安装
安装 private-internet-access-vpnAUR。
该软件包提供了一个工具,用于下载 OpenVPN 配置文件 并将其存储在 /etc/openvpn
中。但是,它会更新文件名以更好地支持在命令行上使用它们。
软件包的配置存储在 /etc/private-internet-access
中。
安装后
如果连接存在任何问题,并且您正在运行 connman,请 重启 connman-vpn.service
。
使用
启用自动登录
启用自动登录允许用户连接到 VPN 服务,而无需在命令行上键入任何密码(使用 networkmanager 时需要)。要进行设置,您必须执行以下操作
- 创建
/etc/private-internet-access/login.conf
- 在文件中添加您的用户名和密码。确保第 1 行是您的用户名,第 2 行是您的密码。不要在文件中添加任何其他文本,否则将无法工作(这是 OpenVPN 的限制)
/etc/private-internet-access/login.conf
USERNAME PASSWORD
- 将文件权限更改为 0600,所有者更改为 root:root
# chmod 0600 /etc/private-internet-access/login.conf # chown root:root /etc/private-internet-access/login.conf
这保护了非 root 用户对文件的访问。阅读有关 文件权限和属性 的更多信息。激活自动登录时,这是必需的。
- 以 root 身份运行
pia -a
。- 如果您安装了 networkmanager,它将为 networkmanager 创建配置文件。确保 重启 networkmanager 以查看它们。
- 如果您安装了 connman,它将为 connman 创建配置文件。如果
connman-vpn.service
尚未运行,请 启动 它。它将自动加载配置文件。 - 无论如何,它将在
/etc/openvpn/client
中创建 OpenVPN.conf
文件。
openvpn_auto_login = False
添加到 /etc/private-internet-access/pia.conf
并运行 pia -a
,在配置中禁用自动登录手动连接 VPN
# openvpn --config /etc/openvpn/client/{config_file_name}
{config_file_name}
将在 /etc/openvpn 目录中列出,或运行 pia -l
。
自动连接 VPN
对于 connman
- 启用
connman-vpn.service
。 - 以 root 身份运行
pia -a
(如果您尚未运行)。
# pia -a
- 获取所有 connman 服务的列表,并在第二列中找到 VPN 配置的名称
(例如,Finland)
connmanctl services
... * Finland_VPN vpn_fi_privateinternetaccess_com_privateinternetaccess_com ...
- 连接到您选择的 VPN 配置,为其创建 connman 设置文件
# connmanctl connect vpn_fi_privateinternetaccess_com_privateinternetaccess_com
- 编辑相关的设置文件,例如
/var/lib/connman/vpn_fi_privateinternetaccess_com_privateinternetaccess_com/settings
- 将
AutoConnect=false
行更改为AutoConnect=true
,保存,退出,重启
对于 openvpn,您可以在这里查看:OpenVPN#systemd 服务配置。
高级选项
- 创建
/etc/private-internet-access/pia.conf
- 对于
[pia]
部分
选项 | 选项值 | 描述 |
---|---|---|
openvpn_auto_login | True,False | 默认值:True;配置是否应为 OpenVPN 配置文件启用自动登录。请参阅 #启用自动登录 |
- 对于
[configure]
部分
选项 | 选项值 | 描述 |
---|---|---|
应用程序 | cm, nm | 默认值:全部;这配置要配置哪些应用程序。该应用程序将配置所有已安装的应用程序;但是,如果用户只需要 Conman 的配置,则即使他们安装了 NetworkManager,将其设置为“cm”也只会生成这些配置。始终生成 OpenVPN 配置。cm = Conman;nm = NetworkManager |
端口 | 请参阅列表:PIA 支持 - 我应该为网关上的端口使用哪些加密/身份验证设置? |
默认值:1198 |
配置示例
该配置启用自动登录,仅配置 Connman 和 OpenVPN,使用端口 8080 over UDP,并且仅配置美国东部、美国西部、日本、英国伦敦和英国南安普顿 VPN 端点。始终配置 OpenVPN。
/etc/private-internet-access/pia.conf
[pia] openvpn_auto_login = True [configure] apps = cm port = 8080 hosts = US East, US West, Japan, UK London, UK Southampton
故障排除
使用 NetworkManager 的小程序
为了使用 network-manager-applet 进行连接
- 右键单击系统托盘中的 NetworkManager 图标
- 然后单击配置网络连接...
- 然后单击添加
- 选择导入 VPN...
- 浏览到
/etc/openvpn/client/CA_Toronto.conf
或您想要使用的任何配置 - 然后单击打开
- 仅从
网关:
中删除:1198
(如果存在),因为此框中应仅包含域名 - 对于
用户名:
,键入您的p1234567
用户名 - 对于
密码:
,键入与您的p-xxxxx
用户名关联的密码 - 然后单击高级...
- 设置
自定义网关端口:
并将其设置为1198
- 单击安全选项卡
- 将
密码:
设置为AES-128-CBC
- 将
HMAC 身份验证:
设置为SHA-1
- 单击确定
- 再次单击确定
DNS 泄漏
关于 DNS 泄漏(请参阅 python-pia/#13),NetworkManager 由于 /etc/resolv.conf
的设置方式而泄漏信息。以下脚本由 @maximbaz 发布,以解决此问题。如果您继续遇到泄漏,则可能需要 禁用 IPv6。
/etc/NetworkManager/dispatcher.d/pia-vpn
#!/bin/bash #/etc/NetworkManager/dispatcher.d/pia-vpn interface="$1" status=$2 case $status in vpn-up) if [[ $interface == "tun0" ]]; then chattr -i /etc/resolv.conf echo -e "nameserver 209.222.18.222\nnameserver 209.222.18.218" > /etc/resolv.conf chattr +i /etc/resolv.conf fi ;; vpn-down) if [[ $interface == "tun0" ]]; then chattr -i /etc/resolv.conf fi ;; esac
vopono
vopono 是一种通过具有临时网络命名空间的 VPN 连接运行特定应用程序的工具。支持为 PrivateInternetAccess 自动生成配置。
它默认包含终止开关支持,并支持将端口从网络命名空间转发和代理到主机,以便您可以通过 VPN 运行守护程序和服务器,而系统的其余部分不受影响。
参见
技巧和窍门
Internet “终止开关”
以下 iptables 规则仅允许通过 tun
接口的网络流量,但允许访问 PIA 的 DNS 服务器和端口 1197 的流量除外,端口 1197 用于建立 VPN 连接
/etc/iptables/iptables.rules
# Set default policies for INPUT, FORWARD, and OUTPUT chains to DROP # This means all traffic is blocked by default unless explicitly allowed -P INPUT DROP -P FORWARD DROP -P OUTPUT DROP # Allow incoming traffic that is related to established connections -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # Allow all traffic on the loopback interface -A INPUT -i lo -j ACCEPT -A OUTPUT -o lo -j ACCEPT # Allow all incoming traffic on tun interfaces -A INPUT -i tun+ -j ACCEPT -A OUTPUT -o tun+ -j ACCEPT # Allow connections to PIA servers -A OUTPUT -d 209.222.18.222/32 -j ACCEPT -A OUTPUT -d 209.222.18.218/32 -j ACCEPT # allow VPN establishing -A OUTPUT -p udp -m udp --dport 1197 -j ACCEPT # Reject all other outgoing traffic with an ICMP net unreachable message; catches any traffic not matched by previous rules -A OUTPUT -j REJECT --reject-with icmp-net-unreachable # Commit the changes to iptables COMMIT
这确保了如果您在不知情的情况下与 VPN 断开连接,则不允许任何网络流量进出。
如果您还希望访问 LAN 上的设备,则需要显式允许它们。例如,要允许访问 192.0.0.0/24
上的设备,请添加以下两个规则(在任何 REJECT 规则之前)
-A INPUT -s 192.168.0.0/24 -j ACCEPT -A OUTPUT -d 192.168.0.0/24 -j ACCEPT
此外,上述规则阻止了 ICMP 协议,这可能不是期望的结果。有关使用这些 iptables 规则的潜在陷阱以及更多详细信息,请参阅 此线程。
设置 PIA DNS
如果您发现 Network Manager 正在控制您的主机的 DNS 设置,因此您的主机无法解析任何地址,您将必须手动设置 DNS 服务器和属性。当运行以下命令时,您应该注意到一个符号链接
$ ls -l /etc/resolv.conf
使用 rm /etc/resolv.conf
删除符号链接。然后创建一个新的 /etc/resolv.conf
并添加以下内容
/etc/resolv.conf
nameserver 209.222.18.222 nameserver 209.222.18.218
接下来,通过键入以下内容重新生成 resolvconf
# resolvconf -u
最后,使文件不可变,以便没有其他应用程序可以修改它
chattr +i /etc/resolv.conf
故障排除
我无法使用 PIA 管理器连接到 OpenVPN,或者 OpenVPN 无法工作
PIA 管理器仍然在底层使用 OpenVPN,因此即使您不直接使用 OpenVPN 方法之一,您仍然需要它。首先,检查它是否已安装。如果您使用了安装脚本之一,则应为您完成此操作。
如果您收到类似 #<Errno::ECONNREFUSED: Connection refused - connect(2) for "127.0.0.1" port 31749>
的错误,则可能意味着 TAP/TUN 当前未运行。要么您的内核没有它,在这种情况下,安装一个具有它的内核(或编译一个新的内核),要么它当前未运行,在这种情况下,需要启动它
# modprobe tun