我有一个虚拟服务器 (Ubuntu 14.04.2 LTS),我在其上运行 OpenVPN。几乎所有东西都运行良好:客户端可以通过其 IP 和名称访问其他客户端(我必须使用“script-security 2”、“up/down /etc/openvpn/update-resolv-conf”修改客户端配置,并且必须编写一个输入/更新 dns 条目的小脚本,以实现客户端名称解析)。
唯一的问题是,我的服务器不提供名称解析:在我的服务器上,我可以通过“ping 10.8.0.2”ping 客户端,但“ping 客户端名称”会导致“未知主机”(而如果我从我的一个客户端执行此操作,“ping 客户端名称”则可以工作)。
我知道这肯定是与 DNS 相关的问题,但我无法摆脱它。当我查看 resolv.conf 时,我看到:
nameserver 80.X.X.X
nameserver 80.X.X.X
哦,好的,本地名称服务器似乎丢失了。我的想法是编辑 resolv.conf。我尝试了几个条目(“127.0.0.1、127.0.1.1、10.8.0.1”),但都没有用(重新启动 openvpn 服务后)。
我也尝试编辑 /etc/dhcp/dhclienf.conf 并添加“prepend domain-name-servers 127.0.0.1”(并重新启动)但这也没有什么区别。
我的 server.conf 如下所示:
proto udp6
dev tun
ca ./easy-rsa2/keys/ca.crt
cert ./easy-rsa2/keys/xxx.xxx.crt
key ./easy-rsa2/keys/xxx.xxx.key
dh ./easy-rsa2/keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
#this is a script that configures dns-entries for clients
client-connect "/etc/openvpn/scripts/learn-address.sh"
script-security 3 system
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DOMAIN name.domain"
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 3
有人能指出我做错了什么吗?我不是第一个遇到这个问题的人。我认为运行 openvpn 的服务器也希望通过名称而不仅仅是 IP 与客户端通信是一种常见行为。
答案1
您是否安装了 DNS 服务器?OpenVPN 不提供任何名称解析功能。您需要在服务器上运行单独的 DNS 服务器(或push "dhcp-option DNS 8.8.8.8"
在服务器配置中添加类似内容)。OpenVPN 仅通过学习脚本更新区域/主机文件。
请查看此链接。
这是一个学习脚本,当客户端连接或断开连接时,它会更新 hosts 文件。它使用 dnsmasq 作为 DNS 服务器。
答案2
我安装了 resolvconf(通过 apt-get install resolvconf)。然后我配置了“/etc/resolvconf/head”文件,并添加了“nameserver 10.8.0.1”作为 DNS 服务器。在 head 文件中执行此操作(以便 10.8.0.1 是列表中的第一个名称服务器)而不是在 tail 文件中执行此操作似乎很重要!我也尝试使用 tail 文件,但结果不正确。
现在我可以通过 访问我的所有 VPN 主机<vpn-hostname>.<domainname>
。