UFW 和 OpenVPN(ProtonVPN 服务器)的 DNS 解析失败

UFW 和 OpenVPN(ProtonVPN 服务器)的 DNS 解析失败

我有一个问题,几天来我一直在尝试解决 - 我正在安装一个相对较新的 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 >

现在一切都正常。

相关内容