Linux下,bind配置转发,bind能正常启动,本地域名也能正常解析,但是就是无法转发?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下,bind配置转发,bind能正常启动,本地域名也能正常解析,但是就是无法转发?相关的知识,希望对你有一定的参考价值。
转发有两个参数要设置,一个是 forward
一个是 forwarders
另外,被转发的服务器还要接受你的请求才行。追问
forward和forwarders我都配置了,而且转发服务器和被转发的服务器都在一个局域网内,你说的被转发的服务器还要接受请求是什么意思?
追答很抱歉我的表述不够清楚。
我的意思是,服务器再接受你的转发请求之后,是否会处理你的查询请求。
如果你能确认,服务器可以处理你的的查询请求,请再检查一下以下两个参数。
recursion yes(默认值是yes)
allow-recursion 中包含了你的客户端地址
这个是我的option的配置信息,我在本机采用dig @10.0.0.144 www.ceshi.com,可以正常解析域名,当我用本机的Ip的时候就不行了。
请先加以下两个参数试一下。
allow-queryany;;
listen-on port 53 any;;
如果还不行,请测试一个,
你的服务器所管理的自身的域名是否可查询。
把这项注释掉,因为他开启了验证,关闭即可
linux 的 DNS 和 bind
bind作为dns的主要实现的应用,所以就显得尤为重要;
一般的CentOS中,需要我们用yum装一个bind;然后用启动bind程序;然后在查看是否处于活动状态;
named 就是 DNS 服务
然后查看bind的主配置文件;在/etc/named.conf中;然后有许多选项;
选项的意思:
全局配置段:
options {
listen-on port 53 { 127.0.0.1; 172.16.1.74; };
//在启动DNS服务时,named进程所监听的套接字;[any|none]
directory "/var/named";
//定义解析库(区域数据库文件)的根目录;在主配置文件中添加此配置语句之后,可以在后面定义区域数据库时使用相对路径;
allow-query { localhost; };
//访问控制语句,意思是允许本服务器处理那些主机发送来的解析查询请求;默认是localhost,即:只允许本机以127.0.0.1发送查询请求;
recursion yes;
//允许本服务器为所有查询请求做递归查询;
allow-recursion { 172.16.1.74/16; };
//访问控制指令:允许那些客户端做递归查询;
pid-file "/run/named/named.pid";
//定义存放主进程pid文件的路径;
};
区域配置段:
zone "FQDN" IN {
//声明一个区域名称;此名称要使用FQDN来表示;如:qhdlink.com
type master;
//区域的类型:
master:主区域:
slave:辅助区域;
hint:提示区域,仅能在根域上设置;
forward:转发区域;
file "named.localhost";
//存放于该域有关的解析信息的数据库文件的路径;如果是相对路径,则相对于在主配置文件的全局配置端中的"directory"指令所定义的目录而言;
注意:文件的所有权和权限设置必须能够让named用户有读取权限;
allow-update { none; };
//访问控制指令,允许那些客户端对数据库内容进行动态更新;主要用于DDNS;
allow-transfer { 172.16.0.0/16; };
//访问控制指令:允许那些主机能够从当前服务器进行区域传送;
allow-recursion { 172.16.1.74/16; };
//访问控制指令:允许那些许那些客户端做递归查询;
allow-query{ address_match_element; ... };
//访问控制指令:允许那些主机进行区域内的解析查询;
allow-update { address_match_element; ... };
//访问控制指令:允许那些主机向当前服务器发送区域变更通知;
};
在配置完bind的配置文件之后;需要用named-checkconf来检测文件的书写格式是否正确;
在检测完以后,配置文件的内容并不会立即生效;因此我们需要重新读取named程序;可以用systemctl命令;也可以用 rndc reload 来读取;
区域配置文件示例:
zone "FQDN" IN {
type master;
file "FQDN.zone";
allow-update { none; };
allow-tranfer { none; };
}
当区域配置文件配置完之后,我们需要在其数据库添加记录;
在数据库中,有各种记录书写的格式,简要介绍各种记录的书写格式;
SOA:
DN|FQDN:当前域的域名,如:qhdlink.com.
或者使用"@"代替域名;@符号会使用主配置文件中定义的域名来代替;
VALUE:由以下几个部分组成:
1.当前域中的主名称服务器的FQDN;
2.当前域的数据库管理员的邮箱地址,需要使用"."来代替"@": root.qhdlink.com.
3.主名称服务器进行区域传送的相关时间参数的定义:
(Serial Refresh Retry Expeir TTL)
(Serial ;
Refresh ;
Retry ;
Expeir ;
TTL;)
NS记录:
name:当前域的域名;可以写完全合格域名FQDN;可以写@占位;还可以省略不写;如果省略不写,则意味着该资源记录的名称与其上一条资源记录的名称相同;
value:当前区域内被授权的名称服务器的FQDN;
注意:
1.一个域中有多少台名称服务器,就需要写多少个NS资源记录;
2.每个NS资源记录都必须要有一个A记录与之对应;
MX记录:
name:当前域的域名;可以写完全合格域名FQDN;可以写@占位;还可以省略不写;如果省略不写,则意味着该资源记录的名称与其上一条资源记录的名称相同;
RR_TYPE: MS Priority
value:当前域中有效的邮件服务器的FQDN;
注意:
1.一个域中,可以有多条MX资源记录,通过优先级的大小决定被使用的次序;
2.每个MX资源记录都必须对应一条A记录;
A记录:
name:域中指定主机的FQDN;
value;该主机上真实有效的Ipv4地址;
示例:
www.qhdlink.com. 43200 IN A 192.168.1.1
www 43200 IN A 192.168.1.1
泛域名:
*.qhdlink.com. 43200 IN A 192.168.1.1
* 43200 IN A 192.168.1.1
直接域名解析:
qhdlink.com. 43200 IN A 192.168.1.1
通常,泛域名或直接域名都是为了防止用户写错名称而导致无法给出正确的解析结果;
CNAME记录:
name:域中指定主机的别名;
value:真正的主机的FQDN;
示例:
ftp.qhdlink.com [86400] IN CNANE www.qhdlink.com.
ftp [86400] IN CNANE www
PTR记录:
name:将IP地址的四个八位组反过来,将IP地址中的主机部分加上反向域的域名后缀;
如果IP地址是 :172.16.1.100/16,其对应的名称的写法;
100.1 IN PTR www.qhdlink.com.
100.1.16.172.in-addr.arpa. IN PTR www.qhdlink.com.
value:域中与指定的IP地址对应的FQDN;
注意:value部分必须写FQDN,绝对不能省略域名后缀,最后必须以"."结尾;否则bind程序会将反向域的域名补在名称之后;
当写完了配置文件中的域所对应的数据库内容之后,需要用named-checkzone命令进行检测数据的书写格式是否正确;
named-checkzone FQDN FQDN.zone
当配置完成之后,我们用rndc reload重载配置文件之后,就可以完成本地域名解析了;
测试域名解析的几个常用命令;dig,host,nslookup
以上是关于Linux下,bind配置转发,bind能正常启动,本地域名也能正常解析,但是就是无法转发?的主要内容,如果未能解决你的问题,请参考以下文章
bind() 可以将 IPTABLES 中配置的端口作为转发端口
LinuxDNS服务-BIND从服务器缓存服务器转发服务器配置