首页 > 代码库 > [作业] 马哥2016全新Linux+Python高端运维班第八周作业

[作业] 马哥2016全新Linux+Python高端运维班第八周作业

1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。


  网桥:比较古老的方式二层交换设备,网桥的两个端口分别有一条独立的交换信道,不是共享一条背板总线,可隔离冲突域。类似中继器。


  集线器: 二层交换设备,多口的网桥


  二层交换机: 二层交换设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中


  三层交换机: 工作在二层和三层,具有路由功能的交换机。三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。对于数据包转发等规律性的过程由硬件高速实现,而像路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。


  路由器:是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。



2、IP地址的分类有哪些?子网掩码的表示形式及其作用


  IPv4 地址分类:


    A类:

      0 000 0000 - 0 111 1111: 1-127

      网络数:126, 127

      每个网络中的主机数:2^24-2

      默认子网掩码:255.0.0.0

      私网地址:10.0.0.0/8


    B类:

      10 00 0000 - 10 11 1111:128-191

      网络数:2^14

      每个网络中的主机数:2^16-2

      默认子网掩码:255.255.0.0

      私网地址:172.16.0.0/16-172.31.0.0/16


    C类:

      110 0 0000 - 110 1 1111: 192-223

      网络数:2^21

      每个网络中的主机数:2^8-2

      默认子网掩码:255.255.255.0

      私网地址:192.168.0.0/24-192.168.255.0/24


    D类:组播

      1110 0000 - 1110 1111: 224-239


    E类:

      240-255


  子网掩码:

    点分十进制:0-255

      0000 0000 - 1111 1111


      0.0.0.0-255.255.255.255


