我已将 Bind 设置为我的内联网 DNS 解析服务(在 Ubuntu 16.04.02 LTS 上运行)。
我想要实现的目标: 具有指向服务器的公共域名(例如:domain.com -> 1.2.3.4) 使用指向内部机器的相同子域名(例如:machine1.domain.com -> 192.168.1.100)
我所做的:(配置)
文件:/etc/bind/named.conf.options
options {
directory "/var/cache/bind";
recursion yes;
allow-recursion { 192.168.2.0/24; };
listen-on {192.168.2.4; };
allow-transfer { none; };
forwarders {
192.168.2.1; #router
8.8.8.8; #public dns
};
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
acl "truested" {
192.168.2.0/24;
192.168.2.4; # ns1
192.168.2.5; # ns2
};
文件:/etc/bind/named.conf.local
zone "domain.com" {
type master;
file "/etc/bind/zones/db.domain.com";
allow-transfer { 192.168.2.5;};
};
zone 2.168.192.in-addr.arpa {
type master;
file "/etc/bind/zones/db.2.168.192";
allow-transfer { 192.168.2.5; };
};
文件:/etc/bind/zones/db.domain.com
$TTL 604800
@ IN SOA ns1.domain.com. root.domain.com. (
5 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name servers - NS Records
IN NS ns1.domain.com.
IN NS ns2.domain.com.
; name servers - A Records
ns1.domain.com. IN A 192.168.2.4
ns2.domain.com. IN A 192.168.2.5
; 192.168.2.0/24 - A Records
server.domain.com. IN A 192.168.2.120
server2.domain.com. IN A 192.168.2.121
ns1.domain.com. IN A 192.168.2.4
ns2.domain.com. IN A 192.168.2.5
文件:/etc/bind/zones/db.2.168.192
$TTL 604800
@ IN SOA ns1.domain.com. root.domain.com. (
4 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
; name servers - NS Records
IN NS ns1.domain.com.
IN NS ns2.domain.com.
; PTR Records
4 IN PTR ns1.domain.com.
5 IN PTR ns2.domain.com.
120 IN PTR server.domain.com.
121 IN PTR server2.domain.com.
问题:当我从计算机(将此服务器“192.168.2.4”设置为 DNS 服务器)执行 DNS 查找时,查找以下 IP 地址:域名.com它没有返回值。因此无法打开外部服务器 (domain.com) 的网页。
我必须进行哪些更改才能使 DNS 服务器按我希望的方式工作?
答案1
为什么不为该区域设置转发域名.com并为子域创建一个新区域域名.com哪个本地名称服务器具有权威性?
我的示例使用示例.com代替域名.com ...
192.168.33.0/24 +-----------------------------+ | | | | | 客户端 1 |192.168.33.1 | +----------------------+ | client1.corp.example.com |----------- | | | | |192.168.33.5 | 企业名称服务器| +-----------------------------+ --------------| ns1.corp.example.com | | | | | +----------------------+ +-------------------------+ | | | | |服务器1 | 192.168.33.2 | |server1.corp.example.com |-----------| | | | +------------+ +-------------------------+ |192.168.33.7 | | --------------- 路由器 | | | | | +------|-----+ | | | |1.2.3.4 | | 互联网 1.2.3.5 /----- /-------------- | +------------------ | | | | 1.2.3.6 | WWW服务器 | | | www.example.com | +------------|------------+ | | | | +-----------------+ | example.com 名称服务器 | | ns.example.com | | | +-------------------------+
配置如下:
/etc/bind/named.conf.options:
选项 { 目录“/var/cache/bind”; dnssec 验证自动; auth-nxdomain 没有; };
/etc/bind/named.conf.local:
区域“example.com”{ 输入前进; 货运代理 { 1.2.3.6; }; }; 区域“corp.example.com”{ 類型主屬; 文件“/etc/bind/db.corp.example.com”; }; 区域 33.168.192.in-addr.arpa { 類型主屬; 文件“/etc/bind/db.192.168.33”; };
/etc/bind/db.db.corp.example.com:
$TTL 604800 $ORIGIN corp.example.com。 @ IN SOA ns1.corp.example.com.admin.example.com.( 5; 604800; 86400; 2419200; 604800; ) ;名称服务器 在 NS ns1.corp.example.com 中。 ;名称服务器 ns1 在 192.168.33.5 ;主持人 客户端1在192.168.33.1中 服务器1 在 192.168.33.2 中 ns1 在 192.168.33.5
/etc/bind/db.192.168.33:
$TTL 604800 $ORIGIN 33.168.192.in-addr.arpa。 @ IN SOA ns1.corp.example.com.admin.example.com.( 4; 604800; 86400; 2419200; 604800; ) ;名称服务器 在 NS ns1.corp.example.com 中。 ;主持人 1 IN PTR client1.corp.example.com。 2 IN PTR server1.corp.example.com。 5 输入 PTR ns1.corp.example.com。
注意:您缺少原产地指令数据库.2.168.192区域文件,但您在 PTR RR 中使用快捷方式。
使用本地安装的 BIND 进行 Nslookup 测试(转发到8.8.8.8对于区域示例.com这样我们就能得到一些结果):
> 服务器 127.0.0.1 默认服务器:127.0.0.1 地址:127.0.0.1#53 > 设置类型=ns > corp.example.com 服务器:127.0.0.1 地址:127.0.0.1#53 corp.example.com 名称服务器 = ns1.corp.example.com。
> 设置类型=a > server1.corp.example.com 服务器:127.0.0.1 地址:127.0.0.1#53 名称:server1.corp.example.com 地址:192.168.33.2
对于www.example.com:
> 设置类型=a > www.example.com 服务器:127.0.0.1 地址:127.0.0.1#53 非权威答案: 名称:www.example.com 地址: 93.184.216.34
答案2
如上所述,您需要分离内部地址空间和外部地址空间,例如:
互联网上的 www.xyz.com 1.1.1.1(这是一个例子:P)
www.xyz.com 内部地址为 192.168.1.20 (示例)
除非您做出“查看”,否则您不能让同一主机指向两个不同的地址并期望获得一个内部地址和一个外部地址。
如果 IP 是公共 IP,您仍然可以连接到 www.xyz.com,但您的路由器需要能够进行“发夹”连接,基本上它会在其公共接口上将流量路由到自身。大多数路由器都没有设置这样做。您可以维护 2 个 DNS,一个在外部,一个在内部,它们具有与视图相同的效果。
每个公司域名都有同样的问题,所以已经完成了;-)
答案3
您的配置中实际上并没有 domain.com 的 A 记录。
你想添加类似
A 192.168.2.120
A 192.168.2.121
作为 NS 记录下方(或上方)的 A 记录。这会将“domain.com”解析到两个服务器中。
(由于各种原因,虽然一对指向 server1 和 server2 的 CNAME 是一个很好的答案,但一般 DNS 不允许这样做。)
您拥有所有名称服务器和主机的 A 记录,但域名本身却没有。您可能还需要域名的 MX 记录。