CentOS中的网络管理

  1. 为网卡设置网络属性:

自动获取: 在主机所在网络中, 至少有一台DHCP服务器; 通过DHCP服务器进行地址租凭.

手动配置(静态指定):

    a.使用命令:

        net-tools家族(ifcfg家族):

            ifconfig(ipconfig ------ Windows中)

                查看网络接口的配置信息;

                配置网络属性;

                管理接口状态;

            route:

                查看路由信息;

                配置路由信息(网关, 静态路由, 静态默认路由);

            netstat:

                状态及统计数据的查看;

        iproute家族:

            ip OBJECT

                其中OBJECT可以是:

                    addr: IP地址和掩码的管理

                    link: 物理接口的管理

                    route: 路由管理

            ss:

                状态及统计数据的查看 

        注意: 以上命令, 在任何的Linux发行版中都适用;

        nm家族: Network Manager

            nmcli: 命令行工具

            nmtui: text-window的工具

        nm家族只在CentOS7中能够使用, 在CentOS6中可以使用一下工具:

            system-config-network

            system-config-network-cmd

            system-config-network-tui

            上述三个工具都是setup的子命令; 在CentOS6中可以使用上述命令;

    b.修改配置文件

2.网络接口的命名方式:

    思科的交换机: FastEthernet0/1, GigabitEthernet0/1

    思科的路由器: Ethernet0/0, FastEthernet0/0

    Linux的接口命名的方式:

        a.传统的命名方式:

            以太网: ethX, X从0开始的整数; 如: eth0, eth1, ......

            PPP网络: PPPoE, PPP over Ethernet

                        pppx, x从0开始的整数; 如: ppp0, ppp1, ......

            环回接口: lo, loopback;

            在CentOS6及之前的发行版本中使用;

        b.可预测的命名方案(CentOS7开始)

            可以支持很多中命名机制:

                1)根据Firmware进行命令:

                    每一台计算机的网卡在起计算机的硬件固件中都有唯一的标识符, 比如: MAC地址, 厂商标识, 电器编号等;

                2)根据物理拓扑结构:

                    每一台计算机的主板上都有固定数量的插槽或接口, 如主板上第二个插槽链接的网卡的第一个物理接口等;

        根据不同的命名机制, 可以有如下的命令标准:

            1)如果Firmware或BIOS是主板上集成的设备提供的索引信息并且该信息可用, 则根据此索引信息进行设备命名, 如: enoX, eno1, eno167777736, ......

            2)如果Firmware或BIOS是主板上扩展插槽所提供的索引信息并且该信息可用, 则根据此索引信息进行设备命名, 如: ensX, ens0, ens1, ......

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

            4)如果用户显示的定义, 可以根据诸如MAC地址进行命名, 如: enx000c290045b3

            5)如果上述可预测命名皆不可用, 则延用传统命名方式对网络设备进行命名;

            命名的格式组成:

                en: ethernet

                wl: wlan

                ww: wwan

            名称的类型:

                o<index>: 集成设备的索引编号

                s<slot_num>: 扩展插槽的索引编号

                x<MAC>: 基于MAC地址进行命名;

                p<bus>s<slot>: 基于总线+扩展插槽的索引联合索引编号; 

net-tools家族(ifcfg家族):

    1.ifconfig命令:

        ifconfig - configure a network interface

        ifconfig [interface] : 用于查看网络接口的配置信息;

            如果执行ifconfig命令, 不带任何接口做参数, 则显示所有处于激活状态的网络接口信息;

            如果执行ifconfig命令, 带有特定接口名称作为参数, 则无论接口是否处于激活状态, 都显示该网络接口的信息;

        ifconfig interface address: 用于配置接口的网络参数;

            ifconfig interface IP[/PREFIX_LEN] [up|down]

            ifconfig interface IP netmask SUBNET_MASK [up|down]

        实例:

            # ifconfig eth1 172.16.100.105

            # ifconfig eth1 172.16.100.105/24

            # ifconfig eth1 172.16.100.105 netmask 255.255.255.192

            # ifconfig eth1 up|down

        常用选项:

            -a: 显示所有的网络接口, 无论其是否处于激活状态

        实例: 

            # ifconfig -a

    2.route命令: 查看和管理路由信息

        路由表中的路由条目, 可能包括下列几种类型;

            1)主机路由: 目标地址是特定的单个IP地址;

            2)网络路由: 子网路由: 主网路由, 超网路由(CIDR);

            3)默认路由: 目标地址为0.0.0.0/0的路由条目; 到达任意地址的路由;

        常用选项:

            -n: 以数字话显示主机名(IP地址)和端口

        设置路由信息:

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

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

        设置默认网关的方法: default === -net 0.0.0.0 netmask 0.0.0.0

            route add default gw 192.168.100.1

            route add default gw 192.168.220.1 dev eth2 

        删除默认网关的方法:

            route del default 

            route del default gw 172.16.0.1

        添加静态路由的方法:

            route add -net 10.0.0.0/8 gw 192.168.220.100 [dev eth1]

        删除静态路由的方法:

            route del -net 10.0.0.0/8

            route del -net 10.0.0.0/8 gw 192.168.220.100 

