Linux网络配置(1)
    在Linux系统中,网络功能的实现被分成两部分存放;
        1.存放于内核空间中的协议栈;
            包括:物理层、数据链路层、网络层以及传输层协议;
            实现通信子网的功能;
        2.存放于用户空间中应用程序协议;
            包括:会话层、表示层、应用层协议;
            实现资源子网的功能;

    网络接口的命名规格:
        1.传统的命名规则:
            以太网网卡设备:ethX;X是从0开始的整数标识;例如:eth0,eth1,...
            PPPX网络设备:PPPoE(PPP over Ethernet),pppX,X是从0开始的整数标识;ppp0,ppp1,...
            virt:虚拟网络接口;
            环回接口:Loopback,lo[X],X是从0开始的整数标识;lo,lo0,...

        2.可预测的命名规则:(从CenOS 7开始)
            1)根据Firmware进行命令:
                每一台计算机上的网卡设备在其计算机硬件固件中,都有唯一的标识符;比如:MAC地址,厂商标识,设备的电器编号等;

                a)如果固件或者是BIOS是主板集成的设备所提供的索引信息并且该信息可以被引用,则根据索引信息进行设备命名;如:enoX;eno1,eno16777736等;
                b)如果固件或BIOS是主板上扩展插槽所提供的索引信息,并且该信息可以被引用,则根据此索引信息进行设备命名;如:ensX;ens1,ens33,ens36,...
                c)如果用户显示的定义可以使用诸如MAC地址之类的信息引用网络设备,可以将设备命名为:
                    enx000c290005b4

            2)根据设备在主板上的拓扑结构来命名;
                每一台计算机的主板上都有固定数量的插槽或接口,根据设备所插接的位置来唯一标识设备;比如:主板上第二个PCI插槽所插接的网卡的第一个接口;

                a)如果硬件接口的物理拓扑位置信息存在并且可被引用,则根据此信息进行设备命名;如:enp1s0;

            注意:在CentOS 7当中,如果上述命名规则都不可用,则延续传统命名方式,对网络设备进行命名;

            在可预测的命名结构中,命名格式所表示的含义:
                en:Ethernet,以太网;
                wl:wlan,无线以太网;
                www:wwan,无线广域网;

                o:表示集成设备的索引编号;
                s:扩展插槽的编号或扩展插槽的索引号;
                x:基于MAC地址进行命名的网络接口;
                ps:基于总线模型和扩展插槽的索引联合索引编号;

        在CentOS系统中,网络管理方式:
            1.为网卡设备设置网络属性参数;
                自动设置:
                    当主机所在的网络中至少有一台DHCP服务器时,可以考虑使用此方法;
                    通过DHCP服务器可以获取的网络配置属性参数包括:
                            IPv4/子网掩码(主要参数)
                        可选参数:
                            默认网关
                            DNS服务器地址
                            主机域名后缀
                            TFTP服务器地址
                            WINS服务器地址
                            ...
                手动设置:
                    1)使用命令完成配置:

                        在所有的CentOS系统中,都可以使用的命令:
                            net-tools家族(ifcfg家族)
                            iproute2家族
                        仅在CentOS7中,可以完美使用的命令
                            nm家族

                    2)修改配置文件完成配置:

                        /etc/sysconfig/network-scripts/ifcfg-IF_NAME
                        /etc/sysconfig/network-scripts/route-IF_NAME
                        /etc/hosts/
                        /etc/host.conf
                        /etc/nsswitch.conf
                        /etc/resolv.conf
                        /etc/services
                        /etc/sysctl.conf

