更改 openvpn 连接上的默认 DNS

更改 openvpn 连接上的默认 DNS

我正在 Ubuntu 12.10 上使用网络管理器连接到 openvpn 服务器。连接工作没有问题。但是,当我连接时,我想将默认 DNS 服务器更改为 VPN 网络上的服务器。这样我就可以使用仅在 VPN 网络上定义的域名。有没有办法可以使用网络管理器自动执行此操作?

如果我需要的话,我还可以更改 openvpn 服务器上的设置。

谢谢!

答案1

  1. 至于服务器配置,OpenVPN 服务器应该发出类似的信息

push dhcp-option DNS XXX.XXX.XXX.XXX

push dhcp-option DOMAIN mylocaldomain.local

(查看更多详情这里)。XXX.XXX.XXX.XXX是您的 DNS 服务器,mylocaldomain.local是您的本地域。当您在本地计算机上启动 OpenVPN 客户端输出(dhcp-option DNS ...、dhcp-option DOMAIN ...)时,可以轻松找到它。

  1. OpenVPN 客户端应更新 resolv.conf(在 14.04 上测试)

$ sudo openvpn --config client.ovpn --up /etc/openvpn/update-resolv-conf --down /etc/openvpn/update-resolv-conf --script-security 2

答案2

正如 @peterph 所指出的,轻量级 DNS 似乎是最好的选择。这是因为/etc/resolv.conf只能真正处理一个 DNS。

所以我认为域名解析是 Linux 上的最佳选择。我在 CentOS 6 上使用了它,但其他配置应该都差不多。

  • 使用类似的东西安装yum install dnsmasq(或 apt-get install)。
  • 启动 dnsmasq (只是为了测试)service dnsmasq start。您可能需要停止并禁用其他 DNS 服务器(如果有)(检查 DNS 端口上正在运行的内容:)netstat -aonp | grep ":53"
  • 编辑/etc/dnsmasq.conf
    • 很高兴拥有(参见人 dnsmasq用于描述):
      • 需要域
      • 假冒隐私
      • 严格秩序
      • 无法解决
    • 为特定 URL 设置服务器。
      • 语法是server=/some URL base/dns server IP
      • 例如: -向server=/example.com/192.168.0.1DNS 服务器询问.192.168.0.1*.example.com
    • 添加其他通用服务器。例如谷歌服务器:
      • 服务器=8.8.8.8
      • 服务器=8.8.4.4
    • 可以选择禁用查找缓存(以避免某些服务器断开连接或其他情况时出现缓存问题):
      • 缓存大小=0
  • 重新加载配置service dnsmasq restart
  • 为 NetworkManager 设置 DNS(如果您使用它)
    • 编辑/etc/sysconfig/network-scripts/ifcfg-*(更改 DNS1:)DNS1=127.0.0.1
    • 重新开始:/etc/init.d/network restart
  • dig使用或测试域nslookup
  • 启动时运行服务:(chkconfig dnsmasq on请注意,这chkconfig是 CentOS/RedHat 特定的,用于update-rc.d大多数其他系统)。

答案3

虽然这通常是在评论中提到的服务器上完成的操作,但在某些情况下,您可能只想使用 VPN 的 DNS 进行 VPN 内部的查询。在这种情况下,您可能希望在系统上运行一个轻量级 DNS 守护进程,并指示它向何处发送什么查询。如果您同时使用多个 VPN,这基本上是必须的。

相关内容