netstat命令:

    Print network connections, routing tables, interface statics, masquerade connections, and multicast menerships

    Print network connections

        [--tcp|-t]: 只显示与TCP协议相关的网络连接

        [--udp|-u]: 只显示与UDP协议相关的网络连接

        [--udplite|-U]: 只显示udplite协议相关的网络连接

        [--raw|-w]: 显示与裸套接字相关的网络连接

        [--listening|-l]: 显示处于LISTEN状态的TCP连接

        [--all|-a]: 查看所有状态的任意连接

        [--numeric|-n]: 数字化显示结果中的主机名, 端口号, 用户ID等信息;

            [--numeric-hosts]

            [--numeric-ports]

            [--numeric-users]

        [--extend|-e[--extend|-e]]: 以扩展格式显示结果

        [--program|-p]: 显示与该网络连接相关的应用程序及进程ID

TCP的有限状态机(TCP FSM):

    State    套接字状态

    ESTABLISHED    套接字有一个已建立的连接

    SYN_SENT    套接字正在积极尝试建立连接

    SYN_RECV    已从网络收到连接请求

    FIN_WAIT1    套接字已关闭, 连接正在关闭

    FIN_WAIT2    连接已关闭, 套接字正在等待远程终端的关机

    TIME_WAIT    套接字在等待处理网络中的数据包之后等待

    CLOSE     套接字未被使用

    CLOSE_WAIT    远程终端已关闭, 等待套接字关闭

    LAST_ACK    远程终端已关闭, 套接字已关闭. 等待确认

    LISTEN    套接字监听传入的连接, 这样的套接字不包含在输出中, 除非您指定侦听(-l)或全部(-a)选项

    CLOSING    两个套接字都关闭了, 但我们仍然没有发送所有的数据

    UNKNOWN    套接字的状态未知

常用的选项组合:

    -tan, -uan, -tnl, -unl, -tnlp, -unlp, -tunlp

iproute家族:

    ip: 显示/操作路由, 设备, 策略路由和隧道

    ip [ OPTIONS ] OBJECT { COMMAND | help }

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

    ip link COMMAND

        COMMAND: add, delete, set, show, help

        ip link set - 修改网络设备的配置参数

            ip link set [dev] IFACE_NAME { up | down }: 激活或禁用网络接口

            ip link set [dev] IFACE_NAME [ arp { on | off } ]: 是否允许此网络接口使用ARP协议;

            ip link set [dev] IFACE_NAME name IDACE_NEW_NAME: 更改网络接口名称, 需要将设备先down掉;

            ip link set [dev] IFACE_NAME [ mtu MTU ]: 修改网络接口的MTU数值;

            ip link set [dev] IFACE_NAME [netns NAME]: 将指定的网络接口加入到指定的网络名称空间中;

        ip link { show | list }: 列表显示所有的链路接口, 只显示链路层信息;

        ip link help: 获得简短的帮助信息

    ip netns COMMAND - 设置内核中的网络名称空间;

        ip netns list: 列表显示所有的自定义的名称空间;

        ip netns add NS_NAME: 创建名称空间;

        ip netns exec NS_NAME cmd: 在指定的名称空间中使用命令;

        ip netns delete NS__NAME: 删除指定的名称空间;

    ip addr COMMAND - 查看和设置三层逻辑网络地址;

        ip addr add IDADDR dev IFACE_NAME: 为指定的网络接口添加IP地址;

        ip addr del IDADDR dev IFACE_NAME: 将IP地址从指定的网络接口上删除;

        ip addr flush dev IDACE_NAME: 将指定接口上配置的所有IP地址全部清楚;

        ip addr { show | list } [dev IFACE_NAME]: 显示网络接口上配置的IP地址;

    为网络接口增加多个IP地址, 并能够使用ifconfig查看:

        ip addr add IFADDR dev IFACE_NAME label IFACE_NAME_LABEL

ip route COMMAND - 查看和设置路由表信息

    ip route { add | del } TARGET/PREFIX via NEXT_HOP [dev IDACE_NAME]

    ip route list

net-tools

iproute

    特点: 使用命令配置网络参数以后, 网络参数会立即生效, 但是, 只要重新启动或重新激活网络接口, 其配置的网络参数立即丢失;

    上述命令的配置结果, 并没有影响或修改网络设备的配置文件;