3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。


  OSI模型

    物理层:提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。

      物理层的媒体包括架空明线、平衡电缆、光纤、无线信道等

    数据链路层:在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。

      二层交换机,集线器,网桥

    网络层:控制分组传送系统的操作、路由选择、拥护控制、网络互连等功能,它的作用是将具体的物理传送对高层透明。

      路由器,三层交换机

    传输层:提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。

    会话层:提供两进程之间建立、维护和结束会话连接的功能;提供交互会话的管理功能,如三种数据流方向的控制,即一路交互、两路交替和两路同时会话模式 。

    表示层:代表应用进程协商数据表示;完成数据转换、格式化和文本压缩。

    应用层:提供OSI用户服务,例如事务处理程序、文件传送协议和网络管理等。


  tcp/ip分层:

  第一层:网络接口层

  包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像地址解析协议(Address Resolution Protocol,ARP)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。

  第二层:网络层(Internet Layer)。网络层解决的是计算机到计算机间的通信问题,它包括三个方面的功能:


    处理来自传输层的分组发送请求,收到请求后将分组装入IP数据报,填充报头,选择路径,然后将数据报发往适当的网络接口。


    处理数据报。


    处理网络控制报文协议、即处理路径、流量控制、阻塞等。


  对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。

  第三层:传输层

  传输层解决的是计算机程序到计算机程序之间的通信问题。对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(Use Datagram Protocol)提供不可靠的用户数据报服务。

  第四层:应用层

  对应于OSI七层参考模型的应用层和表达层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、Gopher、HTTP(超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。




4、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤。(手动指定的方式)


  1、Linux主机有一个可以正常被系统识别的网卡

  2、网卡的接口上有一条可以正常和外界交换的链路

    ifconfig,ip addr查看网卡状态

  3、为网卡指定一个正确的IP地址和路由

    静态指定:

        ifcfg: ifconfig, route, netstat

        ip: object {link, addr, route}, ss, tc

        配置文件

          system-config-network-tui (setup)

        CentOS 7:

          nmcli, nmtui

    netstat查看路由

  4、为机器指定一个正确的网关

    /etc/sysconfig/network-scripts/ifcfg-XXX

    /etc/sysconfig/networking

      GATEWAY=XXXXXXX

  5、为机器制定DNS解析服务器

    /etc/resolv.conf

      nameserver DNS_SERVER_IP1 #主DNS

      nameserver DNS_SERVER_IP2 #次DNS

      nameserver DNS_SERVER_IP3 #第三DNS





5、为Linux主机配置网络信息的方式有哪些,请描述各个过程。


    配置方式:

      静态指定:

        ifcfg: ifconfig, route, netstat

        ip: object {link, addr, route}, ss, tc

        配置文件

          system-config-network-tui (setup)

        CentOS 7:

          nmcli, nmtui

      动态分配:

        DHCP: Dynamic Host Configuration Protocol


    配置网络接口:

        CentOS 6: 

          以太网:eth[0,1,2,...]

          ppp:ppp[0,1,2,...]


      ifconfig命令

        ifconfig [interface]

          # ifconfig -a

          # ifconfig IFACE [up|down]

            ifconfig interface [aftype] options | address ...

              # ifconfig IFACE IP/mask [up]

              # ifconfig IFACE IP netmask MASK


              注意:立即生效;


              启用混杂模式:[-]promisc


          route命令

            路由管理命令

              查看:route -n

              添加:route add

                route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If]


                  目标:192.168.1.3  网关:172.16.0.1

                  ~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0


                  目标:192.168.0.0 网关:172.16.0.1

                  ~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0

                  ~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0


                  默认路由,网关:172.16.0.1

                  ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1

                  ~]# route add default gw 172.16.0.1


              删除:route del

                route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]


                  目标:192.168.1.3  网关:172.16.0.1

                  ~]# route del -host 192.168.1.3


                  目标:192.168.0.0 网关:172.16.0.1

                  ~]# route del -net 192.168.0.0 netmask 255.255.255.0


            DNS服务器指定

              /etc/resolv.conf

                nameserver DNS_SERVER_IP1

                nameserver DNS_SERVER_IP2

                nameserver DNS_SERVER_IP3


              正解:FQDN-->IP

                # dig -t A FQDN

                # host -t A FQDN

              反解:IP-->FQDN

                # dig -x IP

                # host -t PTR IP

                

                FQDN: www.magedu.com.


            netstat命令:

              netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships


              显示网络连接:

                netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]]  [--program|-p]

                  -t: tcp协议相关

                  -u: udp协议相关

                  -w: raw socket相关

                  -l: 处于监听状态

                  -a: 所有状态

                  -n: 以数字显示IP和端口;

                  -e:扩展格式

                  -p: 显示相关进程及PID


                  常用组合:

                    -tan, -uan, -tnl, -unl


              显示路由表:

                netstat  {--route|-r} [--numeric|-n]

                  -r: 显示内核路由表

                  -n: 数字格式


              显示接口统计数据:

                netstat  {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] 


                  # netstat -i

                  # netstat -I IFACE  


          总结:ifcfg家庭命令配置

            ifconfig/route/netstat

            ifup/ifdown




6、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;

     在线的主机使用绿色显示;

     不在线的主使用红色显示;


#!/bin/bash
for i in $(seq 1 254)
do
        ServerIp=172.16.250.$i
        ping -c 1 -w 1 $ServerIp &> /dev/null
        if [ $? -eq 0 ]; then
                echo -e "\033[0;32;1m $ServerIp is up. \033[0m"
        else
                echo -e "\033[0;31;1m $ServerIp is down. \033[0m"
        fi
done



7、详细描述每个网络接口的配置文件中各个参数的含义和其所对应的值;


    DEVICE:此配置文件应用到的设备;

    HWADDR:对应的设备的MAC地址;

    BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp;

    NM_CONTROLLED:NM是NetworkManager的简写;此网卡是否接受NM控制;CentOS6建议为“no”;

    ONBOOT:在系统引导时是否激活此设备;

    TYPE:接口类型;常见有的Ethernet, Bridge;

    UUID:设备的惟一标识;


    IPADDR:指明IP地址;

    NETMASK:子网掩码;

    GATEWAY: 默认网关;

    DNS1:第一个DNS服务器指向;

    DNS2:第二个DNS服务器指向;


    USERCTL:普通用户是否可控制此设备;

    PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中;


