我使用的是 Ubuntu 14.10,我安装了 forticlient 来连接到我的工作网络(按照他们的文档操作),一段时间后,我开始在连接大多数互联网网站时遇到大麻烦。经过一番搜索(以及许多我忘记的测试和配置...),我意识到了这一点:
- 我不认为问题发生在安装和/或第一次使用 forticlient 之后
- forticlient 碰巧显示了一些与 sslvpn 相关的无法读取的错误消息
- (现在)连接到 VPN 后一切正常,
然后当没有使用 VPN 时:
- 我连接到 VPN 时访问的地址/网站仍然有效
- host 和 nslookup 似乎有效
- 平通常没有 - 但对于我在 VPN 上连接的地址
- Firefox 总是返回“未找到服务器”页面 - 但对于我在 VPN 上连接的地址
- nslookup 输出从
Got recursion not available from X.X.X.X, trying next server
哪里开始X.X.X.X
指向我工作的服务器
实际上,最后一点让我意识到问题可能来自 forticlient,然后我意识到第三点。
所以我有两个问题:
- 我该如何修复非 VPN 连接?
- DNS 和 VPN 系统在 Ubuntu/Linux 中如何工作?有哪些文件和程序与之相关,以何种方式/顺序?
谢谢
答案1
我发现即使没有连接到 vpn,也可能/etc/resolf.conf
包含我工作的服务器地址(X.X.X.X
问题中的)。实际上它包含了两次,当客户端连接时,则有 3 个。我猜 vpnclient 恰好在出现某些错误时留下了这些行。
所以我删除了那几行,只保留:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.
而且它似乎又能正常运作了。
如果我再次遇到该问题,我会更正此答案。
答案2
我在 Ubuntu 20.04 上遇到了类似的问题。
第一次使用 Forticlient 连接 VPN 后,系统根本无法连接到互联网。尝试过卸载它,但也没有用。
Forticlient 可能弄乱了该/etc/resolv.conf
文件。
尝试重新安装resolveconf
,但卸载后,由于没有网络而无法重新安装。
解决方案是resolveconf
从 Ubuntu repo手动下载软件包
http://archive.ubuntu.com/ubuntu/pool/main/r/resolvconf/
以及它的依赖性ifupdown
,
http://archive.ubuntu.com/ubuntu/pool/main/i/ifupdown/
并使用以下方式安装它们:
sudo dpkg -i ifupdown_0.8.35ubuntu1_amd64.deb
sudo dpkg -i resolvconf_1.78ubuntu7_all.deb
安装后,在文件中添加以下行/etc/resolvconf/resolv.conf.d/tail
以指定名称服务器:
nameserver 8.8.8.8
将其添加到尾部将确保.conf
在完成任何更新后将该行附加到文件。
并运行以下命令来更新文件.conf
:
sudo resolvconf -u
名称服务器现在应该出现在 中/etc/resolv.conf
。
网络也应该恢复正常了。
答案3
扩展已接受的答案,为了防止 forticlient 使用虚假的名称服务器行更新 /etc/resolv.conf 文件,我使用了一个命令这里推荐:
sudo chattr +i /etc/resolv.conf
这样,resolv.conf 将不会被修改(与使用 chmod 删除写入权限不同,这不会阻止它更新文件)。注意:它对我有用,但对其他人不一定有用 - 我预计当 DNS 设置在 DHCP 之后自动更新时它会失败。
在应用该标志之前,不要忘记删除 forticlient 插入的行。应用不可变标志后,forticlient 会报告错误,/etc/resolv.conf: Permission denied
但 VPN 无论如何都能正常工作。
答案4
对我来说情况更糟,基本上所有的“互联网”都停止工作了,甚至连 forticlient 都无法再次连接。
我必须手动添加一个有效的 DNS 条目 /etc/resolv.conf
问题就解决了。