我使用带有服务器和一些客户端的 openvpn 基础架构。客户端可以通过其主机名相互调用,但无法以相同的方式访问服务器。目前可以通过其 IP 地址访问服务器。
如何将服务器名称和相应的 IP 地址(v4 和 v6)传输给客户端?
如果可能的话,我不想设置额外的 DNS 服务器
答案1
编辑重新阅读您的问题:
好的,如果没有 DNS 服务器,您可以将服务器的 IP 添加到客户端的 /etc/hosts 文件中:
172.31.0.1 dns.local
不过,我建议使用 DNS 服务器选项,它很简单:
在 openvpn 服务器上安装 bind 或 dnsmasq,并将以下内容添加到其配置中:
push "dhcp-option DOMAIN yourdomain.local"
push "dhcp-option DNS X.X.X.X"
其中 XXXX 是 bind/dnsmasq 监听的 IP。
这些选项执行以下操作:
- DNS XXXX -- 设置主域名服务器 IPv4 地址。重复此选项可设置辅助 DNS 服务器地址。
- DOMAIN yourdomain.local - 设置连接特定的 DNS
如果 DNS 服务器与 VPN 客户端不在同一网络中,您可能需要使用:
push "redirect-private bypass-dns"
这将创建一条跳过 VPN 的到 DNS 服务器的单独路由。
如果您使用 Bind,那么您的 named.conf 将包含:
zone "local" IN {
type master;
allow-update { none; };
notify no;
file "/etc/bind/local.zone";
};
和 local.zone:
$TTL 600
@ IN SOA dns.local. root.local. (
2018061001 ; serial
12h ; refresh
1h ; retry
2w ; expire
1h ; minimum
)
;
NS ns ; Inet Address of name server
MX 10 mail.local. ; Primary Mail Exchanger
MX 20 mail.local. ; Secondary Mail Exchanger
localhost IN A 127.0.0.1
dns IN A 172.31.0.1
ns IN A 172.31.0.1
mail IN A 172.31.0.1
client100 IN A 172.31.0.100
client101 IN A 172.31.0.101
如果您是 Bind 新手,请确保它不会响应任何面向 Internet 的 IP。