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”作为密码,选择“SHA-1”作为 HMAC 身份验证。
- 单击窗口左下角的确定按钮以保存此更改。
- 转到“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。从此页面下载客户端 this page,解压文件 (例如 pia-v81-installer-linux.tar.gz
) 并运行安装脚本 (.e.g. # ./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
文件。
/etc/private-internet-access/pia.conf
中添加 openvpn_auto_login = False
并运行 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 | 默认值:all;这配置了要配置哪些应用程序。该应用程序将配置所有已安装的应用程序;但是,如果用户只需要 Conman 的配置,那么即使他们安装了 NetworkManager,将此设置为“cm”也只会生成这些配置。始终生成 OpenVPN 配置。cm = Conman;nm = NetworkManager |
端口 | 请参阅列表:PIA 的支持 - 我应该对网关上的端口使用哪些加密/身份验证设置? |
默认值:1198 |
配置示例
该配置启用自动登录,仅配置 Connman 和 OpenVPN,通过 UDP 使用端口 8080,并且仅配置美国东部、美国西部、日本、英国伦敦和英国南安普顿 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 运行守护程序和服务器,而系统的其余部分不受影响。
参见
技巧与窍门
互联网“终止开关”
以下 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