域名系统 DNS服务&iptables

Posted 终究是想不起来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了域名系统 DNS服务&iptables相关的知识,希望对你有一定的参考价值。

1、简述DNS服务器原理,并搭建主-辅服务器。

DNS简介:

DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写。域名便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。上网时输入的网址通过域名解析系统解析找到了相对应的IP地址,这样才能上网。

DNS的域名解析过程:

用户使用浏览器输入网址时域名解析过程:

  • 客户访问时,先查自己的hosts文件,有则返回
  • 客户hosts中没有就去查自己的缓存,有则返回
  • 客户缓存没有就去找dns服务器
  • dns服务器先找根服务器获得顶级域服务器地址
  • dns服务器在找顶级域服务器去获得二级域服务器地址
  • dns服务器从二级域服务器获得最终的IP地址
  • 客户端从dns服务器中得到IP地址
    搭建主-辅服务器

    环境说明
    ```html/xml
    DNS主服务器:192.168.10.10
    DNS辅服务器:192.168.10.11
    DNS子域主服务器:192.168.10.12

    1.设置主DNS服务器
    安装软件
    ```html/xml
    [root@localhost ~]# yum -y install bind  #安装bind
    [root@localhost ~]# yum -y install bind-utils  #安装bind工具包
    [root@localhost ~]# systemctl start named  #启动服务
    [root@localhost ~]# netstat -tunlp  #查看状态
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1323/named          
    tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      891/sshd            
    tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1323/named          
    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      994/master          
    tcp6       0      0 ::1:53                  :::*                    LISTEN      1323/named          
    tcp6       0      0 :::22                   :::*                    LISTEN      891/sshd            
    tcp6       0      0 ::1:953                 :::*                    LISTEN      1323/named          
    tcp6       0      0 ::1:25                  :::*                    LISTEN      994/master          
    udp        0      0 127.0.0.1:53            0.0.0.0:*                           1323/named          
    udp        0      0 127.0.0.1:323           0.0.0.0:*                           639/chronyd         
    udp6       0      0 ::1:53                  :::*                                1323/named          
    udp6       0      0 ::1:323                 :::*                                639/chronyd   
    #其中53端口被监听,953端口被rndc监听

    配置环境
    ```html/xml
    [root@localhost ~]# vim /etc/resolv.conf #修改DNS配置文件
    nameserver 192.168.10.10

[root@localhost ~]# vim /etc/named.conf

listen-on port 53 192.168.10.10; ; #修改监听通信地址IP
allow-query any; ; #允许任何人连接,设置成any
dnssec-enable no;
dnssec-validation no;
#关闭dnssec,设置为no

配置解析一个正向区域
```html/xml
[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "test.com" IN 
        type master;  #定义主类型
        file "test.com.zone";  #这是相对路径,在/var/named下
;

建立区域数据文件
```html/xml
[root@localhost ~]# vim /var/named/test.com.zone
$TTL 3600
$ORIGIN test.com. #补一个后缀
@ IN SOA ns1.test.com. dnsadmin.test.com. (
2022012101
1H
10M
3D
1D )
IN NS ns1 #前面有补后缀可以简写,否则写全称最后要有点号
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 192.168.10.10
MX1 IN A 192.168.10.21
MX2 IN A 192.168.10.22
www IN A 192.168.10.10
web IN CNAME www
bbs IN A 192.168.10.23
bbs IN A 192.168.10.24

修改权限,检测语法
```html/xml
[root@localhost ~]# chgrp named /var/named/test.com.zone 
[root@localhost ~]# chmod o= /var/named/test.com.zone
#修改新键的区域数据文件权限
[root@localhost named]# named-checkconf
#检测语法

服务器重载配置文件和区域数据文件
```html/xml
[root@localhost named]# rndc status
number of zones: 101
[root@localhost named]# rndc reload
server reload successful
[root@localhost named]# rndc status
number of zones: 102
#查看状态可以看到重载后数字加1

DNS主服务器正向解析测试
```html/xml
[root@localhost ~]# dig -t -A www.test.com
;; Warning, ignoring invalid type -A

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -t -A www.test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18274
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.test.com.          IN  A

;; ANSWER SECTION:
www.test.com.       3600    IN  A   192.168.10.10

;; AUTHORITY SECTION:
test.com.       3600    IN  NS  ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com.       3600    IN  A   192.168.10.10

[root@localhost ~]# host -t A bbs.test.com
bbs.test.com has address 192.168.10.23
bbs.test.com has address 192.168.10.24
[root@localhost ~]# host -t A bbs.test.com
bbs.test.com has address 192.168.10.23
bbs.test.com has address 192.168.10.24
[root@localhost ~]# host -t A bbs.test.com
bbs.test.com has address 192.168.10.24
bbs.test.com has address 192.168.10.23

配置解析一个反向区域
```html/xml
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone "10.168.192.in-addr.arpa" IN
type master;
file "192.168.10.zone";
;

建立反向区域数据文件
```html/xml
[root@localhost ~]# vim /var/named/192.168.10.zone
$TTL 3600
$ORIGIN 10.168.192.in-addr.arpa.
@ IN SOA ns1.test.com. nsadmin.test.com. (
        2021012101
        1H
        10M
        3D
        12H )
        IN NS ns1.test.com.   #反向解析此处不能简写
10 IN PTR ns1.test.com.
21 IN PTR mx1.test.com.
22 IN PTR mx2.test.com.
23 IN PTR bbs.test.com.
24 IN PTR bbs.test.com.
10 IN PTR www.test.com.

修改反向区域文件权限,检测语法
```html/xml
[root@localhost named]# chgrp named /var/named/192.168.10.zone
[root@localhost named]# chmod o= /var/named/192.168.10.zone
[root@localhost named]# named-checkconf
[root@localhost named]# named-checkzone 10.168.192.in-addr.arpa /var/named/192.168.10.zone
zone 10.168.192.in-addr.arpa/IN: loaded serial 2018060101
OK

重载配置文件和区域数据文件
```html/xml
[root@localhost named]# rndc status
number of zones: 102
[root@localhost named]# rndc reload
server reload successful
[root@localhost named]# rndc status
number of zones: 103

主服务器反向解析测试
```html/xml
[root@localhost named]# dig -x 192.168.10.10

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -x 192.168.10.10
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25958
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;10.10.168.192.in-addr.arpa. IN PTR

;; ANSWER SECTION:
10.10.168.192.in-addr.arpa. 3600 IN PTR ns1.test.com.
10.10.168.192.in-addr.arpa. 3600 IN PTR www.test.com.

;; AUTHORITY SECTION:
10.168.192.in-addr.arpa. 3600 IN NS ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com. 3600 IN A 192.168.10.10

2.设置辅DNS服务器
```html/xml
[root@localhost ~]# yum -y install bind bind-utils
[root@localhost ~]# systemctl start named.service

[root@localhost ~]# vim /etc/resolv.conf
nameserver 192.168.10.11

[root@localhost ~]# vim /etc/named.conf
listen-on port 53 192.168.10.11; ;
allow-query any; ;
dnssec-enable no;
dnssec-validation no;

配置11辅服务器的正向区域
```html/xml
[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "test.com" IN     #正向区域
        type slave;
        file "slaves/test.com.zone";  #区域数据文件位置
        masters  192.168.10.10; ;  #定义正向区域主服务器IP
;
[root@localhost ~]# named-checkconf

到10主服务器上去配置文件
```html/xml
[root@localhost ~]# vim /var/named/test.com.zone
$TTL 3600
$ORIGIN test.com.
@ IN SOA ns1.test.com. dnsadmin.test.com. (
2022012102
1H
10M
3D
1D )
IN NS ns1
IN NS ns2 #增加A记录指向11辅服务器
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 192.168.10.10
ns2 IN A 192.168.10.11 #辅服务器IP
MX1 IN A 192.168.10.21
MX2 IN A 192.168.10.22
www IN A 192.168.10.10
web IN CNAME www
bbs IN A 192.168.10.23
bbs IN A 192.168.10.24
[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]# rndc status
server is up and running
#检测语法,检测状态都正常

到11辅服务器
```html/xml
[root@localhost ~]# rndc reload
server reload successful
#正向区域数据文件已经同步过来

测试用11辅服务器解析网址
```html/xml
[root@localhost slaves]# dig -t A www.test.com @192.168.10.11

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -t A www.test.com @192.168.10.11
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45851
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.test.com. IN A

;; ANSWER SECTION:
www.test.com. 3600 IN A 192.168.10.10

;; AUTHORITY SECTION:
test.com. 3600 IN NS ns2.test.com.
test.com. 3600 IN NS ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com. 3600 IN A 192.168.10.10
ns2.test.com. 3600 IN A 192.168.10.11

配置11辅服务器反向区域
```html/xml
[root@localhost ~]# vim /etc/named.rfc1912.zones 
zone "10.168.192.in-addr.arpa" IN 
        type slave;
        file "slaves/192.168.10.zone";
        masters  192.168.10.10; ;
;

[root@localhost ~]# named-checkconf

配置10主服务器反向区域的数据文件

```html/xml
[root@localhost ~]# vim /var/named/192.168.10.zone
$TTL 3600
$ORIGIN 10.168.192.in-addr.arpa.
@ IN SOA ns1.test.com. nsadmin.test.com. (
2022012102
1H
10M
3D
12H )
IN NS ns1.test.com.
IN NS ns2.test.com. #增加PTR记录指向11辅服务器
10 IN PTR ns1.test.com.
11 IN PTR ns2.test.com. #11辅服务器名称
21 IN PTR mx1.test.com.
22 IN PTR mx2.test.com.
23 IN PTR bbs.test.com.
24 IN PTR bbs.test.com.
10 IN PTR www.test.com.

[root@localhost ~]# rndc reload
server reload successful
#检测语法,重载配置

到11辅服务器
```html/xml
[root@localhost ~]# rndc reload
server reload successful
[root@localhost ~]# dig -x 192.168.10.10 @192.168.10.11

; <<>> DiG 9.9.4-RedHat-9.9.4-61.el7 <<>> -x 192.168.10.10 @192.168.10.11
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50592
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;10.10.168.192.in-addr.arpa.    IN  PTR

;; ANSWER SECTION:
10.10.168.192.in-addr.arpa. 3600 IN PTR ns1.test.com.
10.10.168.192.in-addr.arpa. 3600 IN PTR www.test.com.

;; AUTHORITY SECTION:
10.168.192.in-addr.arpa. 3600   IN  NS  ns2.test.com.
10.168.192.in-addr.arpa. 3600   IN  NS  ns1.test.com.

;; ADDITIONAL SECTION:
ns1.test.com.       3600    IN  A   192.168.10.10
ns2.test.com.       3600    IN  A   192.168.10.11

2、搭建并实现智能DNS。

```html/xml
前提条件:
DNS服务器 配置两个地址段 192.168.19.131/24 10.0.0.131/24 添加子接口
WWW服务器 配置两个地址段 192.168.19.132/24 10.0.0.132/24 添加子接口
客户端 配置两个地址段 192.168.19.127/24 10.0.0.127/24 添加子接口

1)DNS服务器上部署BIND服务
编辑/etc/named.conf文件
#新增acl配置
acl beijingnet
192.168.19.0/24;
;
acl shanghainet
10.0.0.0/24;
;

