1、简述DNS服务器原理,并搭建主-辅服务器。
一、DNS服务器原理:
(1)DNS服务原理图:
(2)DNS服务器原理:简单说就是域名解析成对应的ip和ip解析成对应的域名。
补充说明:
域名:分为根域、顶级域、二级域等等,最多可到127级域名。
每个DNS服务器都知道根域名服务器在哪里。
(3)自述DNS服务器原理:
如上图:以想知道www.magedu.com的ip地址为例。
第一:客户端访问www.magedu.com时,首先到DNS服务器中访问;DNS服务器发现自己没有;自主的到根域名服务器中去寻找,根服务器没有直接对应的域名,但是它有.com的域名服务器,它那里可能有;DNS服务器就到.com域名服务器中去寻找,但是.com域名服务器并没有直接对应的域名,但是它有magedu.com的服务器,它那里可能有;于是就到magedu.com的服务器中寻找,结果找到了。
第二:找到以后就解析成对应的ip返回给DNS服务器,DNS服务器并返回给客户端。客户端就拿到了对应的ip。
二、搭建主-辅服务器:
(1)主-辅服务器的搭建必然涉及到同步问题,尤其是时间同步。
同步策略:
第一:(推)当主服务器的数据发生变化时,主服务器主动把数据发生变化的部分给辅助服务器
第二:(拉)当主服务器的时间发生变化时(时间间隔),辅助服务器主动拉。
(2)搭建:
主服务器的搭建:10.0.8.8
1.
#安装对应的服务
yum install -y bind
2.
# 查找相关配置文件
rpm -ql bind
3.
[root@centos8 ~]#vim /etc/named.conf
#注释掉下面两行
options {
// listen-on port 53 { 127.0.0.1; };
...
directory "/var/named"; #指定文件路径
// allow-query { localhost; };
...
4.
[14:27:14 root@CS8-VM8-10 ~][#cat /etc/named.rfc1912.zones
#添加以下内容
zone "ncgxy.org" IN {
type master;
file "ncgxy.org.zone";
};
.....
5.
[15:00:27 root@CS8-VM8-10 named][#cd
[15:05:27 root@CS8-VM8-10 ~][#cd /var/named/
#区域配置文件一定要注意文件的权限、格式等问题,参考named.localhost文件
[15:07:46 root@CS8-VM8-10 named][#cp -a named.localhost ncgxy.org.zone
[15:08:35 root@CS8-VM8-10 named][#cat ncgxy.org.zone
$TTL 1D
@ SOA master admin.ncgxy.org (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master A 10.0.8.8 #主服务器
slave A 10.0.8.18 #辅助服务器
www A 10.0.8.7
* A 10.0.8.7
@ A 10.0.8.7
6.
#启动服务
systemctl start named
辅服务器的搭建:10.0.8.18
1.
#安装对应的服务
yum install -y bind
2.
[root@centos8 ~]#vim /etc/named.conf
#注释掉下面两行
options {
// listen-on port 53 { 127.0.0.1; };
...
directory "/var/named"; #指定文件路径
// allow-query { localhost; };
...
3.
[14:50:08 root@CS8-VM8-10 slaves][#cat /etc/named.rfc1912.zones
#添加以下内容
zone "ncgxy.org" {
type slave; #指定该服务器为辅助服务器
masters { 10.0.8.8;}; #指定主服务器的地址
file "slaves/ncgxy.org.slave"; #配置文件放置处(/var/named/slaves)(slaves/.... 文件的相对路径,后面的.....取的名字)
};
4.
#启动服务
systemctl start named
5.
#查看端口号 :ss -ntul
...
udp UNCONN 0 0 10.0.8.18:53 0.0.0.0:* #端口开启
udp UNCONN 0 0 127.0.0.1:53
...
6.
#查看是否生成同步文件
[14:50:42 root@CS8-VM8-10 slaves][#ll
total 4
-rw-r--r--. 1 named named 396 May 12 14:33 ncgxy.org.slave #成功
网页服务器:10.0.8.7
#安装http服务
yum install httpd
[14:38:56 root@CS7-VM8-10 ~]#echo www.ncgxy.org > /var/www/html/index.html
[14:39:20 root@CS7-VM8-10 ~]#
[14:39:21 root@CS7-VM8-10 ~]#cat /var/www/html/index.html
www.ncgxy.org
#启动服务
systemctl start httpd
测试客户端:10.0.8.17
1.
DNS要指向两台服务器。10.0.8.8 10.0.8.18
vim /etc/sysconfig/network-scripts/ifcfg-eth0
....
DNS1=10.0.8.8
DNS2=10.0.8.18
....
然后再依次执行以下命令:
nmcli con
nmcli con reload
nmcli con up eth0(网卡名)
2.
#默认走主服务器
[14:57:17 root@CS7-VM8-10 ~]#dig www.ncgxy.org
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> www.ncgxy.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20204
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.ncgxy.org. IN A
;; ANSWER SECTION:
www.ncgxy.org. 86400 IN A 10.0.8.7 #成功
;; AUTHORITY SECTION:
ncgxy.org. 86400 IN NS master.ncgxy.org.
ncgxy.org. 86400 IN NS slave.ncgxy.org.
;; ADDITIONAL SECTION:
master.ncgxy.org. 86400 IN A 10.0.8.8
slave.ncgxy.org. 86400 IN A 10.0.8.18
;; Query time: 1 msec
;; SERVER: 10.0.8.8#53(10.0.8.8) #默认走主服务器
;; WHEN: Thu May 12 14:57:26 CST 2022
;; MSG SIZE rcvd: 131
3.
#当关闭主服务器时
主服务器:systemctl stop named
测试机:
[15:27:07 root@CS7-VM8-10 ~]#dig www.ncgxy.org #有明显卡顿
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> www.ncgxy.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45665
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.ncgxy.org. IN A
;; ANSWER SECTION:
www.ncgxy.org. 86400 IN A 10.0.8.7
;; AUTHORITY SECTION:
ncgxy.org. 86400 IN NS slave.ncgxy.org.
ncgxy.org. 86400 IN NS master.ncgxy.org.
;; ADDITIONAL SECTION:
master.ncgxy.org. 86400 IN A 10.0.8.8
slave.ncgxy.org. 86400 IN A 10.0.8.18
;; Query time: 2 msec
;; SERVER: 10.0.8.18#53(10.0.8.18) #走辅助服务器
;; WHEN: Thu May 12 15:27:09 CST 2022
;; MSG SIZE rcvd: 131
补充实验:
正向解析和反向解析
(1)正向解析的搭建:
服务器的搭建:10.0.8.8
执行以下命令:
1 2022-05-12 16:39:58 history
2 2022-05-12 16:40:18 yum install -y bind #安装软件
3 2022-05-12 16:42:49 vim /etc/named.conf
4 2022-05-12 16:43:17 vim /etc/named.rfc1912.zones
5 2022-05-12 16:45:37 cd /var/named
6 2022-05-12 16:45:38 ll
7 2022-05-12 16:46:31 cp -a named.localhost nagxy.org.zone #此处文件名不符合(应该是ncgxy.org.zone)
8 2022-05-12 16:46:33 ll
9 2022-05-12 16:47:01 mv nagxy.org.zone ncgxy.org.zone #修改文件名
10 2022-05-12 16:47:02 ll
11 2022-05-12 16:47:07 vim ncgxy.org.zone
12 2022-05-12 16:49:15 systemctl start named
13 2022-05-12 16:49:19 ss -ntlu
步骤具体实现:
3. vim /etc/named.conf #“//”表示注释,注释这两行,或者直接删除这两行
options {
// listen-on port 53 { 127.0.0.1; };
...
// allow-query { localhost; };
.....
4. vim /etc/named.rfc1912.zones
#增加以下几行。
zone "ncgxy.org" IN {
type master;
file "ncgxy.org.zone"; #创建正向解析文件时的文件名为:ncgxy.org.zone
};
5. [17:03:50 root@CS8-VM8-10 ~][#cd /var/named
6. [17:05:03 root@CS8-VM8-10 named][#ll
total 20
drwxrwx---. 2 named named 23 May 12 16:49 data
drwxrwx---. 2 named named 60 May 12 16:49 dynamic
-rw-r-----. 1 root named 2253 Aug 25 2021 named.ca
-rw-r-----. 1 root named 152 Aug 25 2021 named.empty
-rw-r-----. 1 root named 152 Aug 25 2021 named.localhost #正向解析时参考该文件
-rw-r-----. 1 root named 168 Aug 25 2021 named.loopback #反向解析时参考该文件
-rw-r-----. 1 root named 207 May 12 16:49 ncgxy.org.zone
drwxrwx---. 2 named named 6 Aug 25 2021 slaves #配置辅助服务器
7. vim ncgxy.org.zone
#修改为如下格式:
$TTL 1D
@ IN SOA master admin.ncgxy.org.zone (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 10.0.8.8
www A 10.0.8.7 #网页对应的服务器地址
* A 10.0.8.7
@ A 10.0.8.7
12. systemctl start named #重启服务
13. ss -ntlu #查看端口号是否开启
udp UNCONN 0 0 10.0.8.8:53 0.0.0.0:* #代表端口已开启
udp UNCONN 0 0 127.0.0.1:53 0.0.0.0:*
tcp LISTEN 0 10 10.0.8.8:53 0.0.0.0:*
tcp LISTEN 0 10 127.0.0.1:53 0.0.0.0:* #代表端口已开启
网页服务器的搭建:10.0.8.7
执行以下命令:
21 2022-05-12 16:49:52 yum install -y httpd
22 2022-05-12 16:50:15 echo www.ncgxy.org > /var/www/html/index.html
23 2022-05-12 16:50:29 cat /var/www/html/index.html
24 2022-05-12 16:50:40 systemctl start httpd
测试客户端:10.0.8.18
执行以下命令:
1 2022-05-12 16:39:52 history
2 2022-05-12 16:40:34 yum install -y bind #安装服务
3 2022-05-12 16:51:12 cat /etc/resolv.conf #查看客户端的DNS是否指向服务器的ip地址
4 2022-05-12 16:51:26 vim /etc/sysconfig/network-scripts/ifcfg-eth0 #修改配置文件,让该客户端的DNS执行服务器(10.0.8.8)
5 2022-05-12 16:51:47 nmcli con
6 2022-05-12 16:51:49 nmcli con reload
7 2022-05-12 16:51:58 nmcli con up eth0 #这三部重启网卡服务
8 2022-05-12 16:52:03 cat /etc/resolv.conf #校正是否修改成功(执行的DNS为10.0.8.8)
9 2022-05-12 16:53:37 dig www.ncgxy.org
10 2022-05-12 16:53:57 curl www.ncgxy.org
11 2022-05-12 17:20:10 history
4. vim /etc/sysconfig/network-scripts/ifcfg-eth0 #修改的步骤参照上面测试客户端的修改
8 . [17:20:10 root@CS8-VM8-10 ~][#cat /etc/resolv.conf
# Generated by NetworkManager
search 0.8.8
nameserver 10.0.8.8 #表明修改成功
9.[16:52:03 root@CS8-VM8-10 ~][#dig www.ncgxy.org
; <<>> DiG 9.11.26-RedHat-9.11.26-6.el8 <<>> www.ncgxy.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5931
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 93a7f86b7cae6454f66a7c50627ccb11e85e2e0e034cfd1a (good)
;; QUESTION SECTION:
;www.ncgxy.org. IN A
;; ANSWER SECTION:
www.ncgxy.org. 86400 IN A 10.0.8.7 #网页服务器ip
;; AUTHORITY SECTION:
ncgxy.org. 86400 IN NS master.ncgxy.org.
;; ADDITIONAL SECTION:
master.ncgxy.org. 86400 IN A 10.0.8.8
;; Query time: 1 msec
;; SERVER: 10.0.8.8#53(10.0.8.8)
;; WHEN: Thu May 12 16:53:37 CST 2022
;; MSG SIZE rcvd: 123
10. [16:53:37 root@CS8-VM8-10 ~][#curl www.ncgxy.org
www.ncgxy.org
(2)反向解析的搭建:10.0.8.8(有些步骤与正向解析类似,不做具体演示)
[20:33:00 root@CS8-VM8-10 ~][#vim /etc/named.rfc1912.zones
#添加以下内容
zone "8.0.10.in-addr.arpa" IN {
type master;
file "10.0.8.zone";
}; #反向解析
[17:54:29 root@CS8-VM8-10 named][#cat 10.0.8.zone
$TTL 1D
@ IN SOA ns1 admin.ncgxy.org (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns1.ncgxy.org.
7 PTR www.ncgxy.org.
18 PTR www.csh.org.
客户端测试:
[18:01:12 root@CS7-VM8-10 ~]#dig -t ptr 7.8.0.10.in-addr.arpa
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t ptr 7.8.0.10.in-addr.arpa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47384
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;7.8.0.10.in-addr.arpa. IN PTR
;; ANSWER SECTION:
7.8.0.10.in-addr.arpa. 86400 IN PTR www.ncgxy.org.
;; AUTHORITY SECTION:
8.0.10.in-addr.arpa. 86400 IN NS ns1.ncgxy.org.
;; ADDITIONAL SECTION:
ns1.ncgxy.org. 86400 IN A 10.0.8.7
;; Query time: 0 msec
;; SERVER: 10.0.8.8#53(10.0.8.8)
;; WHEN: Thu May 12 18:01:53 CST 2022
;; MSG SIZE rcvd: 111
[18:01:53 root@CS7-VM8-10 ~]#
[18:01:53 root@CS7-VM8-10 ~]#dig -t ptr 18.8.0.10.in-addr.arpa
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t ptr 18.8.0.10.in-addr.arpa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49742
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;18.8.0.10.in-addr.arpa. IN PTR
;; ANSWER SECTION:
18.8.0.10.in-addr.arpa. 86400 IN PTR www.csh.org.
;; AUTHORITY SECTION:
8.0.10.in-addr.arpa. 86400 IN NS ns1.ncgxy.org.
;; ADDITIONAL SECTION:
ns1.ncgxy.org. 86400 IN A 10.0.8.7
;; Query time: 0 msec
;; SERVER: 10.0.8.8#53(10.0.8.8)
;; WHEN: Thu May 12 18:02:00 CST 2022
;; MSG SIZE rcvd: 116
2、搭建并实现智能DNS。
3、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝
ssh服务对应的端口号:22
telnet服务对应的端口号:23
ftp服务对应的端口号:21
web服务80端口
实现的结构图如下:
各个配置如下:
8CentOS8:192.168.126.8
设置好ip和网关并且设为仅主机模式:
[14:34:34 root@CS8-VM1-192 ~][#cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTTPROTO=static
IPADDR=192.168.126.8
PREFIX=24
GATEWAY=192.168.126.18
ONBOOT=yes
8CentOS8:192.168.126.8测试:
[14:31:02 root@CS8-VM1-192 ~][#curl 10.0.8.7
www.csdn.com
[14:53:10 root@CS8-VM1-192 ~][#curl 10.0.8.17
www.10.0.8.17
[14:54:17 root@CS8-VM1-192 ~][#ssh 10.0.8.7
The authenticity of host '10.0.8.7 (10.0.8.7)' can't be established.
ECDSA key fingerprint is SHA256:kAJver0ydktOXbqVjZIZAEDNlz/be2NrrVWv5n2nkp8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? ^C
[15:17:15 root@CS8-VM1-192 ~][#telnet 10.0.8.17
bash: telnet: command not found...
Install package 'telnet' to provide command 'telnet'? [N/y] ^C
[15:17:31 root@CS8-VM1-192 ~][#
firewalld:18CentOS8
在虚拟机内添加一张网卡并设置相应的ip地址:
[14:36:54 root@CS8-VM8-10 ~][#cat /etc/sysconfig/network-scripts/ifcfg-eth0 #网卡一的配置(eth0)
DEVICE=eth0
NAME=eth0
BOOTTPROTO=static
IPADDR=10.0.8.18
PREFIX=24
ONBOOT=yes
[14:37:14 root@CS8-VM8-10 ~][#cat /etc/sysconfig/network-scripts/ifcfg-eth1 #网卡二的配置(eth1)
DEVICE=eth1
NAME=eth1
BOOTTPROTO=static
IPADDR=192.168.126.18
PREFIX=24
ONBOOT=yes
vim /etc/sysctl.conf
#增加改行
net.ipv4.ip_forward=1 #开启ping功能
sysctl -p
#-m multiport --dports模块,可连接多个端口(连续和不连续都可以,但连接上限为:15个)
[20:58:48 root@CS8-VM8-10 ~][#iptables -I INPUT ! -s 10.0.8.0/24 -p tcp -m multiport --dports 80,21:23 -j ACCEPT
[20:59:53 root@CS8-VM8-10 ~][#
[20:59:54 root@CS8-VM8-10 ~][#iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT tcp -- * * !10.0.8.0/24 0.0.0.0/0 multiport dports 80,21:23
0 0 REJECT all -- * * !10.0.8.0/24 0.0.0.0/0 reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
[21:00:02 root@CS8-VM8-10 ~][#
web1:7CentOS7:10.0.8.7
yum install -y httpd;systemctl enable --now httpd
echo www.csdn.com > /var/www/http/index.html
web2:17CentOS7:10.0.8.17
yum install -y httpd;systemctl enable --now httpd
echo www.10.0.8.17 > /var/www/http/index.html
4、NAT原理总结
NAT: network address translation(网络地址转换),支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链
网络地址转换(NAT):通常是ip地址个端口号一起参与。其中端口号的那个被称为PAT。
NAT通常有请求报文和响应报文。
请求报文:修改源/目标IP,由定义如何修改
响应报文:修改源/目标IP,根据跟踪机制自动实现
5、iptables实现SNAT和DNAT,并对规则持久保存。
项目图,参考上图(NAT原理总结)。
实现SNAT(局域网访问外网)
在iptables 服务器中添加该规则:
(1)iptables -t nat -A POSTROUTING -s 10.0.8.0/24 ! -d 10.0.8.0/24 -j SNAT --to-source 192.168.126.0/24
(2)iptables -t nat -A POSTROUTING -s 10.0.8.0/24 ! -d 10.0.8.0/24 -j MASQUERADE
说明:
#(1)(2)等价,写一个。
#访问外网时,对外的接口应该是iptables服务器中对应eth1这个网卡。
实现DNAT(外网访问局域网)
iptables -t nat -A PREROUTING -d 192.168.126.18 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.7:8080
保存规则:
CentOS6
#将规则覆盖保存至/etc/sysconfig/iptables文件中
service iptables save
CentOS7,8保存规则的方法:
#安装软件并设置开启自启
yum install -y iptables-services ;systemctl enable --now iptables
#添加规则
例如:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
#查看添加这些规则的保存文件:
cat /etc/sysconfig/iptables
#保存规则至/etc/sysconfig/iptables
iptables-save > /etc/sysconfig/iptables
#重启后,规则自动启用。