Linux笔记 -- Week09 Q&A

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

域名系统:Domain Name System,互联网的一项服务,采用分布式集群工作方式。主要实现域名和IP地址的相互映射,使人更方面地访问互联网。使用TCP/UDP 53端口。

DNS常见资源记录类型:
- 主机记录(A记录):RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
- 别名记录(CNAME记录): RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,常应用于CDN。
- IPv6主机记录(AAAA记录): RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
- 域名服务器记录(NS记录) :用来指定该域名由哪个DNS服务器来进行解析。DNS服务器NS记录地址一般出现形式为:ns1.domain.com、ns2.domain.com等。 简要来讲,NS记录是指定由哪个DNS服务器解析域名。
- NAPTR记录:RFC 3403定义,它提供了正则表达式方式去映射一个域名。

DNS服务器工作原理:

DNS查询有两种方式:递归和迭代。
DNS客户端和设置使用的本地DNS服务器一般是递归查询模式,本地DNS服务器负责全权处理客户端的DNS查询请求,直到返回最终结果。DNS服务器之间一般采用迭代查询模式。

以查询 www.xxx.org 为例:
1. 客户端发送查询报文"www.xxx.org"至DNS服务器,DNS服务器首先检查自身缓存,如果存在记录则直接返回结果。
2. 如果记录老化或不存在,则:
    2.1  DNS服务器向根域名服务器发送查询报文"www.xxx.org",根域名服务器返回顶级域 .org 的域名服务器地址。
    2.2  DNS服务器向 .org 域的顶级域名服务器发送查询报文"www.xxx.org",得到二级域 .xxx.org 的权威域名服务器地址。
    2.3  DNS服务器向 .xxx.org 域的权威域名服务器发送查询报文"query www.xxx.org",得到主机 www 的A记录,存入自身缓存并返回给客户端。

搭建主-辅服务器 -- 基于VMware centos7环境

  1. 安装DNS软件
    bind:服务器(必选)
    bind-libs:相关库(依赖,yum安装bind会自动带上)
    bind-utils: 客户端(建议安装)
    bind-chroot: 安全包,将dns相关文件放至 /var/named/chroot/(按需,常规不安装)
[root@centos2 ~]# yum install -y bind bind-utils
  1. DNS服务器配置
    2.1 修改 /etc/named.conf -- 只列出关注修改内容
options {
        //listen-on port 53 { 127.0.0.1; }; --修改监听端口为localhost 或者直接注释掉
        listen-on port 53 { localhost; };
        //allow-query     { localhost; }; -- 修改为any允许任何主机使用DNS或者直接注释掉
        allow-query     { any; };
        allow-transfer { 10.0.0.222; }; 
        //allow-transfer 指定允许的辅DNS抓取从同步DNS配置信息
};
//配置文件包含了 /etc/named.rfc1912.zones   使用该文件来配置DNS zone信息
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

options {
        //listen-on port 53 { 127.0.0.1; }; --修改监听端口为localhost 或者直接注释掉
        listen-on port 53 { localhost; };
        //allow-query     { localhost; }; -- 修改为any允许任何主机使用DNS或者直接注释掉
        allow-query     { any; };
        allow-transfer { none; }; 
        //allow-transfer none拒绝其他主机同步DNS配置信息
};
//配置文件包含了 /etc/named.rfc1912.zones   使用该文件来配置DNS zone信息
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

2.2 修改 /etc/named.rfc1912.zones 文件

//正向解析zone
zone "test.org" IN {
        type master;
        file "named.test.org.zone";
};

//逆向解析zone
zone "0.0.10.in-addr.arpa" IN {
        type master;
        file "0.0.10.in-addr.arpa.zone";
};

zone "test.org" IN {
        type slave;
        masters { 10.0.0.221; };
        file "slaves/test.org.slave.zone";
};

2.3 编辑zone指定文件
named.test.org.zone(主正文件)
配置好zone文件权限和属主(tips:复制模板,如下)

[root@centos1 named]# cp -a named.localhost named.test.org.zone
[root@centos1 named]# ll named.test.org.zone
-rw-r----- 1 root named 152 Jun 21  2007 named.test.org.zone
[root@centos1 named]#

