我刚刚设置了一个 OpenVPN 服务器。它连接正常,但在 dnsleaktest.com 上检查后,我发现存在 DNS 泄漏。我搜索了解决方案,只能找到以下几行:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
他们没有解决这个问题。这是我的客户端配置文件:
client
dev tun
proto udp
remote **SERVER IP ADDRESS CENSORED** 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-128-CBC
auth SHA256
comp-lzo
verb 3
key-direction 1
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
这是resolv.conf
我的客户端和服务器的文件:
客户:
nameserver 127.0.0.1
服务器:
nameserver 8.8.8.8
PS 我没有使用 gnome 网络管理器,而是使用 CLI。这让我很困惑,为什么会出现 DNS 泄漏。
答案1
您的配置中没有任何内容表明您实际上是如何通过 vpn 连接引导客户端的 dns 请求的。您可以将客户端的名称服务器设置为 localhost/127.0.0.1,但无论哪个解析器正在监听 127.0.0.1:53,它仍然需要将 dns 请求转发到外部解析器。
在您的客户端配置中,您可以使用组合
--重定向网关
--dhpc-option DNS 10.8.0.1(或者任何服务器地址)
或者为了进行更精细的控制,如果您不想将所有流量引导到 vpn 隧道上,则可以使用 mangle/prerouting 链来标记目标端口 53 的数据包,然后添加一条规则(ip rule add fwmark(mark value)table VPN_TABLE)将标记的数据包引导到路由表,该路由表的默认网关设置为您的客户端 tun 的对等地址。