域名系统 DNS服务&iptables

案头见蠹鱼,犹胜凡俦侣。这篇文章主要讲述域名系统 DNS服务&iptables相关的知识,希望能为你提供帮助。
1、简述DNS服务器原理,并搭建主-辅服务器。
DNS简介:
DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写。域名便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。上网时输入的网址通过域名解析系统解析找到了相对应的IP地址,这样才能上网。
DNS的域名解析过程:

域名系统 DNS服务&iptables

文章图片

用户使用浏览器输入网址时域名解析过程:
  • 客户访问时,先查自己的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 AddressForeign AddressStatePID/Program name tcp00 127.0.0.1:530.0.0.0:*LISTEN1323/named tcp00 0.0.0.0:220.0.0.0:*LISTEN891/sshd tcp00 127.0.0.1:9530.0.0.0:*LISTEN1323/named tcp00 127.0.0.1:250.0.0.0:*LISTEN994/master tcp600 ::1:53:::*LISTEN1323/named tcp600 :::22:::*LISTEN891/sshd tcp600 ::1:953:::*LISTEN1323/named tcp600 ::1:25:::*LISTEN994/master udp00 127.0.0.1:530.0.0.0:*1323/named udp00 127.0.0.1:3230.0.0.0:*639/chronyd udp600 ::1:53:::*1323/named udp600 ::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 53192.168.10.10; ; #修改监听通信地址IP
allow-queryany; ; #允许任何人连接,设置成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下 ;

【域名系统 DNS服务&iptables】建立区域数据文件
```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.INA; ; ANSWER SECTION: www.test.com.3600INA192.168.10.10; ; AUTHORITY SECTION: test.com.3600INNSns1.test.com.; ; ADDITIONAL SECTION: ns1.test.com.3600INA192.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.INPTR
; ; 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. 3600INNSns1.test.com.
; ; ADDITIONAL SECTION:
ns1.test.com.3600INA192.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 53192.168.10.11; ;
allow-queryany; ;
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"; #区域数据文件位置 masters192.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.INA
; ; ANSWER SECTION:
www.test.com.3600INA192.168.10.10
; ; AUTHORITY SECTION:
test.com.3600INNSns2.test.com.
test.com.3600INNSns1.test.com.
; ; ADDITIONAL SECTION:
ns1.test.com.3600INA192.168.10.10
ns2.test.com.3600INA192.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"; masters192.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.INPTR; ; 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. 3600INNSns2.test.com. 10.168.192.in-addr.arpa. 3600INNSns1.test.com.; ; ADDITIONAL SECTION: ns1.test.com.3600INA192.168.10.10 ns2.test.com.3600INA192.168.10.11

2、搭建并实现智能DNS。
```html/xml
前提条件:
DNS服务器 配置两个地址段192.168.19.131/2410.0.0.131/24添加子接口
WWW服务器 配置两个地址段192.168.19.132/2410.0.0.132/24添加子接口
客户端配置两个地址段192.168.19.127/2410.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-clientsbeijingnet; ;
include " /etc/named.rfc1912.zones.bj" ;
;
view shanghaiview
match-clientsshanghainet; ;
include " /etc/named.rfc1912.zones.sh" ;
;
#修改配置
listen-on port 53localhost; ;
allow-queryany; ;
注释行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 SOAmaster admin.jiaxiao.com. (
0; serial
1D; refresh
1H; retry
1W; expire
3H ); minimum
NSmaster
NSslave
masterA192.168.19.131
slaveA192.168.19.130
wwwA192.168.19.132
vim /var/named/jiaxiao.com.zone.sh
$TTL 1D
@IN SOAmaster admin.jiaxiao.com. (
0; serial
1D; refresh
1H; retry
1W; expire
3H ); minimum
NSmaster
NSslave
masterA192.168.19.131
slaveA192.168.19.130
wwwA10.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


    推荐阅读