8、如何给网络接口配置多个地址,有哪些方式?


    ifconfig:

      ifconfig IFACE_ALIAS 

    ip

      ip addr add 

    配置文件:

      ifcfg-IFACE_ALIAS

        DEVICE=IFACE_ALIAS


9、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法。


  ip命令:

      ip - show / manipulate routing, devices, policy routing and tunnels


      ip [ OPTIONS ] OBJECT { COMMAND | help }


        OBJECT := { link | addr | route }


      link OBJECT:

        ip link - network device configuration


          set

            dev IFACE

            可设置属性:

              up and down:激活或禁用指定接口;


          show

            [dev IFACE]:指定接口

            [up]:仅显示处于激活状态的接口


        ip address - protocol address management


          ip addr { add | del } IFADDR dev STRING

            [label LABEL]:添加地址时指明网卡别名

            [scope {global|link|host}]:指明作用域

              global: 全局可用;

              link: 仅链接可用;

              host: 本机可用;

            [broadcast ADDRESS]:指明广播地址


          ip address show - look at protocol addresses

            [dev DEVICE]

            [label PATTERN]

            [primary and secondary]


          ip address flush - flush protocol addresses

            使用格式同show


        ip route - routing table management


          ip route add

            添加路由:ip route add TARGET via GW dev IFACE src SOURCE_IP

              TARGET:

                主机路由:IP

                网络路由:NETWORK/MASK


              添加网关:ip route add defalt via GW dev IFACE


          ip route delete

            删除路由:ip route del TARGET 


          ip route show

          ip route flush

            [dev IFACE]

            [via PREFIX]


  ss命令:

    格式:ss [OPTION]... [FILTER]

      选项:

        -t: tcp协议相关

        -u: udp协议相关

        -w: 裸套接字相关

        -x:unix sock相关

        -l: listen状态的连接

        -a: 所有

        -n: 数字格式

        -p: 相关的程序及PID

        -e: 扩展的信息

        -m:内存用量

        -o:计时器信息


        FILTER := [ state TCP-STATE ] [ EXPRESSION ]


    TCP的常见状态:

      tcp finite state machine:

        LISTEN: 监听

        ESTABLISHED:已建立的连接

        FIN_WAIT_1

        FIN_WAIT_2

        SYN_SENT

        SYN_RECV

        CLOSED


      EXPRESSION:

        dport = 

        sport = 

        示例:’( dport = :ssh or sport = :ssh )’


    常用组合:

      -tan, -tanl, -tanlp, -uan


  netstat命令:

        netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships


        显示网络连接:

          netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]]  [--program|-p]

            -t: tcp协议相关

            -u: udp协议相关

            -w: raw socket相关

            -l: 处于监听状态

            -a: 所有状态

            -n: 以数字显示IP和端口;

            -e:扩展格式

            -p: 显示相关进程及PID


            常用组合:

              -tan, -uan, -tnl, -unl


        显示路由表:

          netstat  {--route|-r} [--numeric|-n]

            -r: 显示内核路由表

            -n: 数字格式


        显示接口统计数据:

          netstat  {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] 


            # netstat -i

            # netstat -I IFACE


  ifconfig命令

        ifconfig [interface]

          # ifconfig -a

          # ifconfig IFACE [up|down]

            ifconfig interface [aftype] options | address ...

              # ifconfig IFACE IP/mask [up]

              # ifconfig IFACE IP netmask MASK


              注意:立即生效;

              启用混杂模式:[-]promisc


  路由管理命令

              查看:route -n

              添加:route add

                route add  [-net|-host]  target [netmask Nm] [gw Gw] [[dev] If]


                  目标:192.168.1.3  网关:172.16.0.1

                  ~]# route add -host 192.168.1.3 gw 172.16.0.1 dev eth0


                  目标:192.168.0.0 网关:172.16.0.1

                  ~]# route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0

                  ~]# route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0


                  默认路由,网关:172.16.0.1

                  ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1

                  ~]# route add default gw 172.16.0.1


              删除:route del

                route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]


                  目标:192.168.1.3  网关:172.16.0.1

                  ~]# route del -host 192.168.1.3


                  目标:192.168.0.0 网关:172.16.0.1

                  ~]# route del -net 192.168.0.0 netmask 255.255.255.0


            DNS服务器指定

              /etc/resolv.conf

                nameserver DNS_SERVER_IP1

                nameserver DNS_SERVER_IP2

                nameserver DNS_SERVER_IP3


              正解:FQDN-->IP

                # dig -t A FQDN

                # host -t A FQDN

              反解:IP-->FQDN

                # dig -x IP

                # host -t PTR IP

                

                FQDN: www.magedu.com.


  Linux网络属性配置的tui(text user interface):

    system-config-network-tui


    也可以使用setup找到;


  CentOS7

  地址配置工具:nmcli

      nmcli  [ OPTIONS ] OBJECT { COMMAND | help }


        device - show and manage network interfaces


        connection - start, stop, and manage network connections


      如何修改IP地址等属性:

        #nmcli connection modify IFACE [+|-]setting.property value

           setting.property:

            ipv4.addresses

            ipv4.gateway

            ipv4.dns1

            ipv4.method

              manual


    网络接口配置tui工具:nmtui


    主机名称配置工具:hostnamectl

    status

    set-hostname


