问: 自从我安装 OpenVPN 以来,脚本已经更新了。我该如何更新?
答: 你无法更新。从脚本管理更新和新功能需要太多工作。你唯一的解决方案是卸载 OpenVPN 并使用更新的脚本重新安装。
当然,你可以(甚至建议)使用包管理器更新 openvpn 包。
问: 如何检查 DNS 泄漏?
答: 使用浏览器访问 browserleaks.com 或 ipleak.net(两者都执行 IPv4 和 IPv6 检查)。你的 IP 不应该显示出来(在使用和不使用 VPN 时都要测试)。DNS 服务器应该是你在设置期间选择的服务器,而不是你的 IP 地址或 ISP 的 DNS 服务器地址。
问: 如何修复 DNS 泄漏?
答: 在 Windows 10 上,DNS 泄漏默认通过 block-outside-dns 选项被阻止。
在 Linux 上,你需要根据你的发行版在 .ovpn 文件中添加这些行。
Debian 9, 10 和 Ubuntu 16.04, 18.04
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Centos 6, 7
script-security 2
up /usr/share/doc/openvpn-2.4.8/contrib/pull-resolv-conf/client.up
down /usr/share/doc/openvpn-2.4.8/contrib/pull-resolv-conf/client.down
Centos 8, Fedora 30, 31
script-security 2
up /usr/share/doc/openvpn/contrib/pull-resolv-conf/client.up
down /usr/share/doc/openvpn/contrib/pull-resolv-conf/client.down
Arch Linux
script-security 2
up /usr/share/openvpn/contrib/pull-resolv-conf/client.up
down /usr/share/openvpn/contrib/pull-resolv-conf/client.down
问: 我可以使用 OpenVPN 2.3 客户端吗?
答: 可以。我真的建议使用最新的客户端,但如果你真的需要,请选择以下选项:
- 无压缩或 LZ0
- RSA 证书
- DH 密钥
- AES CBC
- tls-auth
如果你的客户端版本 <2.3.3,请从你的 /etc/openvpn/server.conf 和 .ovpn 文件中删除 tls-version-min 1.2。
问: IPv6 在我的 Hetzner 虚拟机上不工作
答: 这是他们那边的问题。请参见 https://angristan.xyz/fix-ipv6-hetzner-cloud/
问: DNS 在我的 Linux 客户端上不工作
答: 请参见"如何修复 DNS 泄漏?"问题
问: 脚本对 sysctl 和 iptables 做了哪些更改?
答: Iptables 规则保存在 /etc/iptables/add-openvpn-rules.sh 和 /etc/iptables/rm-openvpn-rules.sh。它们由服务 /etc/systemd/system/iptables-openvpn.service 管理
Sysctl 选项位于 /etc/sysctl.d/20-openvpn.conf
问: 如何访问连接到同一 OpenVPN 服务器的其他客户端?
答: 在你的 server.conf 中添加 client-to-client
问: 我的路由器无法连接
答:
-
Options error: No closing quotation (") in config.ovpn:46:当询问是否自定义加密设置时输入
yes并选择tls-auth -
Options error: Unrecognized option or missing parameter(s) in config.ovpn:36: tls-version-min (2.3.2):请参见问题"我可以使用 OpenVPN 2.3 客户端吗?"
问: 如何访问 OpenVPN 服务器远程局域网中的计算机?
答: 在 /etc/openvpn/server.conf 中添加一个包含远程网络子网的路由并重启 openvpn。例如:如果服务器的局域网是 192.168.1.0/24,则添加 push "route 192.168.1.0 255.255.255.0"
问: 如何一次性添加多个用户?
答: 这里是一个示例 bash 脚本来实现这个功能:
userlist=(user1 user2 user3)
for i in ${userlist[@]};do
MENU_OPTION=1 CLIENT=$i PASS=1 ./openvpn-install.sh
done从文本文件中的列表:
while read USER
do MENU_OPTION="1" CLIENT="$USER" PASS="1" ./openvpn-install.sh
done < users.txt问: 如何更改为未来客户端创建的默认 .ovpn 文件?
答: 你可以通过编辑 /etc/openvpn/client-template.txt 来编辑创建 .ovpn 文件的模板
问: 对于我的客户端 - 我想设置我的内部网络通过 VPN,其余的通过我的互联网?
答: 你需要编辑 .ovpn 文件。你可以通过编辑 /etc/openvpn/client-template.txt 文件并添加以下内容来编辑创建这些文件的模板
route-nopull
route 10.0.0.0 255.0.0.0例如 - 这里它会将所有 10.0.0.0/8 的流量路由到 vpn。其余的通过互联网。
问: 我已启用 IPv6,我的 VPN 客户端获得了 IPv6 地址。为什么我只能通过 IPv4 访问网站或其他双栈目标?
答: 这是因为在隧道内你没有获得公开可路由的 IPv6 地址,而是获得了 ULA(唯一本地局域网)地址。操作系统并不总是优先使用这个地址。你可以在操作系统策略中修复这个问题,因为这与 VPN 本身无关:
Windows(命令需要以管理员身份运行 cmd.exe):
netsh interface ipv6 add prefixpolicy fd00::/8 3 1
Linux:
编辑 /etc/gai.conf 并取消注释以下行,同时将其值更改为 1:
label fc00::/7 1
除非你在 VPN 服务器 server.conf 中添加一行或两行来推送至少 1 个 IPv6 DNS 服务器,否则这将无法正常工作。大多数提供商也有 IPv6 服务器,添加两行 push "dhcp-option DNS <IPv6>"