#新增view配置
view beijingview
match-clients beijingnet;;
include "/etc/named.rfc1912.zones.bj";
;
view shanghaiview
match-clients shanghainet;;
include "/etc/named.rfc1912.zones.sh";
;

#修改配置
listen-on port 53 localhost; ;
allow-query any; ;

注释行include "/etc/named.rfc1912.zones";
保存并退出

2)创建区域配置文件
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.bj
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh

vim /etc/named.rfc1912.zones.bj

zone "." IN
type hint;
file "named.ca";
;
zone "jiaxiao.com" IN
type master;
file "jiaxiao.com.zone.bj";
;

vim /etc/named.rfc1912.zones.sh

zone "." IN
type hint;
file "named.ca";
;
zone "jiaxiao.com" IN
type master;
file "jiaxiao.com.zone.sh";
;

3)创建区域数据库文件
vim /var/named/jiaxiao.com.zone.bj
$TTL 1D
@ IN SOA master admin.jiaxiao.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master A 192.168.19.131
slave A 192.168.19.130
www A 192.168.19.132

vim /var/named/jiaxiao.com.zone.sh
$TTL 1D
@ IN SOA master admin.jiaxiao.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master A 192.168.19.131
slave A 192.168.19.130
www A 10.0.0.132

#修改文件属主
chgrp named /var/named/jiaxiao.com.zone.bj
chgrp named /var/named/jiaxiao.com.zone.sh