net-tools家族(ifcfg家族)
    ifconfig
        ifconfig - configure a network interface
        格式:
            ifconfig [-v] [-a] [-s] [interface]
                查看网络接口的配置属性;
                如果省略接口名称则默认查看所有才处于UP状态的接口的配置属性;
                -a:查看所有接口,即包括处于down状态的接口;
                -v:查看详细信息;    

               ifconfig [-v] interface [aftype] options | address ...
                   设置网络接口的属性或IP地址信息;
                       [-]arp:在制定网络接口上开启或关闭ARP协议支持;
                       [-]promisc:在制定网络接口上开启或关闭混杂模式;
                       up:激活指定接口
                       down:关闭指定接口上的驱动;
                       netmask:明确的指定与IP地址相关的子网掩码;格式必须为点分十进制;
                       address:将指定的地址设置在指定的网络接口上;
    route
        route - show / manipulate the IP routing table
            显示或操纵路由表信息;
        路由表是路由设备完成路由转发的基础依据,因此路由表的存在对于路由设备而言至关重要;

        路由表中可能存在的路由条目的类型:
            1.主机路由:目的地址为特定单个IP地址的路由条目;
                172.16.72.1/32

            2.网络路由
                1)子网路由:目标地址是子网地址的路由条目;
                    172.16.72.0/24
                    10.1.1.4/30
                2)主网路由:目标地址为主网地址的路由条目;
                    192.168.0.0/24
                    172.16.0.0/16
                    10.0.0.0/8
                3)超网路由(CIDR):目标地址为CIDR的路由条目;或称为聚合路由或汇总路由;
                    192.168.0.0/16
                    172.16.0.0/12
            3.默认路由:目标地址为0.0.0.0/0的路由条目;
                0.0.0.0/0表示整个IP地址占中所有的IPv4地址;
                默认路由意思是:到达任意主机的路由;

        通常情况下,路由表条目匹配的顺序为"首项匹配域";匹配范围最小的优先级最高;


        route命令的格式:
            route [-CFvnNee] [-A family |-4|-6]
                查看内核中的IP路由表;
                -n:不讲IP地址反解为主机名,而是以数字化的IP地址显示主机标识;

            route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
            route del [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
                操纵路由表:
                    [root@localhost ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.1.0 dev eth0
                    [root@localhost ~]# route add default eno16777736
                    [root@localhost ~]# route add -host 192.168.2.1 eno16777736
                    [root@localhost ~]# route del -host 192.168.2.1        

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


            Print network connections:
                [--tcp|-t]:仅显示与TCP协议相关的会话连接的信息;
                [--udp|-u]:仅显示与UDP协议相关的会话连接的信息;
                [--udplite|-U]:仅显示UDPLITE协议相关的会话连接的信息;
                [--sctp|-S]:仅显示与SCTP相关的会话连接的信息;
                [--raw|-w]:仅显示与裸套接字相关的会话连接;
                [--listening|-l]:仅显示当前主机上处于listen状态的TCP连接的信息;
                [--all|-a]:查看所有状态的任意协议的连接信息;
                [--numeric|-n]:数字化显示查询结果中的主机名,端口号,用户ID等信息;
                    [--numeric-hosts]:仅数字化显示主机名;
                    [--numeric-ports]:仅数字化显示端口号;
                    [--numeric-users]:仅数字化显示用户ID;
                -p, --program:显示与该网络会话连接相关的应用程序进程信息;

            TCP有限状态机:
                ESTABLISHED
                      The socket has an established connection.

                SYN_SENT
                    The socket is actively attempting to establish a connection.

                    The socket has an established connection.

                SYN_SENT
                    The socket is actively attempting to establish a connection.

                SYN_RECV
                    A connection request has been received from the network.

                FIN_WAIT1
                    The socket is closed, and the connection is shutting down.

                FIN_WAIT2
                    Connection is closed, and the socket is waiting for a shutdown from the remote end.

                TIME_WAIT
                    The socket is waiting after close to handle packets still in the network.

                CLOSE  The socket is not being used.

                CLOSE_WAIT
                    The remote end has shut down, waiting for the socket to close.

                LAST_ACK
                    The remote end has shut down, and the socket is closed. Waiting for acknowledgement.

                    LISTEN The socket is listening for incoming connections.  Such sockets are not included in the output unless you specify the --listening (-l) or --all (-a) option.

                CLOSING
                    Both sockets are shut down but we still don't have all our data sent.

                UNKNOWN
                    The state of the socket is unknown.

                常用的选项组合:
                    -tan,-uan,-tnl,-unl,-tnl,-tnlp,-unlp,-tunlp



            Print routing tables:
                {--route|-r}:显示内核路由表;
                [--numeric|-n]:数字化显示相应的信息;
                     [--numeric-hosts]:
                     [--numeric-ports]:
                     [--numeric-users]:
                [--extend|-e[--extend|-e]]:显示扩展信息;

                常用选项组合:
                    -rn,-rne

            print interface statistics:
                {--interfaces|-I|-i}:显示接口的状态统计信息;
                [--all|-a]
                [--extend|-e]
                [--verbose|-v]
                [--program|-p]
                [--numeric|-n]
                  [--numeric-hosts]
                  [--numeric-ports]
                  [--numeric-users]

                常用的选项组合:
                    -i,-ie

            print Protocol statistics:
                {--statistics|-s}:显示各协议的详细的统计信息;
                [--tcp|-t]
                [--udp|-u]
                [--udplite|-U]
                [--sctp|-S]
                [--raw|-w]

iproute2家族:
    ip
        ip - show / manipulate routing, devices, policy routing and tunnels
        格式:
            ip [ OPTIONS ] OBJECT { COMMAND | help }

        OBJECT := { link | addr | route | netns }

        OPTIONS := { -V[ersion] | -s[tatistics] | -n[etns] name }

        COMMAND :={ add | delete | set | show | list | help }


        1)link:
            ip link :
                ip-link - network device configuration

                ip link { add | delete | set | show/list }

            ip link set ...
                ip link set [dev] IF_NAME { up | down }
                    激活或关闭指定的网络接口;
                    [root@localhost ~]# ip link set lo up
                    [root@localhost ~]# ip link set lo down

                ip link set [dev] IF_NAME { arp {on | off }}
                    是否允许在指定接口上使用arp协议;

                ip link set [dev] IF_NAME name NEWNAME
                    修改网络接口的名称,前提需要将改名的接口down掉,才可以修改;

                ip link set [dev] IF_NAME { netns PID | netns NETNSNAME}
                    将指定的网络接口添加到指定的网络命名空间中;

            ip link show/list ...
                列表显示所有的网络接口,只显示网络接口的数据链路层的属性信息;

            ip link help
                获取简短的帮助信息;

        netns:仅在CentOS 7 中可用;
            ip-netns - process network namespace management
                处理内核中的网络命名空间;
                    ip netns { list | show }
                        查看内核中所有的自定义的网络命名空间;

                    ip netns add NETNSNAME
                        创建网络命名空间;
                        [root@localhost ~]# ip netns add xwl

                    ip netns exec [ NETNSNAME ] command...
                        在指定的网络命名空间中执行命令;
                        [root@localhost ~]# ip link set dev lo netns xwl
                        [root@localhost ~]# ip netns exec xwl ip link show

                    ip [-all] netns del [ NETNSNAME ]
                        删除指定的命名空间,或者删除所有的网络命名空间;
                        [root@localhost ~]# ip netns del xwl

        address:
            ip-address - protocol address management
            格式:
                ip [ OPTIONS ] address  { COMMAND | help }

            ip address { add | del } IP_ADDR dev IF_NAME
                在网络接口上,添加IP地址或者从网路接口上删除IP地址;

                [root@localhost ~]# ip addr add 192.168.110.110/24 dev virbr0-nic    
                [root@localhost ~]# ip addr del 192.168.110.110/24 dev virbr0-nic

            ip address {show | list} [dev] [IF_NAME]
                查看指定或所有接口上的地址属性信息;

            ip address flush [ dev IF_NAME ]
                将指定接口或所有接口上通过ip命令添加配置的IP地址全部清除;
                注意:此命令在执行之前,必须确保不能影响全部网络接口,不能阻止远程管理的进行;

            ip address add IF_ADDR dev IF_NAME label LABEL_NAME
            ifconfig LABLE_NAME IF_NAME
                给网络接口添加新的IP地址时,指定将IP地址应用于接口的某一个标签上,其目的是为了能够让ifconfig命令查看同一接口上不同的IP地址配置;

                一般来讲,接口的标签都会使用"IF_NAME:#"的格式来表示;

        route:静态路由管理
            ip-route - routing table management
            ip route { add | del | change | append | replace } ROUTE

            ROUTE := TARGET/NETMASK via NEXT_HOP [dev IF_NAME]

            [root@localhost ~]# ip route add 192.168.100.0/24 via 172.16.0.1 dev lo
            [root@localhost ~]# ip route del 192.168.100.0/24


    ss
        ss - another utility to investigate sockets
        ss [options] [ FILTER ]
        常用选项:
            -t, --tcp:仅显示与TCP协议相关的会话连接状态统计信息;
            -u, --udp:仅显示与UDP协议相关的会话连接状态统计信息;
            -w, --raw:仅显示与裸套接字相关的会话连接状态统计信息;
            -l, --listening:仅显示处于监听状态的套接字状态统计信息;
            -a, --all:显示所有的套接字会话连接的状态统计信息;
            -n, --numeric:数字化显示结果;
            -p, --processes:显示与链接会话相关的应用程序进程及进程ID;
            -e, --extended:显示详细的扩展信息;
            -m, --memory:显示套接字占用的内存数量;
            -o, --options:显示计时器信息;

        常用的选项组合:
            -tan,-uan,-tnl,-unl,-tnlp,-unlp,-tunlp

        FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
            STATE-FILTER:
                All standard TCP states:
                    established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, listen and closing

                all - for all the states

                  connected - all the states except for listen and closed

                  synchronized - all the connected states except for syn-sent

                  bucket - states, which are maintained as minisockets, i.e.  time-wait and syn-recv

                  big - opposite to bucket

            EXPRESSION:
                dport = :port
                sport = :port
                示例:
                    '( dport = :80 or dport = :22 )'

net-tools家族和iproute2家族:
    特点:所有能够完成网络参数配置的命令,在进行网络参数的配置之后,其配置结果会立即生效;但是,只要重新启动网络设备或者刷新内核参数,其配置就立即丢失;Linux网络配置(1)
    在Linux系统中,网络功能的实现被分成两部分存放;
        1.存放于内核空间中的协议栈;
            包括:物理层、数据链路层、网络层以及传输层协议;
            实现通信子网的功能;
        2.存放于用户空间中应用程序协议;
            包括:会话层、表示层、应用层协议;
            实现资源子网的功能;

    网络接口的命名规格:
        1.传统的命名规则:
            以太网网卡设备:ethX;X是从0开始的整数标识;例如:eth0,eth1,...
            PPPX网络设备:PPPoE(PPP over Ethernet),pppX,X是从0开始的整数标识;ppp0,ppp1,...
            virt:虚拟网络接口;
            环回接口:Loopback,lo[X],X是从0开始的整数标识;lo,lo0,...

        2.可预测的命名规则:(从CenOS 7开始)
            1)根据Firmware进行命令:
                每一台计算机上的网卡设备在其计算机硬件固件中,都有唯一的标识符;比如:MAC地址,厂商标识,设备的电器编号等;

                a)如果固件或者是BIOS是主板集成的设备所提供的索引信息并且该信息可以被引用,则根据索引信息进行设备命名;如:enoX;eno1,eno16777736等;
                b)如果固件或BIOS是主板上扩展插槽所提供的索引信息,并且该信息可以被引用,则根据此索引信息进行设备命名;如:ensX;ens1,ens33,ens36,...
                c)如果用户显示的定义可以使用诸如MAC地址之类的信息引用网络设备,可以将设备命名为:
                    enx000c290005b4

            2)根据设备在主板上的拓扑结构来命名;
                每一台计算机的主板上都有固定数量的插槽或接口,根据设备所插接的位置来唯一标识设备;比如:主板上第二个PCI插槽所插接的网卡的第一个接口;

                a)如果硬件接口的物理拓扑位置信息存在并且可被引用,则根据此信息进行设备命名;如:enp1s0;

            注意:在CentOS 7当中,如果上述命名规则都不可用,则延续传统命名方式,对网络设备进行命名;

            在可预测的命名结构中,命名格式所表示的含义:
                en:Ethernet,以太网;
                wl:wlan,无线以太网;
                www:wwan,无线广域网;

                o:表示集成设备的索引编号;
                s:扩展插槽的编号或扩展插槽的索引号;
                x:基于MAC地址进行命名的网络接口;
                ps:基于总线模型和扩展插槽的索引联合索引编号;

        在CentOS系统中,网络管理方式:
            1.为网卡设备设置网络属性参数;
                自动设置:
                    当主机所在的网络中至少有一台DHCP服务器时,可以考虑使用此方法;
                    通过DHCP服务器可以获取的网络配置属性参数包括:
                            IPv4/子网掩码(主要参数)
                        可选参数:
                            默认网关
                            DNS服务器地址
                            主机域名后缀
                            TFTP服务器地址
                            WINS服务器地址
                            ...
                手动设置:
                    1)使用命令完成配置:

                        在所有的CentOS系统中,都可以使用的命令:
                            net-tools家族(ifcfg家族)
                            iproute2家族
                        仅在CentOS7中,可以完美使用的命令
                            nm家族

                    2)修改配置文件完成配置:

                        /etc/sysconfig/network-scripts/ifcfg-IF_NAME
                        /etc/sysconfig/network-scripts/route-IF_NAME
                        /etc/hosts/
                        /etc/host.conf
                        /etc/nsswitch.conf
                        /etc/resolv.conf
                        /etc/services
                        /etc/sysctl.conf