正向解析文件 named.test.org.zone 内容

[root@centos1 named]# vim named.test.org.zone
$TTL 1D
@       IN SOA  master admin.test.org. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@         IN NS master
master    IN A  10.0.0.221
www       IN A  10.0.0.223
@         IN MX 10 mail1
mail1     IN A  10.0.0.221
*         IN A  10.0.0.223
@         IN A  10.0.0.223
[root@centos1 named]#

正向解析验证

[root@centos6 ~]# curl test.org
www.test.org
[root@centos6 ~]# dig  www.test.org

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.test.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22331
...略

逆向解析文件 0.0.10.in-addr.arpa.zone 内容

[root@centos1 named]# cat 0.0.10.in-addr.arpa.zone
$TTL 1D
@       IN SOA  ns1 admin.test.org. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1
ns1     A       10.0.0.221
223     PTR     www.test.org.
221     PTR     mail.test.org.
[root@centos1 named]#

逆向解析验证

[root@centos6 ~]# dig -x 10.0.0.223

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> -x 10.0.0.223
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37878
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
...略

slaves/test.org.slave.zone(辅)
Note:辅DNS服务器该文件不用创建,在上一步配置完毕rndc reload重新加载配置后会自动生成。
辅助DNS服务器验证:

[root@centos6 ~]# dig  www.test.org @10.0.0.222

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.test.org @10.0.0.222
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41136
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

2.4 补充配置文件 allow-transfer 参数作用效果
未应用前

[root@centos4 ~]# dig -t axfr test.org @10.0.0.221

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> -t axfr test.org @10.0.0.221
;; global options: +cmd
test.org.               86400   IN      SOA     master.test.org. admin.test.org. 0 86400 3600 604800 10800
test.org.               86400   IN      A       10.0.0.223
test.org.               86400   IN      MX      10 mail1.test.org.
test.org.               86400   IN      NS      master.test.org.
*.test.org.             86400   IN      A       10.0.0.223
mail1.test.org.         86400   IN      A       10.0.0.221
master.test.org.        86400   IN      A       10.0.0.221
www.test.org.           86400   IN      A       10.0.0.223
test.org.               86400   IN      SOA     master.test.org. admin.test.org. 0 86400 3600 604800 10800
;; Query time: 0 msec
;; SERVER: 10.0.0.221#53(10.0.0.221)
;; WHEN: Wed Feb 02 10:11:51 CST 2022
;; XFR size: 9 records (messages 1, bytes 244)

应用后

[root@centos4 ~]# dig -t axfr test.org @10.0.0.221
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> -t axfr test.org @10.0.0.221
;; global options: +cmd
; Transfer failed.
[root@centos4 ~]#

二、搭建并实现智能DNS。

备注:为避免其他因素影响,配置前先关闭防火墙,selinux。建议配置好时间同步。
1、通过添加网卡或临时命令来模拟第二个网络段

例如原IP:10.0.0.226
临时添加:ip a a 192.0.0.226/24 dev eth0

2、DNS服务器安装bind bind-utils软件(yum 安装,具体参考之前主从DNS搭建过程,此处不再描述)
3、在 /etc/named.conf 配置文件添加自定义的ACL(注意:先定义后使用,acl项一般在option前面定义)

acl bjnet {
    10.0.0.0/24;
};
//模拟地区bj网络段
acl sznet {
    192.0.0.0/24;
};
//模拟地区sz网络段

4、view视图定义(作用:将自定义ACL和ZONE数据库实现对应关系,从而实现智能DNS)
Note1:一个bind服务器可以定义多个view,每个view中可定义一个或多个zone
Note2:多个view可能需要对同一zone区域进行解析,但是需使用不同的zone解析文件,且所有zone只能定义在view里面

  • 在 /etc/named.conf 定义view视图,并去掉根域的zone定义,将其挪到view定义的zone文件里面
view bjnetview {
    match-clients { bjnet; };
    include "/etc/named.bjnet.zones";
};

view sznetview {
    match-clients { sznet; };
    include "/etc/named.sznet.zones";
};

