在18.04下使用openvpn的VPN DNS服务器,systemd-resolved配置失败

在18.04下使用openvpn的VPN DNS服务器,systemd-resolved配置失败

我尝试了几个小时在 Ubuntu 18.04 上设置我的 DNS 解析,但到目前为止还没有成功......

我有一个正在运行的 openvpn 连接,并且正在创建接口 tun1。我确实定义了一些 iptable 规则,它们可用作 killswitch,如下所示:

iptables -F
...
iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 9365 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 9365 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -j ACCEPT -m owner --gid-owner openvpn
iptables -A OUTPUT -j ACCEPT -o lo
iptables -A OUTPUT -j ACCEPT -o tun1
iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 137 -j ACCEPT
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED
iptables -P OUTPUT DROP
iptables -P INPUT DROP
...

这里的主要目标是仅允许流量通过 vpn 隧道 --> tun1。这很有效。

但是,应用这些规则后,DNS 解析不再起作用。我怀疑它不起作用是因为 DNS 请求不是通过 tun1 隧道传输的,而是使用 eth0。通过 IP 的连接仍然成功,因此 IPTables 没有问题。我执行了以下命令,结果systemd-resolve --status显示如下:

Link 5 (tun1)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Link 3 (wlan0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no

Link 2 (eth0)
      Current Scopes: DNS
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 192.168.1.1

192.168.1.1 是我的路由器,正在将 DNS 解析为 8.8.8.8。我确实想将范围从 tun1 更改为没有任何DNS并添加应使用的 DNS 服务器的 IP 地址。我已经尝试了好几个小时,但毫无效果...:

[Match]
Name=tun0

[Resolve]
DNS=<IP>

由于我的最终目标是通过 openvpn 隧道传输我的 DNS 流量,因此我认为这可能是一个 openvpn 配置问题:

对我来说,主要问题是了解所有这些部分如何协同工作。我需要做什么才能实现我的 DNS 最终通过 tun1 隧道传输的目标?有人遇到过这种情况,并且在查看我链接的不同“解决方案”时遇到过类似的问题吗?

我希望你能帮忙,对此我感觉很累……

PS:我确实知道我可以通过添加 IPTables 规则来解决这个问题,以便允许流量通过其他接口到达我的 DNS 服务器,但这不是我想要做的,而且也会导致 DNS 泄漏……

相关内容