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
  • 相关阅读:
    Kubernetes 集成研发笔记
    Rust 1.44.0 发布
    Rust 1.43.0 发布
    PAT 甲级 1108 Finding Average (20分)
    PAT 甲级 1107 Social Clusters (30分)(并查集)
    PAT 甲级 1106 Lowest Price in Supply Chain (25分) (bfs)
    PAT 甲级 1105 Spiral Matrix (25分)(螺旋矩阵,简单模拟)
    PAT 甲级 1104 Sum of Number Segments (20分)(有坑,int *int 可能会溢出)
    java 多线程 26 : 线程池
    OpenCV_Python —— (4)形态学操作
  • 原文地址:https://www.cnblogs.com/tanll/p/15487959.html
Copyright © 2011-2022 走看看