配置文件:

    CentOS6中:

        跟IP, MASK, GATEWAY, DNS Server相关的配置文件;

            /etc/sysconfig/network-scripts/ifcfg-IFACE_NAME

                DEVICE: 此网络接口的名称;

                TYPE: 此网络接口的类型, 比较常见的是Ethernet, Bridge, Token Ring, ...

                HWADDR: 此设备的物理地址, 在以太网中是MAC地址, 

                ONBOOT: 在系统引导的过程中, 是否激活此设备;

                NETBOOT: 是否可以使用此设备进行网络引导;

                BOOTPROTO: 激活此接口时使用何种协议来配置此接口的属性;

                    动态配置: dhcp, bootp

                    静态配置: static, none

                IPV6INIT: 是否在此接口上初始化IPV6协议

                USERCTL: 是否允许普通用户能够管理此接口, 推荐取值为no;

                IPADDR: 指定此接口的固定IP地址, 前提是BOOTPROTO应该是static或none;

                NETMASK: 设置IP地址对应的子网掩码, 

                PREFIX: 设置IP地址的网络前缀的位数;

                GATEWAY: 设置默认网关

                DNS1: 首选DNS服务器的地址指向;

                DNS2: 备用DNS服务器的地址指向;

                DNS3: 第三DNS服务器的地址指向;

                PEERDNS: 是否允许从DHCP服务器获得DNS服务器的地址指向替代此配置文件中的DNS服务器的地址指向; 默认值为允许;

                NM_CONTROLLED: 是否允许NetworkManager服务管理网络接口, 此服务在CentOS6中非常不完善, 所以建议不适用此服务进行网络接口的管理; 而且最后将此服务永久关闭, 执行下列命令即可:

                    # service NetworkManager stop

                    # chkconfig NetworkManager off

        主机名称的配置文件: /etc/sysconfig/network

            HOSTNAME: 当前Linux系统使用的主机名称;

            # hostname    查看当前系统的FQDN

            # hostname NEW HOSTNAME    注销后重新登录, 即可生效

            系统自动生成的配置文件

                /etc/udev/rules.d/70-persistent-net.rules

            重启网卡

                service network restart

CentOS7中:

    跟IP, MASK, GATEWAY, DNS Server相关的配置文件:

        /etc/sysconfig/network-scripts/ifcfg-IFACE_NAME

            多数的配置语句与CentOS6相同, 多出了下列几项;

            UUID: 全局唯一标识符, 用来唯一标识此网络接口;

            NAME: 此网络接口的显示名称;

            DEFROUTE: 是否允许此网络接口运行默认路由;

    主机名称的配置文件: /etc/sysconfig/network

        # hostnamectl set-hostname NEW_HOSTNAME

本地解析配置文件: /etc/hosts

    格式为: IP地址 主机名(多个主机名之间使用空白字符隔开)

解析器文件: /etc/resolv.conf

    search DOMAIN_NAME

    nameserver DNS_SERER_IP_ADDRESS

静态路由的配置文件: /etc/sysconfig/network-scripts/route-IFACE_NAME

    IFACE_NAME: 必须为此次路由出站接口的名称;

    两种风格的写法:

        1.每条路由信息占用一行:

            TARGET via NEXT_HOP [dev IFACE_NAME]

        2.每条路由信息占用多行:

            ADDRSS#=TARGET

            NATMASK#=MASK

            GATEWAY#=NEXT_HOP

Bonding - 绑定

    就是将多块网卡(多个网络接口设备)绑定同一IP地址, 对外提供网络服务; 这些网卡之间可以实现负载均衡或高可用技术;

    通过bonding, 虚拟一个网卡对提供服务及网络连接, 所有的物理网卡都被修改为相同的MAC地址;

Bonding的工作模式:

    Mode  0--负载均衡解决方案, 其负载均衡的算法为balance-rr(round robin, 轮询); 轮询策略意味着: 从头到尾顺序的在每个slave接口上面发送数据包, 该模式可以提供负载均衡以及容错的能力;

    Mode 1--主备解决方案, (active-backup, master-backup), 在此模式中, 只有一个slave被激活,用于正常数据传输; 而其他的接口都贱死此接口的工作状态, 当且仅当活动的slave接口失败的时候, 才会从其他备份的接口中选择一个用于激活; 该模式只能实现容错, 无法进行负载均衡;

    Mode 3--全广播解决方案, 在所有的slave接口上传输全部报文;

    miimon用来进行链路检测, 如果miimon=100, 则系统每100ms检测一次链路连接的状态; 如果某个网络接口在miimon监测的结果为不连通, 则进行故障倒换;

使用Bonding的时候, 我们需要配置:

    1.创建虚拟接口,

    2.选择miimon的检测时间及Boding的工作模式

    3.选择用于此次Bonding的物理接口