zoukankan      html  css  js  c++  java
  • 第九周练习题

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

    1)DNS简介:

    DNS 是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写。域名便于人们记忆,但机器之间只认IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。上网时输入的网址通过域名解析系统解析找到了相对应的IP地址,这样才能上网。

    2)DNS服务器工作原理:

    假设我们访问www.tao.com的域名时的流程:

    1. 本地主机访问www.tao.com的域名时,首先会查询本地hosts文件及dns缓存,查询是否有对应的地址和ip映射关系,如有有则调用这个ip地址映射完成域名解析。

    2. 如果hosts文件和dns缓存没有这个域名的映射,则会根据tcp/ip参数设置中的首选DNS服务器,在此我们叫他本地DNS服务器,此服务器收到查询时,如果该域名包含在本地配置区域资源中,则返回解析结果给客户端,完成域名解析。

    3. 如果本地DNS服务器中没有,则本地DNS服务器会把请求发送到13台根服务器(.表示根服务器),根服务器收到请求后,发现自己没有相关记录,但是根服务器有下一级.com域名的解析记录。将.com域名对应的ip返回本地DNS服务器。

    4. 本地DNS服务器根据ip联系.com服务器,查询www.tao.com的ip,.com服务器查询后发现自己没有相关记录,但是有下一级tao.com域名的解析记录。返回tao.com的ip地址。

    5. 本地DNS服务器再次向tao.com服务器查询,此服务器查询到自己有www.tao.com的域名对应解析,返回对应ip地址。

    6. 本地DNS将解析到的www.tao.com的ip地址放到DNS缓存中。并返回客户端对应的ip地址。

      说明:本地客户端向DNS查询属于递归查询(步骤2),本地DNS服务器向其他DNS服务器查询属于迭代查询(步骤3-步骤5)。Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递

      归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…

    3)搭建主-辅服务器

    说明: 主DNSip:10.0.0.150

    备DNSip:10.0.0.160

    客户端ip:10.0.0.152

    主用DNS服务器:

    1、安装bind包,编辑/etc/named.conf,启用本机指定网口监听53端口号、指定网口接收DNS查询请求,并允许接收指定备用DNS的区域传送;

    [root@centos8 ~]#yum install bind -y
    [root@centos8 ~]#vim /etc/named.conf
    #注释掉下面两行
    // listen-on port 53 { 127.0.0.1; };
    // allow-query     { localhost; };
    #只允许从服务器进行区域传输
    allow-transfer { 10.0.0.160;};

    2、编辑/etc/named.rfc1912.zones文件,新增指定区域参数;


    [root@centos8 ~]#vim /etc/named.rfc1912.zones    
    #加上这段
    zone "tan.org" {
      type master;
      file  "tan.org.zone";
    };

    3、新建zone文件,/var/named/tan.org.zone,添加SOA,NS,A,MX等记录;


    [root@centos8 ~]#cp -p /var/named/named.localhost /var/named/tan.org.zone
    #如果没有-p,需要改权限。chgrp named magedu.org.zone
    [root@centos8 ~]#vim /var/named/tan.org.zone
    $TTL 1D
    @ IN SOA master admin.tan.org. (
    1 ; serial
    1D ; refresh
    1H ; retry
    1W ; expire
    3H ) ; minimum
            NS   master
              NS   slave
    master     A    10.0.0.150
    slave      A    10.0.0.160
    www       A    10.0.0.152

    4、使用named-checkconf、named-zone检查服务端配置、区域文件配置。


    [root@centos8 ~]#named-checkconf
    [root@centos8 ~]#named-checkzone "tan.org" /var/named/tan.org.zone
    zone tan.org/IN: loaded serial 1
    OK

    5、使用systemctl start named启动DNS服务

    [root@centos8 ~]#systemctl start named          #第一次启动服务
    [root@centos8 ~]#rndc reload                    #不是第一次启动服务

    备用DNS服务器:

    1、安装bind包,编辑/etc/named.conf,启用本机指定网口监听53端口号、指定网口接收DNS查询请求,不允许区域传送;


    [root@centos8 ~]#yum install bind -y
    [root@centos8 ~]#vim /etc/named.conf
    // listen-on port 53 { 127.0.0.1; };
    // allow-query     { localhost; };
    #不允许其它主机进行区域传输
      allow-transfer { none;};

    2、编辑/etc/named.rfc1912.zones文件,新增指定区域参数(type类型slave,masters指定主DNS服务器,zone文件是放在/var/named/slaves/下且是自动生成);

    [root@centos8 ~]#vim /etc/named.rfc1912.zones
    zone "magedu.org" {
      type slave;
      masters { 主服务器IP;};                                                      
             
      file "slaves/tan.org.slave";
    };

    3、重启服务,并检查区域数据库文件是否生成。

    [root@centos8 ~]#systemctl start named          #第一次启动服务
    [root@centos8 ~]#rndc reload                    #不是第一次启动服务
    [root@centos8 ~]#ls /var/named/slaves/tan.org.slave #查看区域数据库文件是否生成
    /var/named/slaves/tan.org.slave

    客户端验证解析结果:


    首先客户端网卡配置文件DNS指向我们的两个dns
    [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=eth0
    DEVICE=eth0
    ONBOOT=yes
    IPADDR=10.0.0.152
    PREFIX=24
    GATEWAY=10.0.0.2
    DNS1=10.0.0.150
    NS2=8.8.8.8


    #使用主DNS解析
    [root@localhost yum.repos.d]# dig www.tan.org @10.0.0.150

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

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1232
    ;; QUESTION SECTION:
    ;www.tan.org.                   IN     A

    ;; ANSWER SECTION:
    www.tan.org.            86400   IN     A       10.0.0.152

    ;; AUTHORITY SECTION:
    tan.org.                86400   IN     NS     slave.tan.org.
    tan.org.                86400   IN     NS     master.tan.org.

    ;; ADDITIONAL SECTION:
    master.tan.org.         86400   IN     A       10.0.0.150
    slave.tan.org.          86400   IN     A       10.0.0.160

    ;; Query time: 0 msec
    ;; SERVER: 10.0.0.150#53(10.0.0.150)
    ;; WHEN: Sat Oct 30 20:37:16 CST 2021
    ;; MSG SIZE rcvd: 129

    #使用备DNS解析
    [root@localhost yum.repos.d]# dig www.tan.org @10.0.0.160

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

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1232
    ;; QUESTION SECTION:
    ;www.tan.org.                   IN     A

    ;; ANSWER SECTION:
    www.tan.org.            86400   IN     A       10.0.0.152

    ;; AUTHORITY SECTION:
    tan.org.                86400   IN     NS     slave.tan.org.
    tan.org.                86400   IN     NS     master.tan.org.

    ;; ADDITIONAL SECTION:
    master.tan.org.         86400   IN     A       10.0.0.150
    slave.tan.org.          86400   IN     A       10.0.0.160

    ;; Query time: 0 msec
    ;; SERVER: 10.0.0.160#53(10.0.0.160)
    ;; WHEN: Sat Oct 30 20:37:21 CST 2021
    ;; MSG SIZE rcvd: 129

    #在主DNS停掉服务
    [root@centos8 ~]#systemctl stop named
    #主服务器挂掉后,使用主服务器不能解析,但备用服务器正常解析。
    [root@localhost ~]# dig www.tan.org @10.0.0.150

    ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> www.tan.org @10.0.0.150
    ;; global options: +cmd
    ;; connection timed out; no servers could be reached
    [root@localhost ~]# dig www.tan.org @10.0.0.160

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

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 1232
    ;; QUESTION SECTION:
    ;www.tan.org.                   IN     A

    ;; ANSWER SECTION:
    www.tan.org.            86400   IN     A       10.0.0.152

    ;; AUTHORITY SECTION:
    tan.org.                86400   IN     NS     slave.tan.org.
    tan.org.                86400   IN     NS     master.tan.org.

    ;; ADDITIONAL SECTION:
    master.tan.org.         86400   IN     A       10.0.0.150
    slave.tan.org.          86400   IN     A       10.0.0.160

    ;; Query time: 0 msec
    ;; SERVER: 10.0.0.160#53(10.0.0.160)
    ;; WHEN: Sat Oct 30 20:43:44 CST 2021
    ;; MSG SIZE rcvd: 129

    二、搭建并实现智能DNS。

    1)环境需要五台主机:

    DNS主服务器和web服务器1:10.0.0.150/24,192.168.33.150/24

    web服务器2:10.0.0.151/24

    web服务器3:192.168.33.151/24

    DNS客户端1:10.0.0.152/24 ,dns指向10.0.0.150

    DNS客户端2:192.168.33.152/24 ,dns指向10.0.0.150

    2)dns服务器网卡配置:

    #配置两个IP地址
    #eth0:10.0.0.150/24
    #eth1: 192.168.33.150/24
    [root@centos8 ~]#ifconfig eth0
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
          inet 10.0.0.150 netmask 255.255.255.0 broadcast 10.0.0.255
          inet6 fe80::20c:29ff:fee2:3cae prefixlen 64 scopeid 0x20<link>
          ether 00:0c:29:e2:3c:ae txqueuelen 1000 (Ethernet)
          RX packets 8546 bytes 6754051 (6.4 MiB)
          RX errors 0 dropped 0 overruns 0 frame 0
          TX packets 4690 bytes 470482 (459.4 KiB)
          TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    [root@centos8 ~]#ifconfig eth1
    eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
          inet 192.168.33.150 netmask 255.255.255.0 broadcast 192.168.33.255
          inet6 fe80::20c:29ff:fee2:3cb8 prefixlen 64 scopeid 0x20<link>
          ether 00:0c:29:e2:3c:b8 txqueuelen 1000 (Ethernet)
          RX packets 543 bytes 50318 (49.1 KiB)
          RX errors 0 dropped 0 overruns 0 frame 0
          TX packets 79 bytes 8406 (8.2 KiB)
          TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    3)主DNS服务器端配置文件实现view

    [root@centos8 ~]#yum install -y bind

    [root@centos8 ~]#vim /etc/named.conf
    acl beijingnet {
     10.0.0.0/24;
    };
    acl shanghainet {
     192.168.33.0/24;
    };
    acl othernet {
      any;
    };
    #注释掉下面两行
    // listen-on port 53 { 127.0.0.1; };
    // allow-query     { localhost; };
    #其他略
    view beijingview {
          match-clients { beijingnet;};
          include "/etc/named.rfc1912.zones.bj";
    };
    view shanghaiview {
          match-clients { shanghainet;};
          include "/etc/named.rfc1912.zones.sh";
    };
    view otherview {
          match-clients { othernet;};
          include "/etc/named.rfc1912.zones.other";
    };
    include "/etc/named.root.key";

    4)实现区域配置文件

    [root@centos8 ~]#cp -p /etc/named.rfc1912.zones  /etc/named.rfc1912.zones.bj
    [root@centos8 ~]#cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.sh
    [root@centos8 ~]#cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.other
    [root@centos8 ~]#vim /etc/named.rfc1912.zones.bj
    zone "." IN {
          type hint;
          file "named.ca";
    };


    zone "tan.org" {
          type master;
          file "tan.org.zone.bj";
    };

    [root@centos8 ~]#vim /etc/named.rfc1912.zones.sh
    zone "." IN {
          type hint;
          file "named.ca";
    };


    zone "tan.org" {
          type master;
          file "tan.org.zone.sh";
    };
    [root@centos8 ~]#vim /etc/named.rfc1912.zones.other
    zone "." IN {
          type hint;
          file "named.ca";
    };


    zone "tan.org" {
          type master;
          file "tan.org.zone.other";
    };

    5)创建区域数据库文件


    [root@centos8 ~]#cat /var/named/tan.org.zone.bj
    $TTL 1D
    @       IN SOA master admin.tan.org. (
                                           3       ; serial
                                          1D     ; refresh
                                          1H     ; retry
                                          1W     ; expire
                                          3H )   ; minimum
          NS     master
    master A       10.0.0.150
    websrv A       10.0.0.151
    www     CNAME   websrv
    [root@centos8 ~]#cat /var/named/tan.org.zone.sh
    $TTL 1D
    @       IN SOA master admin.tan.org. (
                                           3       ; serial
                                          1D     ; refresh
                                          1H     ; retry
                                          1W     ; expire
                                          3H )   ; minimum
          NS     master
    master A       10.0.0.150
    websrv A       192.168.33.151
    www     CNAME   websrv
    [root@centos8 ~]#cat /var/named/tan.org.zone.other
    $TTL 1D
    @       IN SOA master admin.tan.org. (
                                           3       ; serial
                                          1D     ; refresh
                                          1H     ; retry
                                          1W     ; expire
                                          3H )   ; minimum
          NS     master
    master A       10.0.0.150
    websrv A       127.0.0.1
    www     CNAME   websrv

    6)检查配置文件

    [root@centos8 ~]#named-checkconf

    7)重启服务


    [root@centos8 ~]#systemctl restart named
    [root@centos8 ~]#rndc reload
    server reload successful

    8)配置三个web网站

    #分别在三台主机上安装http服务
    #在web服务器1:10.0.0.150/24实现
    yum install httpd                        
    echo www.tan.org in Other > /var/www/html/index.html
    systemctl start httpd  
    #在web服务器2:10.0.0.151/24
    echo www.tan.org in Beijing > /var/www/html/index.html
    systemctl start httpd  
    #在web服务器3:192.168.33.151/24
    yum install httpd                        
    echo www.tan.org in Shanghai > /var/www/html/index.html
    systemctl start httpd  

    9)客户端测试

    [root@localhost ~]# hostname -I
    10.0.0.152
    [root@localhost ~]# cat /etc/resolv.conf
    # Generated by NetworkManager
    nameserver 10.0.0.150
    [root@localhost ~]# curl www.tan.org
    www.tan.org in beijing

    [root@centos8 ~]#hostname -I
    192.168.33.152
    [root@centos8 ~]#cat /etc/resolv.conf
    # Generated by NetworkManager
    nameserver 192.168.33.150
    [root@centos8 ~]#curl www.tan.org
    www.tan.org in shanghai

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

    [root@centos8 ~]#iptables -I INPUT -p tcp  -m multiport --dport 21,22,23,80 -j ACCEPT
    [root@centos8 ~]#iptables -I INPUT -A INPUT -j REJECT
    [root@centos8 ~]#
    [root@centos8 ~]#iptables -vnL
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target     prot opt in     out     source               destination
      70  4480 ACCEPT     tcp  -- *     *       0.0.0.0/0            0.0.0.0/0           multiport dports 21,22,23,80
       0     0 REJECT     all  -- *     *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-port-unreachable

    四、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接收到数据报文,网站就被打开了。

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

    #iptables实现SNAT和DNAT,并对规则持久保存
    实现SNAT和DNAT都需要开启内核数据转发功能

    [root@localhost ~]# vim /etc/sysctl.conf
    # 把下列选项改正1
    net.ipv4.ip_forward=0
    ...
    net.ipv4.ip_forward=1

    #SNAT
    基于nat表的target,适用于固定的公网IP

    SNAT选项:

    --to-source [ipaddr[-ipaddr]][:port[-port]]
    --random
    语法:

    iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP
    范例:

    [root@localhost ~]# iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source 192.168.122.103

    #DNAT
    nat表的target,适用于端口映射,即可重定向到本机,也可以支持重定向至不同主机的不同端口,但不支持多目标,即不支持负载均衡功能

    DNAT选项:

    --to-destination [ipaddr[-ipaddr]][:port[-port]]
    DNAT语法:

    iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --todestination InterSeverIP[:PORT]
    范例:

    [root@localhost ~]# iptables -t nat -A PREROUTING -d 192.168.122.103 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.6:80

    #iptables规则持久保存:
    CentOS 7、8

    iptables-save > /PATH/TO/SOME_RULES_FILE
    CentOS 6

    # 将规则覆盖保存至/etc/sysconfig/iptables文件中
    service iptables save

    #加载规则
    #CentOS 7、8 重新载入预存规则文件中规则:
    iptables-restore < /PATH/FROM/SOME_RULES_FILE
    iptables-restore选项

    -n, --noflush:不清除原有规则
    -t, --test:仅分析生成规则集,但不提交
    #CentOS 6:
    service iptables  restart      
    #会自动从/etc/sysconfig/iptables 重新载入规则

    # 开机自动重载规则
    #用脚本保存各iptables命令;让此脚本开机后自动运行
    /etc/rc.d/rc.local文件中添加脚本路径 /PATH/TO/SOME_SCRIPT_FILE
    用规则文件保存各规则,开机时自动载入此规则文件中的规则

    在/etc/rc.d/rc.local文件添加

    iptables-restore < /PATH/FROM/IPTABLES_RULES_FILE
  • 相关阅读:
    携程呼叫中心异地双活——座席服务的高可用
    从5台服务器到两地三中心:魅族系统运维架构演进之路(含PPT)
    从“两地三中心”到“分布式多活”
    “两地三中心”容灾备份设计与实现_数据备份_数据恢复-阿里云
    膏方_百度百科
    矿泉水瓶加湿器 办公室空气加湿器迷你便携水瓶座 小型USB迷你家用静音 白色【图片 价格 品牌 报价】-京东
    【资料下载】ANTLR的最全的官方文档:The Definitive ANTLR Reference:v2,v3,v4版本都有下载 | 在路上
    “百万年薪40多万个税”高不高?你怎么看?_财经_腾讯网
    浙江四大滑雪场攻略及2015滑雪门票价格
    druid parser
  • 原文地址:https://www.cnblogs.com/tanll/p/15487959.html
Copyright © 2011-2022 走看看