端口 53 上的 OpenVPN

端口 53 上的 OpenVPN

我在公共 IP 上的 UDP 端口 53 上设置了一个 OpenVPN 服务器。所有连接的客户端都会被推送到外部 DNS 服务器,例如 8.8.8.8 (Google) 和 OpenDNS。

有时,连接的 VPN 客户端上的解析会停止工作,并且我会在 OpenVPN 日志中收到奇怪的数据包。现在我的问题是为什么会这样?

当 VPN 客户端(假设 192.168.1.22)执行 DNS 查询时,该查询应转到 8.8.8.8:53,然后应将 UDP 响应数据包通过高 UDP 端口发送回 192.168.1.22。

有任何想法吗?

答案1

如果配置正确,设置应该可以工作。封装的工作方式如下:

原始数据包(DNS-Q):

[src=YourIP_wlan0:udp/random1] [dst=Google:udp/53]

新的数据包(B),经过 OpenVPN 处理:

[src=YourIP_tun0:udp/random2] [dst=VPNserver:udp/53] [DNS-Q]

新的数据包(C),在您的WIFI提供商NAT之后:

[src=YourIP_Wifi:udp/random2] [dst=VPNserver:udp/53] [DNS-Q]
  1. 数据包通过 UDP/53(加密)发送到 VPN 服务器。
  2. VPNserver 解密数据包,打开它,查看原始第 3 层地址并将其转发到其默认网关(HomeRouter)。
  3. 在发送数据包之前,HomeRouter 会执行 NAT。当数据包发送到 Google 时,它​​现在如下所示:

    [src=HomeRouter_PublicIP:random_port1] [dst=Google:udp/53]
    
  4. Google 获取数据包,处理 DNS 查询,并使用 DNS-REPLY 回复 HomeRouter_PublicIP(请注意,这不是 DNS 转发,只是 NAT)。返回数据包 (DNS-R) 现在如下所示:

    [src=Google:udp/53] [dst=HomeRouter_PublicIP: random_port1]
    
  5. HomeRouter收到回复数据包并进行反向NAT:

    [src=Google:udp/53] [dst=YourIP_tun0:random_port1]
    
  6. HomeRouter 将数据包转发到VPN服务器。

  7. VPN服务器对数据包进行加密:

    [src=VPNserver:udp/53] [dst=YourIP_WiFi: random_port2] [DNS-R]
    
  8. VPN服务器通过互联网发送数据包。

  9. 你的机器收到数据包,然后解密/解封它,如下所示:

    [src=Google:udp/53] [dst=YourIP_wlan0: random_port1]
    
  10. DNS解析完成。

答案2

端口 53 udp 是为 DNS 流量保留的。即使您可能已让 OpenVPN 在该端口上运行,但您也严重阻碍了服务器解析 DNS 查询的能力。我强烈建议您在尝试修复您看到的问题之前,使用其他端口,即该机器上其他服务未使用的端口。

答案3

您需要检查主路由器,以防出现数据包重定向。例如,任何对 53 的请求都会被路由到 ISP DNS。

相关内容