首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修复OpenVPN DNS泄漏

如何修复OpenVPN DNS泄漏
EN

Unix & Linux用户
提问于 2018-04-01 21:22:49
回答 4查看 29.4K关注 0票数 11

我刚刚订阅了一个VPN提供商。

我有Xubuntu 17.10,openvpn 2.4.3。在启动openvpn命令之后,我检查了IP (很好),并执行了一个简单的DNS泄漏试验:不是很好,它显示了我的互联网服务提供商!

如何修复DNS泄漏?

我有一次初步审讯:

  • 对我来说是“固定的”吗?还是远程服务器配置错误?

在我这方面,我尝试更改openvpn的.ovpn配置文件中的一些值:

  1. 最初已经有这些行可以工作,但是没有:脚本-安全性2 up /etc/openvpn/update-conf down /etc/openvpn/update-conf conf
  2. 我根据这个reddit回答 (显式指定DNS地址)更改了它们:dhcp-选项DNS 208.67.222.222 dhcp-选项DNS 208.67.220.220 dhcp-选项DNS 8.26.56.26 up "/ etc/openvpn/update-conf conf foreign_C11_1=‘dhcp-选项DNS 208.67.222.222’foreign_选项2=‘dhcp-选项DNS 208.67.220.220’foreign_3_3=‘dhcp-选项8.26.56.26'“etc/openvpn/update-conf foreign_ job _1=‘dhcp-选项DNS 208.67.222.222’foreign_job_2=‘dhcp-选项DNS 208.67.220.220’foreign_option_3=‘dhcp-选项DNS 8.26.56.26’。当/etc/resolvconf的内容被向上/向下的脚本更新时:# glibc解析器(3)的动态resolv.conf(5)文件由解析器(8)生成#不要手工编辑这个文件--您的更改将被覆盖# 127.0.0.53是系统解析的存根解析器。#运行“systemd-解析--状态”,查看有关实际名称服务器的详细信息。名称服务器208.67.222.222名称服务器208.67.220.220名称服务器8.26.56.26搜索局域网,但DNSleaktest仍然显示我的ISP。
  3. 因此,我发现了ubuntu包openvpn-systemd-resolved的存在,它提供了一个类似于update-resolve-conf的脚本,但使它与systemd一起工作(在这里,我不知道哪些进程使用这个:网络管理器?开胸?)我安装了这个包,并在我的.ovpn文件中替换了脚本名: up“/etc/openvpn/update.”放下“.”但还是没什么好运气。[在编写这篇文章时,我刚刚想出了解决方案,请参阅 我的回答 below]
  4. 然后,我经常使用/etc/resolv.conf文件。通常情况下,它不应该被更改,所以我将我的DNS服务器地址放到/etc/resolvconf/resolv.conf.d/base中,但是发出resolvconf -u似乎不起作用。
  5. 与VPN公司的支持人员聊天,没有解决方案。
  6. 我尝试了各种解决方案,比如这个,以及随后未被接受的答案:
    • 安装dnsmasq并将server=...放入/etc/dnsmasq.conf
    • /etc/dhcp/dhclient.conf (详细信息)中设置“替代”线;
    • chattr-based 黑客攻击.

  7. 我忘记了我尝试过的其他事情,然后我想,stackexchange会把我从我的痛苦中拯救出来,它奇迹般地做到了,仅仅是通过提出一个问题的力量。

经过更多的检查后我注意到了。我可以删除systemd-update-resolved行,它仍然有效,但只在某些条件下才能工作:

openvpn服务运行时,我会得到DNS泄漏信息。如果我停止了它,然后只为我的客户重新启动服务:

代码语言:javascript
运行
复制
sudo service openvpn stop
sudo service openvpn@client start

那就成功了。

对不起,我想我还没有彻底检查openvpn手册,但是why是吗?这不是安全漏洞吗?特别是因为openvpn服务是在从apt安装后自动激活的。How使更改永久化?(我尝试了sudo systemctl disable openvpn,但在下一次启动时我仍然遇到了同样的问题)。

一旦我停止了openvpn并启动了openvpn@client,我就没有DNS泄漏,route -n的输出是:

代码语言:javascript
运行
复制
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.65.1     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.17    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.65.0     0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.65.1     128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

sudo service openvpn restart之后:

代码语言:javascript
运行
复制
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.66.1     128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.16    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.66.0     0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.66.1     128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1

不再工作了,在这两种情况下我都会发现DNS泄漏。我试着安装包openresolv (它取代了解析器),它看起来很有效。下面是新的路由表:

代码语言:javascript
运行
复制
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         91.240.66.161   128.0.0.0       UG    0      0        0 tun0
0.0.0.0         192.168.1.254   0.0.0.0         UG    100    0        0 eno1
91.240.64.15    192.168.1.254   255.255.255.255 UGH   0      0        0 eno1
91.240.66.160   0.0.0.0         255.255.255.224 U     0      0        0 tun0
128.0.0.0       91.240.66.161   128.0.0.0       UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eno1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eno1
EN

回答 4

Unix & Linux用户

发布于 2018-04-01 21:22:49

因此,答案是仔细遵循ArchLinux wiki提供的始终点对点的说明:

https://wiki.archlinux.org/index.php/OpenVPN#Update_系统-解决_脚本

并在后面追加相应的行。

因此,分两个步骤:

代码语言:javascript
运行
复制
sudo apt install openvpn-systemd-resolved

并将以下行追加到.ovpn文件中:

代码语言:javascript
运行
复制
script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

如果不清楚,您的文件现在应该包含两行“向上”和两行“向下”:

代码语言:javascript
运行
复制
# old lines
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
# new lines
script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved

在我的问题中,请参见Edit 1

这个奇怪的systemd-resolved.service行为问题被引用为这里

在客户端配置文件中放置的选项似乎如下:

代码语言:javascript
运行
复制
dhcp-option DOMAIN-ROUTE .

显然它通过所选的连接路由所有DNS ..。

票数 8
EN

Unix & Linux用户

发布于 2019-02-08 18:25:24

这似乎是一个错误,因为Ubuntu在更新网络管理器-openvpn包之前切换到systemd-解析,以了解系统解析。Ubuntu18.10似乎已经用网络管理器1.12.2-0ubuntu5解决了这个问题。这里有更多信息:https://gitlab.gnome.org/GNOME/NetworkManager-openvpn/issues/10

“在公布之前,”鲍勃·威兰的回答对我有效。

票数 2
EN

Unix & Linux用户

发布于 2019-03-09 20:29:02

通过将这些行添加到我的OpenVPN配置文件中,我设法解决了这个问题:

脚本-安全性2 up /etc/openvpn/update-conf conf/etc/openvpn/update-conf conf

来自@ 如何解决Linux中的中的DNS泄漏

对于Windows用户(OpenVPN +2.3.9):

块-外部-dns

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/434916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档