卧疾丰暇豫,翰墨时间作。这篇文章主要讲述Linux第九周相关的知识,希望能为你提供帮助。
1、简述DNS服务器原理,并搭建主-辅服务器。
DNS服务器原理
DNS域名系统分为正向与反向域名解析,适用C/S,端口路53/udp,53/tcp,属于应用层协议;
通常人们上网都是通过输入网址进行访问的,比如www.baid.com,这个也叫作域名。但实际上网络访问的底层还是通过ip进行的,比如输入36.152.44.96这个ip地址依然可以访问百度。人的记忆是有限的,不可能去记住众多网站的ip地址,dns就可以解决这个问题,将域名解析成ip地址。
1、当应用过程需要将一个主机域名映射为IP地址时,就会将将待转换的域名放在DNS请求中,以UDP报文方式发给本地域名服务器
2、本地的域名服务器查到域名后,将对应的IP地址放在应答报文中返回;
3、同时域名服务器还必须具有连向其他服务器的信息以支持不能解析时的转发;
4、若域名服务器不能回答该请求,则此域名服务器就暂成为DNS中的另一个客户,向根域名服务器发出请求解析,根域名服务器一定能找到下面的所有二级域名的域名服务器,这样以此类推,一直向下解析,直到查询到所请求的域名
主服务器搭建
#DNS主服务器正向解析
yum -y install bind bind-utils
systemctl enable --now named
vim /etc/named.conf
#修改listen-on port和 allow-query(也可以直接将这两行注释)
ptions
listen-on port 53localhost; ;
listen-on-v6 port 53::1; ;
directory"/var/named";
dump-file"/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file"/var/named/data/named.secroots";
recursing-file"/var/named/data/named.recursing";
allow-querylocalhost; 10.0.0.0/24; ;
#此命令可以刷新配置文件(不会重启服务影响访问)
rndc reload
#设置网卡DNS测试本机是否可以通过自己的DNS服务ping通外网
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.151
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.151
ONBOOT=yes
nmcli con reload
nmcli con up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
#打开一台客户机,测试DNS
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=static
IPADDR=10.0.0.150
PREFIX=24
GATEWAY=10.0.0.2
DNS1=10.0.0.151
ONBOOT=yes
nmcli con reload
nmcli con up eth0
ping www.baidu.com
PING www.a.shifen.com (180.101.49.12) 56(84) bytes of data.
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=1 ttl=128 time=10.1 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=2 ttl=128 time=9.76 ms
#配置区域解析库
#修改 /etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones
zone"jlj.com"#域名按实际情况
type master;
file"jlj.com.zone"; #文件名可任意
cd /var/named/
#直接在复制现有配置文件修改区域解析库
cp named.localhost jlj.com.zone -p
vim jlj.com.zone
#参数可以省略,省略则代表和上一条记录相同
$TTL 1D#缓存1天,写在此处可变为全局
@IN SOAmaster admin.jlj.com. (#“@”为当前域jlj.com
"IN"固定,master为DNS服务器地址,配合前面的@,实际为master.jlj.com
master也可以改为master.jlj.com.最后一定要写"."
0; serial#区域数据库文件版本号,系统判断是否更新看版本号
1D; refresh#从服务器获取主服务器的刷新间隔
1H; retry#刷新时失败重试间隔
1W; expire#长时间不能同步,使从服务器过期
3H ); minimum#用户访问失败的记录会被缓存,清空时间3小时
NSmaster#填写主从服务器主机名,添加主机名后也需要增加A记录
master A 10.0.0.151 #继承上一条命令的”@“所以master实际为master.jlj.com,此行用于解析master.jlj.com
wwwA 10.0.0.51
*A 10.0.0.51#泛域名解析只要是jlj.com(表中没有的)都跳转到10.0.0.51
@A 10.0.0.51#不输入www.也可以访问
[root@centos8 ~]#curl www.jlj.com
www.jlj.com
[root@centos8 ~]#curl wwwwwwww.jlj.com
www.jlj.com
[root@centos8 ~]#curl jlj.com
www.jlj.com
反向解析
#反向解析
[root@centos8-2 etc]# vim /etc/named.rfc1912.zones
zone "0.0.10.in-addr.arpa"
type master;
file "10.0.0.zone";
;
[root@centos8-2 etc]# cd /var/named
[root@centos8-2 named]# cp -p named.loopback 10.0.0.zone
[root@centos8-2 named]# vim 10.0.0.zone
$TTL 1D
@IN SOA ns1 admin.jlj.com. (
0; serial
1D; refresh
1H; retry
1W; expire
3H ); minimum
NSns1.jlj.com.
51PTR www.jlj.com.
[root@centos8 ~]#dig -t ptr 51.0.0.10.in-addr.arpa
; ; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: 7eec35e51f333bb02ef0b3c561e667434f2c651be502050f (good)
; ; QUESTION SECTION:
; 51.0.0.10.in-addr.arpa.INPTR
; ; ANSWER SECTION:
51.0.0.10.in-addr.arpa. 86400INPTR www.jlj.com.
; ; AUTHORITY SECTION:
0.0.10.in-addr.arpa.86400INNSns1.jlj.com.
; ; ADDITIONAL SECTION:
ns1.jlj.com.86400INA10.0.0.51
; ; Query time: 0 msec
; ; SERVER: 10.0.0.151#53(10.0.0.151)
; ; WHEN: Tue Jan 18 15:07:47 CST 2022
; ; MSG SIZErcvd: 138
从服务器搭建
#从服务器搭建
[root@centos8 ~]#yum -y install bind
[root@centos8 ~]vim /etc/named.conf
//listen-on port 53127.0.0.1; ;
//allow-querylocalhost; ;
[root@centos8 ~]vim /etc/named.rfc1912.zones
zone "jlj.com"
17type slave;
18masters 10.0.0.151; ;
19file "slaves/jlj.com.slave";
20 ;
[root@centos8 ~]systemctl enable --now named
[root@centos8 ~]ll /var/named/slaves/
total 4
-rw-r--r--. 1 named named 306 Jan 19 12:21 jlj.com.slave
#配置jlj.com.zone,让主服务器数据发生改变时自动推送给从服务器
[root@centos8-2 ~]# vim /var/named/jlj.com.zone
#修改内容
1; serial
NSmaster
NSslave1
master A 10.0.0.151
slave1 A 10.0.0.153
[root@centos8-2 ~]# rndc reload
server reload successful
#当前所有主机都可抓取区数据库,极不安全,主服务器进行如下配置
vim /etc/named.conf
#options中增加一行
allow-transfer10.0.0.153; ;
rndc reload
从服务器配置
vim /etc/named.conf
#options中增加一行
allow-transfernone; ;
rndc reload
#测试
[root@centos8 ~]#dig -t axfr jlj.com @10.0.0.151
; < < > > DiG 9.11.26-RedHat-9.11.26-6.el8 < < > > -t axfr jlj.com @10.0.0.151
; ; global options: +cmd
; Transfer failed.
[root@centos8 ~]#dig -t axfr jlj.com @10.0.0.153
; ; Connection to 10.0.0.153#53(10.0.0.153) for jlj.com failed: host unreachable.
3、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝
iptables -A INPUT -s 192.168.0.193 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 21,22,23,80 -j ACCEPT
iptables -A INPUT -j REJECT
[root@centos8-2 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes targetprot opt inoutsourcedestination
00 ACCEPTall--**192.168.0.1930.0.0.0/0
204989 ACCEPTall--lo*0.0.0.0/00.0.0.0/0
169 10060 ACCEPTtcp--**0.0.0.0/00.0.0.0/0multiport dports 21,22,23,80
2152 REJECTall--**0.0.0.0/00.0.0.0/0reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes targetprot opt inoutsourcedestination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes targetprot opt inoutsourcedestination
3、NAT原理总结
10.0.0.8:80(内网IP)发送请求进入防火墙,防火墙将IP转换为192.168.10.7:12345(假设此IP为外网)继续发给192.168.10.100
192.168.10.100(外网IP)以192.168.10.7:12345(防火墙IP)为目标地址发送应答报文,防火墙收到后再将192.168.10.7:12345转换为10.0.0.8:80发送给10.0.0.8:80
上述步骤为SNAT,即客户端地址转换
若出现10.0.0.8 , 10.0.0.18同时用80端口进行外网访问,防火墙会将10.0.0.8:80转换成192.168.10.7:12345,10.0.0.18:80转换为192.168.10.7.12346
上述步骤为PAT,即端口转换
当外网用户需要访问内网时,前提 需要内网中需要被访问的主机和防火墙进行端口映射,之后外网用户通过防火墙的IP和端口号进行访问内网主机的操作时,请求进入防火墙后将目标IP转换成内网绑定的IP和端口,内网IP收到消息,再将应答发送到外网IP,当请求通过防火墙时再将内网IP和端口转换成防火墙外网IP和端口,发送到外网的目标IP
【Linux第九周】上述步骤为DNAT,即服务器端地址转换
4、iptables实现SNAT和DNAT,并对规则持久保存
#SNAT 固定IP
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j SNAT --to-source 10.0.0.151
#SNAT 非固定IP和固定IP都可以
Uiptables -t nat -A POSTROUTING -s 10.0.0.0/24 ! -d 10.0.0.0/24 -j SNAT MASQUERADE
#DNAT
iptables -t nat -A PREROUTING -d 192.168.10.151 -p tcp--dport 80 -j DNAT --to-destination 10.0.0.153:80
#对规则持久保存,并开机自启
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables.service
推荐阅读
- 自建yum仓库,分别为网络源和本地源
- cc攻击防御解决方法
- WindowsServer 2016 修复SSL/TLS协议信息泄露(CVE-2016-2183)
- Haproxy搭建负载集群
- 负数如何存储在内存中()
- 10个常用的Python包用法示例介绍
- 2021年最适合开发者的10个Java开源工具合集
- 11个最佳而常用的React组件库,前端开发必备!
- 推荐20个常用的VSCode插件,码农开发必备!