10、Linux系统软件包管理方法(安装、升级、卸载等操作)有哪些,以及如何管理的。


显示仓库列表:

      repolist [all|enabled|disabled]


    显示程序包:

      list

        # yum list [all | glob_exp1] [glob_exp2] [...]

        # yum list {available|installed|updates} [glob_exp1] [...]


    安装程序包:

      install package1 [package2] [...]


      reinstall package1 [package2] [...]  (重新安装)


    升级程序包:

      update [package1] [package2] [...]


      downgrade package1 [package2] [...] (降级)


    检查可用升级:

      check-update


    卸载程序包:

      remove | erase package1 [package2] [...]


    查看程序包information:

      info [...]


    查看指定的特性(可以是某文件)是由哪个程序包所提供:

      provides | whatprovides feature1 [feature2] [...]


    清理本地缓存:

      clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]


    构建缓存:

      makecache


    搜索:

      search string1 [string2] [...]


      以指定的关键字搜索程序包名及summary信息;


    查看指定包所依赖的capabilities:

      deplist package1 [package2] [...]


    查看yum事务历史:

      history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]


    安装及升级本地程序包:

    * localinstall rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use install)

        * localupdate rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use update)


    包组管理的相关命令:

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]


11、如何使用发行版光盘作为yum repository,请描述该过程。


  (1) 挂载光盘至某目录,例如/media/cdrom

        # mount -r -t iso9660 /dev/cdrom /media/cdrom

  (2) 创建配置文件

      [CentOS7]

      name=

      baseurl=

      gpgcheck=

      enabled=


12、写一个脚本,完成以下功能

   (1) 假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;

   (2) 显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;

   (3) 显示所有以S开头的文件的文件名,并且给其附加一个start字符串;

   (4) 分别统计S开头和K开头的文件各有多少;

13、写一个脚本,完成以下功能

   (1) 脚本能接受用户名作为参数;

   (2) 计算此些用户的ID之和;

14、写一个脚本

   (1) 传递一些目录给此脚本;

   (2) 逐个显示每个目录的所有一级文件或子目录的内容类型;

   (3) 统计一共有多少个目录;且一共显示了多少个文件的内容类型;

15、写一个脚本

  通过命令行传递一个参数给脚本,参数为用户名

  如果用户的id号大于等于500,则显示此用户为普通用户;

16、写一个脚本

   (1) 添加10用户user1-user10;密码同用户名;

   (2) 用户不存在时才添加;存在时则跳过;

   (3) 最后显示本次共添加了多少用户;

17、写一脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;


#!/bin/bash
for i in $(seq 1 254)
do
        ServerIp=172.16.250.$i
        ping -c 1 -w 1 $ServerIp &> /dev/null
        if [ $? -eq 0 ]; then
                echo -e "\033[0;32;1m $ServerIp is up. \033[0m"
        fi
done


18、打印九九乘法表;


http://zhangke0516.blog.51cto.com/1655731/1839502


[作业] 马哥2016全新Linux+Python高端运维班第八周作业