net-tools家族(ifcfg家族)
    ifconfig
        ifconfig - configure a network interface
        格式:
            ifconfig [-v] [-a] [-s] [interface]
                查看网络接口的配置属性;
                如果省略接口名称则默认查看所有才处于UP状态的接口的配置属性;
                -a:查看所有接口,即包括处于down状态的接口;
                -v:查看详细信息;    

               ifconfig [-v] interface [aftype] options | address ...
                   设置网络接口的属性或IP地址信息;
                       [-]arp:在制定网络接口上开启或关闭ARP协议支持;
                       [-]promisc:在制定网络接口上开启或关闭混杂模式;
                       up:激活指定接口
                       down:关闭指定接口上的驱动;
                       netmask:明确的指定与IP地址相关的子网掩码;格式必须为点分十进制;
                       address:将指定的地址设置在指定的网络接口上;
    route
        route - show / manipulate the IP routing table
            显示或操纵路由表信息;
        路由表是路由设备完成路由转发的基础依据,因此路由表的存在对于路由设备而言至关重要;

        路由表中可能存在的路由条目的类型:
            1.主机路由:目的地址为特定单个IP地址的路由条目;
                172.16.72.1/32

            2.网络路由
                1)子网路由:目标地址是子网地址的路由条目;
                    172.16.72.0/24
                    10.1.1.4/30
                2)主网路由:目标地址为主网地址的路由条目;
                    192.168.0.0/24
                    172.16.0.0/16
                    10.0.0.0/8
                3)超网路由(CIDR):目标地址为CIDR的路由条目;或称为聚合路由或汇总路由;
                    192.168.0.0/16
                    172.16.0.0/12
            3.默认路由:目标地址为0.0.0.0/0的路由条目;
                0.0.0.0/0表示整个IP地址占中所有的IPv4地址;
                默认路由意思是:到达任意主机的路由;

        通常情况下,路由表条目匹配的顺序为"首项匹配域";匹配范围最小的优先级最高;


        route命令的格式:
            route [-CFvnNee] [-A family |-4|-6]
                查看内核中的IP路由表;
                -n:不讲IP地址反解为主机名,而是以数字化的IP地址显示主机标识;

            route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
            route del [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
                操纵路由表:
                    [root@localhost ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.1.0 dev eth0
                    [root@localhost ~]# route add default eno16777736
                    [root@localhost ~]# route add -host 192.168.2.1 eno16777736
                    [root@localhost ~]# route del -host 192.168.2.1        

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


            Print network connections:
                [--tcp|-t]:仅显示与TCP协议相关的会话连接的信息;
                [--udp|-u]:仅显示与UDP协议相关的会话连接的信息;
                [--udplite|-U]:仅显示UDPLITE协议相关的会话连接的信息;
                [--sctp|-S]:仅显示与SCTP相关的会话连接的信息;
                [--raw|-w]:仅显示与裸套接字相关的会话连接;
                [--listening|-l]:仅显示当前主机上处于listen状态的TCP连接的信息;
                [--all|-a]:查看所有状态的任意协议的连接信息;
                [--numeric|-n]:数字化显示查询结果中的主机名,端口号,用户ID等信息;
                    [--numeric-hosts]:仅数字化显示主机名;
                    [--numeric-ports]:仅数字化显示端口号;
                    [--numeric-users]:仅数字化显示用户ID;
                -p, --program:显示与该网络会话连接相关的应用程序进程信息;

            TCP有限状态机:
                ESTABLISHED
                      套接字有一个已建立的连接。             

                  SYN_SENT
                    The socket is actively attempting to establish a connection.

                    The socket has an established connection.

                SYN_SENT
                    The socket is actively attempting to establish a connection.

                SYN_RECV
                    A connection request has been received from the network.

                FIN_WAIT1
                    The socket is closed, and the connection is shutting down.

                FIN_WAIT2
                    Connection is closed, and the socket is waiting for a shutdown from the remote end.

                TIME_WAIT
                    The socket is waiting after close to handle packets still in the network.

                CLOSE  The socket is not being used.

                CLOSE_WAIT
                    The remote end has shut down, waiting for the socket to close.

                LAST_ACK
                    The remote end has shut down, and the socket is closed. Waiting for acknowledgement.

                    LISTEN The socket is listening for incoming connections.  Such sockets are not included in the output unless you specify the --listening (-l) or --all (-a) option.

                CLOSING
                    Both sockets are shut down but we still don't have all our data sent.

                UNKNOWN
                    The state of the socket is unknown.

                常用的选项组合:
                    -tan,-uan,-tnl,-unl,-tnl,-tnlp,-unlp,-tunlp



            Print routing tables:
                {--route|-r}:显示内核路由表;
                [--numeric|-n]:数字化显示相应的信息;
                     [--numeric-hosts]:
                     [--numeric-ports]:
                     [--numeric-users]:
                [--extend|-e[--extend|-e]]:显示扩展信息;

                常用选项组合:
                    -rn,-rne

            print interface statistics:
                {--interfaces|-I|-i}:显示接口的状态统计信息;
                [--all|-a]
                [--extend|-e]
                [--verbose|-v]
                [--program|-p]
                [--numeric|-n]
                  [--numeric-hosts]
                  [--numeric-ports]
                  [--numeric-users]

                常用的选项组合:
                    -i,-ie

            print Protocol statistics:
                {--statistics|-s}:显示各协议的详细的统计信息;
                [--tcp|-t]
                [--udp|-u]
                [--udplite|-U]
                [--sctp|-S]
                [--raw|-w]

iproute2家族:
    ip
        ip - show / manipulate routing, devices, policy routing and tunnels
        格式:
            ip [ OPTIONS ] OBJECT { COMMAND | help }

        OBJECT := { link | addr | route | netns }

        OPTIONS := { -V[ersion] | -s[tatistics] | -n[etns] name }

        COMMAND :={ add | delete | set | show | list | help }


        1)link:
            ip link :
                ip-link - network device configuration

                ip link { add | delete | set | show/list }

            ip link set ...
                ip link set [dev] IF_NAME { up | down }
                    激活或关闭指定的网络接口;
                    [root@localhost ~]# ip link set lo up
                    [root@localhost ~]# ip link set lo down

                ip link set [dev] IF_NAME { arp {on | off }}
                    是否允许在指定接口上使用arp协议;

                ip link set [dev] IF_NAME name NEWNAME
                    修改网络接口的名称,前提需要将改名的接口down掉,才可以修改;

                ip link set [dev] IF_NAME { netns PID | netns NETNSNAME}
                    将指定的网络接口添加到指定的网络命名空间中;

            ip link show/list ...
                列表显示所有的网络接口,只显示网络接口的数据链路层的属性信息;

            ip link help
                获取简短的帮助信息;

        netns:仅在CentOS 7 中可用;
            ip-netns - process network namespace management
                处理内核中的网络命名空间;
                    ip netns { list | show }
                        查看内核中所有的自定义的网络命名空间;

                    ip netns add NETNSNAME
                        创建网络命名空间;
                        [root@localhost ~]# ip netns add xwl

                    ip netns exec [ NETNSNAME ] command...
                        在指定的网络命名空间中执行命令;
                        [root@localhost ~]# ip link set dev lo netns xwl
                        [root@localhost ~]# ip netns exec xwl ip link show

                    ip [-all] netns del [ NETNSNAME ]
                        删除指定的命名空间,或者删除所有的网络命名空间;
                        [root@localhost ~]# ip netns del xwl

        address:
            ip-address - protocol address management
            格式:
                ip [ OPTIONS ] address  { COMMAND | help }

            ip address { add | del } IP_ADDR dev IF_NAME
                在网络接口上,添加IP地址或者从网路接口上删除IP地址;

                [root@localhost ~]# ip addr add 192.168.110.110/24 dev virbr0-nic    
                [root@localhost ~]# ip addr del 192.168.110.110/24 dev virbr0-nic

            ip address {show | list} [dev] [IF_NAME]
                查看指定或所有接口上的地址属性信息;

            ip address flush [ dev IF_NAME ]
                将指定接口或所有接口上通过ip命令添加配置的IP地址全部清除;
                注意:此命令在执行之前,必须确保不能影响全部网络接口,不能阻止远程管理的进行;

            ip address add IF_ADDR dev IF_NAME label LABEL_NAME
            ifconfig LABLE_NAME IF_NAME
                给网络接口添加新的IP地址时,指定将IP地址应用于接口的某一个标签上,其目的是为了能够让ifconfig命令查看同一接口上不同的IP地址配置;

                一般来讲,接口的标签都会使用"IF_NAME:#"的格式来表示;

        route:静态路由管理
            ip-route - routing table management
            ip route { add | del | change | append | replace } ROUTE

            ROUTE := TARGET/NETMASK via NEXT_HOP [dev IF_NAME]

            [root@localhost ~]# ip route add 192.168.100.0/24 via 172.16.0.1 dev lo
            [root@localhost ~]# ip route del 192.168.100.0/24


    ss
        ss - another utility to investigate sockets
        ss [options] [ FILTER ]
        常用选项:
            -t, --tcp:仅显示与TCP协议相关的会话连接状态统计信息;
            -u, --udp:仅显示与UDP协议相关的会话连接状态统计信息;
            -w, --raw:仅显示与裸套接字相关的会话连接状态统计信息;
            -l, --listening:仅显示处于监听状态的套接字状态统计信息;
            -a, --all:显示所有的套接字会话连接的状态统计信息;
            -n, --numeric:数字化显示结果;
            -p, --processes:显示与链接会话相关的应用程序进程及进程ID;
            -e, --extended:显示详细的扩展信息;
            -m, --memory:显示套接字占用的内存数量;
            -o, --options:显示计时器信息;

        常用的选项组合:
            -tan,-uan,-tnl,-unl,-tnlp,-unlp,-tunlp

        FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
            STATE-FILTER:
                All standard TCP states:
                    established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, listen and closing

                all - for all the states

                  connected - all the states except for listen and closed

                  synchronized - all the connected states except for syn-sent

                  bucket - states, which are maintained as minisockets, i.e.  time-wait and syn-recv

                  big - opposite to bucket

            EXPRESSION:
                dport = :port
                sport = :port
                示例:
                    '( dport = :80 or dport = :22 )'

net-tools家族和iproute2家族:
    特点:所有能够完成网络参数配置的命令,在进行网络参数的配置之后,其配置结果会立即生效;但是,只要重新启动网络设备或者刷新内核参数,其配置就立即丢失


nm家族:仅限于Centos 7发行版;
    nmcli:
        nmcli - command-line tool for controlling NetworkManager
        格式:
            nmcli [OPTIONS...] OBJECT {COMMAND}

            OBJECT:={general | networking | radio | connection | device | agent}

        connection:
            COMMAND {show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export}

            show:显示所有的或指定的网络连接的属性信息;
            up|down:启用|关闭指定的网络连接;
            add:添加一个网络连接;(创建网络接口的配置文件)
                autoconnect yes|no:是否自动启动此连接,相当于在配置文件中指明 ONBOOT={yes|no}
                ifname IF_NAME:指定要创建连接的目标网络接口的设备名称;
                con-name CON_NAME:为指定的网络及接口设备创建一个设备名称
                type TYPE:指定网络设备设备的接口类型;
            delete:删除一个网络连接,删除网络接口的配置文件,参数为con-name;
            reload:不重启网络接口,但重新加载接口的配置文件中所定义的配置信息;
            modify:
                modify [--temporary] [id | uuid | path] ID {[+|-]setting.property value}...
                setting.property
                    connection.autoconnect yes|no
                    connection.addresses
                    connection.dns
                    connection.method [auto,link-local,manual,shared,disabled]
                    connection.gateway

            注意:通过nmcli命令设置的网络连接的配置,默认会直接存放在网络接口的配置文件中;因此配置不会立即生效,如果想要配置文件中的配置属性;
                1.重启全部网络接口
                    # systemctl restate network.service
                2.重启指定的网络接口;
                    ifdown IF_NAME ; ifup IF_NAME
                3.不重启接口启动配置文件;
                    nmcli connection reload CON_NAME

        device:
            COMMAND {status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp}



      [root@localhost ~]# nmcli connection show
      [root@localhost ~]# nmcli connection show ens33
      [root@localhost ~]# nmcli connection down ens33
      [root@localhost ~]# nmcli connection modify eno33 ipv4.addresses 172.12.1.13/16
    nmtui:(必须交互的完成,脚本中不能用)

        与nmtui相似的Centos 6的命令:
            # system-config-network[-tui]
            # setup --> [network configuration,网络配置]

        注意:上述操作完成之后,必须重启网络接口,才能使新配置信息生效;
        7    systemctl restart network.service | 6 service network restart

            ifdown connection ; ifup connection
            nmcli connection reload CON_NAME


        hostnamectl set-hostname HOSTNAME
            localhost.localdomain(主机默认值)
            /etc/hostname

Bonding的监控时长:
    miimon=Number

    用miimon来监控链路状态;在指定的时间内(Number,单位ms)时间内,如果某个接口的测试结果为不能联通,则将此接口标识为失效,此时需要进行故障倒换;      

Bonding的配置:
    1.创建虚拟接口,其名称通常为bond0,bond1....;
    2.选择miimon的监测时间;
    3.选择bonding的工作模式;
    4.选择用于此次bonding的物理接口(slave接口);

    nmcli,nmtui,vim

配置方式:
    1.虚拟接口的配置(Master接口)
    # vim /etc/sysconfig/network-scripts/ifcfg-bond0


    2.物理接口的配置(Slave接口)
    # vim /etc/sysconfig/network-scripts/ifcfg-eth0

    所有物理接口,进行类似配置:DEVICE的值一定要和物理接口保持一致;

    在Centos 7 中除了Bonding之外,还引入了一个新的概念,网络组(Network Teaming)
        网络组:将多个网络接口设备聚合在一起的方案,可以实现网络接口的冗余和高可用,提高吞吐量;

        网络组和bonding相比,具有更好的性能以及更好的可扩展性;建议在Centos7中使用网络组而不是bonding;

        在Centos 7中所选择的内核中支持网络组;网络组就是其内核中的一个内核驱动和一个名为teamd的守护进程;

        在bonding中能够使用的工作模式,网络组都可以支持;并且网络组使用运行器(runner)来实现这些功能;
            loadbalance
            activebackup
            broadcast
            roundrobin
            lacp(802.3ad,Link Aggregation Control Protocol)

        网络组的特点:
            1.启动网络组接口不会自动启动网络组中的其他的port接口;
            2.启动网路组的port接口,也不会自动启动网络组接口;
            3.禁用网络组接口,则会立即禁用网络组中的所有的port接口;
            4.对于没有添加任何port接口的网络组而言,只能配置静态IP地址,不能设置从DHCP获取IP地址;如果对于此类的网络组接口设置了DHCP配置,这样的网络组接口就一直不启动,一直等待有其他的port接口加入此网络组;

网络组的配置方法:
    1.创建网络组接口
        nmcli connection add type team con-name TEAM_CON_NAME ifname IF_NAME  config JSON
            JSON是用来指定runner的,其格式为:
                '{"runner": {"name": "METHOD"}}'

        示例:
            # nmcli connection add type team con-name class18 ifname class18 config '{"runner": {"name": "loadbalance"}}'

    2.创建port接口:
        nmcli connection add type team-slave [con-name CON_NAME] ifname IF_NAME master TEAM_NAME

        注意:如果不指定con-name,默认的con-name为:team-slave-IF_NAME

        示例:
            # nmcli connection add type team-slave ifnamae eno33 master class18
            # nmcli connection add type team-slave ifnamae eno22 master class18


            # nmcli connection up class18
            # nmcli connection up eno22
            # nmcli connection up eno33

            # nmcli device disconnect eno22
            # nmcli device disconnect eno33

        注意:
            1.所有的port接口不需要配置IP地址,子网掩码,网关,DNS服务器等属性;次类配置属性仅在网络组接口中配置即可;配置的方法,可以直接修改其配置文件,也可以使用nmcli connection modify ...
            2.配置完成之后,需要重启网络服务;
                # systemctl restart network.service

        建议:
            在Centos 6中使用Bonding
            在Centos 7中使用Networking Teaming

网络检测工具:
    ping | hping
    traceroute
    arp

ping命令:
    ping, ping6 - 向网络主机发送ICMP回显请求(ECHO_REQUEST)分组
    格式:
        ping [-c count] [-i wait] [-l preload] [-p pattern] [-s  packetsize]

    常用选项:
        -c #:此次目标主机是否在线,发送#个报文数量;
        -I interface|addresss:
            如果参数是IP地址,则此次测试操作的源IP地址即为此处指明的IP地址;
            如果参数是接口名称,则此次测试操作,经由该接口发送出去;
        -t ttl:设置此次测试时的报文的TTL值;
        -W timeout:设置接受响应报文的超时时间;


    hping3
        --fast
        --faster
        --flood

traceroute:
    Windows:tracert
    traceroute - print the route packets trace to network host
        仅返回TTL值为1时的路由表

arp
    arp - manipulate the system ARP cache
        查看或修改arp缓存中的内容

        -n

网络客户端工具:
    ftp,lftp,lftpget,wget

    wget
        Wget - The non-interactive network downloader.

        wget [option] [URL]

        常用选项:
            -O file:
            --limit-rate=amount:限速
            -nH
            -np