/*
zone "." IN {
        type hint;
        file "named.ca";
};
*/

5、zone文件配置内容(注意文件权限)

  • 文件 /etc/named.bjnet.zones
    复制模板过来修改,添加如下内容:
zone "." IN {
        type hint;
        file "named.ca";
};

zone "test.org" IN {
        type master;
        file "named.test.org.bjnet";
};

zone "0.0.10.in-addr.arpa" IN {
        type master;
        file "0.0.10.in-addr.arpa.bjnet";
};
  • 文件 /etc/named.sznet.zones
    复制模板过来修改,添加如下内容:
zone "." IN {
        type hint;
        file "named.ca";
};
zone "test.org" IN {
        type master;
        file "named.test.org.sznet";
};

zone "0.0.192.in-addr.arpa" IN {
        type master;
        file "0.0.192.in-addr.arpa.sznet";
};

6、创建zone文件里面定义的数据库解析文件

  • 文件 /var/named/named.test.org.bjnet bj区域正向解析文件
$TTL 1D
@       IN SOA  master admin.test.org. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@         IN NS master
master    IN A  10.0.0.221
www       CNAME websrv
websrv    IN A  10.0.0.223
@         IN MX 10 mail1
mail1     IN A  10.0.0.221
*         IN A  10.0.0.223
@         IN A  10.0.0.223
  • 文件 /var/named/0.0.10.in-addr.arpa.bjnet bj区域逆向解析文件
$TTL 1D
@       IN SOA  ns1 admin.test.org. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1
ns1     A       10.0.0.221
223     PTR     www.test.org.
221     PTR     mail.test.org.
  • 文件 /var/named/named.test.org.sznet sz区域正向解析文件
$TTL 1D
@       IN SOA  master admin.test.org. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@         IN NS master
master    IN A  192.0.0.221
www       CNAME websrv
websev    IN A  192.0.0.223
@         IN MX 10 mail1
mail1     IN A  192.0.0.221
*         IN A  192.0.0.223
@         IN A  192.0.0.223
  • 文件 /var/named/0.0.192.in-addr.arpa.sznet sz区域逆向解析文件
$TTL 1D
@       IN SOA  ns1 admin.test.org. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns1
ns1     A       192.0.0.221
223     PTR     www.test.org.
221     PTR     mail.test.org.

7、客户端验证:
bj区域模拟

[root@centos6 ~]# dig www.test.org @10.0.0.221
或者修改DNS只保留10.0.0.221后ping域名
PING websrv.test.org (10.0.0.223) 56(84) bytes of data.
64 bytes from www.test.org (10.0.0.223): icmp_seq=1 ttl=64 time=0.215 ms
64 bytes from www.test.org (10.0.0.223): icmp_seq=2 ttl=64 time=1.48 ms
64 bytes from www.test.org (10.0.0.223): icmp_seq=3 ttl=64 time=1.98 ms
64 bytes from www.test.org (10.0.0.223): icmp_seq=4 ttl=64 time=3.93 ms

--- websrv.test.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3010ms
rtt min/avg/max/mdev = 0.215/1.903/3.931/1.336 ms
[root@centos6 ~]#

sz区域模拟

[root@centos6 ~]# dig www.test.org @192.0.0.221
或者修改DNS只保留192.0.0.221后ping域名
[root@centos6 ~]# ping www.test.org -c4
PING websrv.test.org (192.0.0.223) 56(84) bytes of data.
64 bytes from www.test.org (192.0.0.223): icmp_seq=1 ttl=64 time=0.667 ms
64 bytes from www.test.org (192.0.0.223): icmp_seq=2 ttl=64 time=1.50 ms
64 bytes from www.test.org (192.0.0.223): icmp_seq=3 ttl=64 time=1.63 ms
64 bytes from www.test.org (192.0.0.223): icmp_seq=4 ttl=64 time=1.65 ms

--- websrv.test.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3023ms
rtt min/avg/max/mdev = 0.667/1.365/1.655/0.408 ms
[root@centos6 ~]#

三、使用iptable实现: 放行ssh,telnet, ftp, web服务80端口,其他端口服务全部拒绝