4)客户端安装http服务
5)业务验证

### 4、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝
```html/xml
在服务端添加iptables规则
iptables -A INPUT -d 192.168.19.127 -p tcp -m multiport ! --dport 21:23,80 -j REJECT

3、NAT原理总结

NAT的实现分为下面类型:
SNAT:source NAT ,支持POSTROUTING, INPUT,让本地网络中的主机通过某一特定地址访问外部网络,实现地址伪装,请求报文:修改源IP
DNAT:destination NAT 支持PREROUTING , OUTPUT,把本地网络中的主机上的某服务开放给外部网络访问(发布服务和端口映射),但隐藏真实IP,请求报文:修改目标IP
PNAT: port nat,端口和IP都进行修改
1.PC访问 www.xxx.com,由于存在域名会通过DNS服务器解析域名从而获得公网IP地址。
2.PC收到此网站的公网IP地址后,封装数据。源IP为PC的IP地址;目的地址为解析获得的公网IP地址;目的端口号为80。并且将此报文发送给网关设备, 网关设备收到数据报文后通过路由关系发送到出口设备。
3.出口设备配置有NAT转换关系,将报文中的源IP地址转换为公网IP地址。重新封装数据报文后发出。(这一步为SNAT)
4.数据报文到达公有网络上,由于目的IP地址为公网IP地址,通过公网路由关系转发到网站端(服务端)。
5.服务端收到报文后,检查到目的地址为公网IP地址。通过本端配置的NAT映射关系,与公网IP地址相匹配的映射关系中寻找私网IP地址。找到映射关系后,将目的地址转换为私网IP地址(这一步为DNAT)。在通过内部网络路由关系将数据报文转发至相应的服务器。
6.服务器将收到的报文通过相关计算,重新封装报文,发送给用户PC。原理不变,经过多次数据交互。最后用户PC接收到数据报文,网站就被打开了。

5、iptables实现SNAT和DNAT,并对规则持久保存

```html/xml
1)启用ip_forward功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
2)分别添加防火墙规则测试
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d !10.0.0.0/24 -j SNAT --to-source 172.18.1.6-172.18.1.9
iptables -t nat -A PREROUTING -d 192.168.0.8 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.7:8080
3)保存规则
iptables-save > /root/iptables_config/config.txt
4)添加自动自动
vim /etc/rc.d/rc.local
添加如下行
/usr/sbin/iptables-restore < /root/iptables_config/config.txt

以上是关于域名系统 DNS服务&iptables的主要内容,如果未能解决你的问题,请参考以下文章

服务访问公网 dns解析错误

网络 -- DNS的原理与应用

网络 -- DNS的原理与应用

bind9搭建dns,本网可解析,其他网段只解析自定义的域名,不解析公网

Linux DNS的设置

9DNS主从和iptables使用