我有一个问题,几天来我一直在尝试解决 - 我正在安装一个相对较新的 Ubuntu 18.04,我启用了 UFW 并使用以下规则对其进行了配置。
sudo ufw status verbose
Status: active Logging: on (low) Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip
1.1.1.1 53/udp ALLOW OUT Anywhere on < interface >
1.1.1.1 53/tcp ALLOW OUT Anywhere on < interface >
80/tcp ALLOW OUT Anywhere on < interface >
443/tcp ALLOW OUT Anywhere on < interface >
1194/udp ALLOW OUT Anywhere on < interface >
500/tcp ALLOW OUT Anywhere on < interface >
500/udp ALLOW OUT Anywhere on < interface >
4500/udp ALLOW OUT Anywhere on < interface >
8.8.8.8 53/udp ALLOW OUT Anywhere on < interface >
8.8.4.4 53/udp ALLOW OUT Anywhere on < interface >
80/tcp (v6) ALLOW OUT Anywhere (v6) on < interface >
443/tcp (v6) ALLOW OUT Anywhere (v6) on < interface >
1194/udp (v6) ALLOW OUT Anywhere (v6) on < interface >
500/tcp (v6) ALLOW OUT Anywhere (v6) on < interface >
500/udp (v6) ALLOW OUT Anywhere (v6) on < interface >
4500/udp (v6) ALLOW OUT Anywhere (v6) on < interface >
这个 UFW 配置似乎工作正常,当使用 1.1.1.1 或 8.8.8.8 作为我的 DNS 时,对 DNS 和域(通常是 google.com)的 ping 都成功。
完成 UFW 设置后,我开始安装 OpenVPN 以连接到 ProtonVPN 服务器 - 这就是我的 DNS 问题开始出现的时候。
当 VPN 与 UFW DISABLED 连接时,对 google.com 的 ping 将会解决并正常工作。
但是当 VPN 连接并且 UFW 已启用时,对 google 的 ping 将无法解决。
我尝试使用 1.1.1.1 和 8.8.8.8 作为我的 DNS,但问题仍然存在。
有人知道可能出了什么问题吗?我相信问题出在我的 UFW 配置中,但我看不出在哪里。
答案1
这是我的猜测:
- 默认情况下,VPN 隧道通常会在其 DHCP 配置中提供自己的 DNS 解析器。对于 ProtonVPN,我相信这些是内部 10.xxx 地址。我认为发生的情况是,所提供的任何 DNS 服务器都不属于端口 53 的 UFW 白名单,因此当您连接到 ProtonVPN 时,DNS 服务器会更改为不在您的白名单中的服务器,并且流量无法传出。
我以前从未这样做过,但看起来你可以通过添加以下内容来覆盖 DNS 配置:
script-security 2
push "dhcp-option DNS 1.1.1.1"
转到 ProtonVPN 的 OpenVPN 配置文件。
答案2
问题解决了,我会发布修复方法以防其他人遇到同样的问题。
事后看来,这确实是一个很简单的修复。
我没有意识到 VPN 接口需要 UFW 中的自己的规则才能联系 ProtonVPN DNS 服务器 - 因此我添加了此规则。
10.8.0.1 53/tcp ALLOW OUT Anywhere on < VPN Interface >
这条规则允许我在 VPN 连接且启用 UFW 的情况下 ping 8.8.8.8、10.8.0.1 和 google.com - 但我可以通过浏览器访问页面。
为了解决这个问题,我添加了以下规则 -
80/tcp ALLOW OUT Anywhere on < VPN Interface >
443/tcp ALLOW OUT Anywhere on < VPN Interface >
现在一切都正常。