添加iptables配置:

[root@cent70 ~]# iptables -R INPUT 1 -p tcp -m multiport --dports 21,22,23,80 -j ACCEPT
[root@cent70 ~]# iptables -A INPUT -j REJECT

验证:

[root@cent71 ~]# nc -zvn 10.0.0.160 22
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.0.160:22.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
[root@cent71 ~]# nc -zvn 10.0.0.160 21
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.0.160:21.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
[root@cent71 ~]# nc -zvn 10.0.0.160 23
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.0.160:23.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
[root@cent71 ~]# nc -zvn 10.0.0.160 53
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connection refused.
[root@cent71 ~]# nc -zvn 10.0.0.160 80
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 10.0.0.160:80.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
[root@bupt71 ~]#

四、NAT原理总结

NAT:网络地址转换,通过结合PAT来实现内网跟外网的访问。主要分为SNAT和DNAT。
SNAT:源NAT,通常指由内网发起的网络访问请求,在访问外部网络时需要将内网的私网地址转换为公网地址的过程。
DNAT:目NAT,通常指外网发起的访问请求或者资源请求回应,数据在通过防火墙访问内网时,需要将数据包里面的目标地址由公网地址转换为私网地址的过程。

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

SNAT
基本格式:
iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP
范例:
1、将内网172.16.0.0 SNAT 为 10.0.0.18地址

iptables -t nat -A POSTROUTING -s 172.16.0.0/24 ! -d 172.16.0.0/24 -j SNAT --to-source 10.0.0.18

2、将内网172.16.0.0 SNAT 为 10.0.0.18-20地址范围

iptables -t nat -A POSTROUTING -s 172.16.0.0/24 ! -d 172.16.0.0/24 -j SNAT --to-source 10.0.0.18-c10.0.0.20

3、MASQUERADE :基于nat表的target,适用于动态的公网IP,如:拨号网络

iptables -t nat -A POSTROUTING -s 172.16.0.0/24 ! -d 172.16.0.0/24 -j MASQUERADE

DNAT
基本格式:
iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT -- to-destination InterSeverIP[:PORT]
范例:
1、将访问10.0.0.18 80端口服务转到 1721.6.0.7 80端口

iptables -t nat -A PREROUTING  -d 10.0.0.18 ! -s 172.16.0.0/24 -p tcp --dport 80  -j DNAT --to-destination 172.16.0.7:80

2、REDIRECT本地转发,将访问172.16.0.7本地的8080端口转为 80端口

iptables -t nat -A PREROUTING -d 172.16.0.7 -p tcp --dport 8080 -j REDIRECT --
to-ports 80

保存iptables策略

方法1:centos7,8 上可通过yum安装 iptables-service,安装后如下保存和服务启动命令即可:

iptables-save > /etc/sysconfig/iptables
systemctl enable --now iptables.service

方法2:/etc/rc.d/rc.local文件中添加脚本路径
1、通过iptables-save > /path/filename 保存iptables策略
2、在/etc/rc.d/rc.local文件中添加 iptables-restore < /path/filename
通过以上配置即可实现开机自动加载iptables的规则
注意:rc.local 文件要具备 +x 权限

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容

  • 一、简述DNS服务器原理,并搭建主-辅服务器1、DNS是什么DNS(Domain Name Service的缩写)...
    小霍吖阅读 277评论 0 0
  • 一、简述DNS服务器原理,并搭建主-辅服务器 1、DNS服务器原理 第一步:客户机提出域名解析请求,并将该请求发送...
    迫近之影阅读 762评论 0 0
  • 1、简述DNS服务器原理,并搭建主-辅服务器。 DNS查询分为两种 递归查询:一般客户机和本地DNS服务器之间属于...
    johndoewy阅读 199评论 0 0
  • 基础命令 为了在 sudo 中设置权限提升,您需要编辑 sudoers 文件。 你不应该直接编辑文件,而是使用:s...
    米开朗基乐阅读 1,885评论 0 5
  • netfileter:防火墙内核态ip tables:防火墙用户态(管理防火墙规则) iptables的表和链表包...
    老夫刘某阅读 535评论 0 0