域名系统 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.121.设置主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的主要内容,如果未能解决你的问题,请参考以下文章