Linux进阶篇–网络管理

12.1 CentOS 6网络管理

基本网络配置

  • 将Linux主机接入到网络,需要配置网络相关设置。

  • 一般包括如下内容:
      主机名
      IP/netmask
      路由:默认网关
      DNS服务器
        主DNS服务器
        次DNS服务器
        第三DNS服务器

  • 主机名 hostname
    注:linux主机名不具备网络功能,windows主机名具备网络功能
    /etc/hosts 主机名存放位置
    /etc/sysconfig/network centos6系统中主机名配置文件

  • centos6系统配置主机名:
    1、临时更改内存中主机名
    hostname “主机名”

[root@centos6 ~]#hostname centos7.magedu.com
[root@centos6 ~]#hostname
centos7.magedu.com

2、永久保存主机名:
方法1:编辑/etc/sysconfig/network

[root@centos6 ~]#vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=centos6.magedu.com

更改后需要重启才能生效
方法2:如果不重启想要生效
(1)hostname 主机名 更改内存中主机名
虽然该命令临时生效重启系统会失效,但是已经把配置文件做过更改,因此重启依然有效
(2)提示符中的主机名仍然没有变动,注销或使用命令exec bash即可更改
(3)注意:一定要更改/etc/hosts文件中的主机名,把新的主机名加入首行尾部即可

[root@centos6 ~]#cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4   localhost4.localdomain4 centos6.magedu.com
::1         localhost localhost.localdomain localhost6   localhost6.localdomain6

centos7系统更改主机名
/etc/hostname 该文件是centos7系统主机名配置文件,对应centos6中的/etc/sysconfig/network文件
(1)hostnamectl set-hostname 新主机名
(2)提示符中主机名没有更改,此时需要注销重登或使用exec bash
(3)更改/etc/hosts文件中的主机名

知识扩展:
/etc/hosts文件具有域名解析效果
把域名与ip地址的对应关系写入/etc/hosts文件即可,而且一个ip可以对应多个域名

[root@centos6 ~]#vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 centos6.magedu.com
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.32.128  www.icbc.com.cn  www.ccb.com[root@centos6 ~]#ping www.icbc.com.cn
PING www.icbc.com.cn (192.168.32.128) 56(84) bytes of data.
64 bytes from www.icbc.com.cn (192.168.32.128): icmp_seq=1 ttl=64 time=0.273 ms
64 bytes from www.icbc.com.cn (192.168.32.128): icmp_seq=2 ttl=64 time=0.062 ms

windows系统/etc/hosts文件路径c:\Windows\System32\drivers

CentOS 6网卡名称

  • 接口命名方式:CentOS 6
      以太网:eth[0,1,2,…]
      ppp:ppp[0,1,2,…]
  • 网络接口识别并命名相关的udev配置文件:
      /etc/udev/rules.d/70-persistent-net.rules
  • 查看网卡:
      dmesg |grep –i eth
      ethtool -i eth0
  • 卸载网卡驱动:
      modprobe -r e1000
      rmmod e1000
  • 装载网卡驱动:
      modprobe e1000

注意:更改网卡名称场景:
(1)当服务器设备网卡位置发生变化时,网卡名称会发生变化,网卡名称不是从0开始,此时如果要把网卡名称更改回来,根据以上步骤操作即可更改回来。
(2)虚拟机克隆后,mac地址虽然被vmware虚拟机更改为新的mac地址,但网卡名不是从0开始,而且原始虚拟机的mac地址依然存在于配置文件中,此时需要把配置文件中老mac地址删除,然后把网卡名更改即可。
错误信息如下所示:

[root@centos7 ~]#ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope host valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000link/ether 00:0c:29:6a:30:8b brd ff:ff:ff:ff:ff:ff
6: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000link/ether 00:0c:29:6a:30:95 brd ff:ff:ff:ff:ff:ff

在更改网卡配置文件/etc/udv/rules.d/70-persistent-net.rules时,要注意mac地址与网卡名称NAME的对应关系。该文件中ATTR{address}=="00:0c:29:6a:30:8b"即为mac地址,NAME=eth0即为网卡名称。

[root@centos6 ~]#cat /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x8086:0x100f (e1000) (custom name provided by external tool)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:6a:30:8b", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"# PCI device 0x8086:0x100f (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:6a:30:95", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

网络配置方式

  • 静态指定:
      ifconfig, route, netstat
      ip: object {link, addr, route}, ss, tc
      system-config-network-tui,setup
      配置文件
  • 动态分配:
      DHCP: Dynamic Host Configuration Protocol

配置网络接口

  • ifconfig命令
    注:IFACE是指网卡
      ifconfig [interface] 查看启用的网卡信息
        ifconfig -a 查看所有网卡信息(包括禁用的网卡)
        ifconfig IFACE [up|down] 启用|禁用网卡
      ifconfig interface [aftype] options | address … 临时给网卡配置ip地址
        ifconfig IFACE IP/netmask [up]
        ifconfig IFACE IP netmask NETMASK
[root@centos6 ~]#ifconfig eth1 192.168.32.100/24
[root@centos6 ~]#ifconfig eth1 192.168.32.100 netmask 255.255.255.0

    注意:立即生效
    启用混杂模式:[-]promisc

route命令

  • 路由管理命令

  • 以数字方式查看路由:route -n

  • 添加路由:route add
    语法:route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
    -net:是指网络路由,匹配某个网段
    -host:是指主机路由,精确匹配某个ip地址
    target:目标地址或网段
    gw:gateway,网关
    示例:
    目标: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

知识扩展:
使用linux系统模拟路由器需要开启路由功能:
原因:由于pc网卡只接受属于自己的数据包,不属于自己的数据包会被丢弃掉,因此要开启路由功能,才会把不属于自己的数据包转发出去
暂时开启路由功能(系统重启后值会变回0)
把/proc/sys/net/ipv4/ip_forward文件的值改为1

[root@centos6 ~]#cat /proc/sys/net/ipv4/ip_forward
0
[root@centos6 ~]#echo 1 > /proc/sys/net/ipv4/ip_forward
[root@centos6 ~]#cat /proc/sys/net/ipv4/ip_forward
1

永久启用路由功能
centos6系统
/etc/sysctl.conf文件中把net.ipv4.ip_forward=1

[root@centos6 ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

centos7系统
在/usr/lib/sysctl.conf文件中手动添加net.ipv4.ip_forward=1即可

配置动态路由

  • 通过守护进程获取动态路由
      安装quagga包
      支持多种路由协议:RIP、OSPF和BGP
      命令vtysh配置

使用linux系统模拟路由器:
(1)使用yum安装quagga软件包
(2)cd /etc/quagga 进入quagga文件夹
(3)cp ospfd.conf.sample ospfd.sapmle 根据模板复制配置文件
(4)service ospfd start 开启路由协议
(5)vtysh 开启命令行模式
然后即可模拟路由器(思科)进行配置

netstat命令

  • 显示网络连接:
  • 语法: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 -s eth0 显示指定的网卡信息

知识扩展:
watch 扫描程序执行结果
watch -n0.5 ‘netstat -i eth0’ 监控网卡流量状态(每隔0.5s扫描一次该程序)
watch -n0.5 ‘netstat -I=eth0’ 监控指定网卡流量信息(每隔0.5s扫描一次该程序)

ip命令

  • 配置Linux网络属性:ip命令
    centos7系统中可以使用tab键显示子命令,而centos6系统没有此功能。
    如果想要增加该功能,需要安装bash-completion软件包,此软件包在epel yum源中。
    安装步骤:
    (1)创建epel yum仓库(需要连接互联网)
    (2)安装bash-completion软件包
    (3)注销当前用户并重新登录即可
  • ip - show / manipulate routing, devices, policy routing and tunnels
      ip [ OPTIONS ] OBJECT { COMMAND | help }
      OBJECT := { link | addr | route }
       link:只显示数据链路层地址,即mac地址
       addr:对ip地址进行增删改
       route:对路由进行更改
        set dev IFACE
          可设置属性:
          up and down:激活或禁用指定接口
            ifup/ifdown
        show [dev IFACE]:指定接口
          [up]:仅显示处于激活状态的接口
[root@centos6 ~]#ip link set dev eth1 down
[root@centos6 ~]#ip link show dev eth1      显示eth1链接状态
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000link/ether 00:0c:29:6a:30:95 brd ff:ff:ff:ff:ff:ff
[root@centos6 ~]#ip link show up         只显示处于up状态的网卡
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:6a:30:8b brd ff:ff:ff:ff:ff:ff

注意:ifup/ifdown命令依赖于网卡配置文件,linux系统中新增的网卡没有网卡配置文件,因此使用该命令,需要添加网卡的配置文件

  • ip addr { add | del } IFADDR dev STRING
      [label LABEL]:添加地址时指明网卡别名
      [scope {global|link|host}]:指明作用域
        global: 全局可用
        link: 仅链接可用
        host: 本机可用
      [broadcast ADDRESS]:指明广播地址

  • global,link,host三种模式含义:
      global:假如一个主机的两块网卡配置两个ip地址分别是:1.1.1.1和2.2.2.2,当其他主机ping该网卡其中某一个地址2.2.2.2时,不论连接的是哪一块网卡,那么都会ping通该主机
      link:假如一个主机的两块网卡配置两ip地址分别是:1.1.1.1和2.2.2.2,当其他主机ping该网卡其中某一个地址2.2.2.2时,如果该主机连接的是1.1.1.1,那么将不会ping同该主机,只有与配置2.2.2.2地址的网卡相连时才能ping通
      host:本机ping1.1.1.1和2.2.2.2,可以ping通,其他主机则无法ping通
      网卡默认为global模式
      global模式,网卡配置的ip地址都存放在内核中,无论与访问哪个网卡,只要到达网卡,网卡都能做出回应
      link模式,与其中一个网卡相连,只能访问相连的网卡,不能访问其他网卡
      host模式,仅本机有效,只能在本机内ping该模式的地址,其他主机则无法ping通此网卡

  • ip address show:查看ip地址信息
      [dev DEVICE]
      [label PATTERN] 网卡别名
      [primary and secondary] 网卡主ip和次ip

  • ip address flush:删除全部网卡别名地址,使用格式同show

ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0
  • ip route:路由管理
      添加路由:ip route add
      ip route add TARGET via GW dev IFACE src SOURCE_IP
       TARGET:目标地址
        TARGET:
          主机路由:IP(目标ip地址)
          网络路由:NETWORK/MASK (目标网段)
ip route add 192.168.0.0/24 via 172.16.0.1    添加网络路由
ip route add 192.168.1.13 via 172.16.0.1      添加主机路由

    添加网关:ip route add default via GW dev IFACE
ip route add default via 172.16.0.1
  删除路由:ip route delete
  ip route del TARGET
ip route del 192.168.0.0/24
  显示路由:ip route show|list

[root@centos6 ~]#ip route show
192.168.32.0/24 dev eth0  proto kernel  scope link  src 192.168.32.128
169.254.0.0/16 dev eth0  scope link  metric 1002

  清空路由表:ip route flush [dev IFACE] [via PREFIX]
ip route flush dev eth0

ss命令

  • 语法:ss [OPTION]… [FILTER]
  • netstat通过遍历proc来获取socket信息,ss使用netlink与内核tcp_diag模块通信获取socket信息。
      套接字socket文件:同一个主机两个应用程序发送数据,以套接字文件作为中转站,交换数据
  • 选项[OPTION]:
      -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 )’
[root@centos6 ~]#ss '( dport = :ssh or sport = :ssh )'
State       Recv-Q Send-Q          Local Address:Port              Peer Address:Port
ESTAB       0      0              192.168.32.128:ssh               192.168.32.1:60808
  • 常用组合:
      -tan, -tanl, -tanlp, -uan

常见用法

  • ss -l 显示本地打开的所有端口
  • ss -pl 显示每个进程具体打开的socket
  • ss -t -a 显示所有tcp socket
  • ss -u -a 显示所有的UDP Socekt
    *ss -o state established ‘( dport = :ssh or sport = :ssh )’ 显示所有已建立的ssh连接
  • ss -o state established ‘( dport = :http or sport = :http )’ 显示所有已建立的HTTP连接
  • ss -s 列出当前socket详细信息

网络配置文件

  • IP、MASK、GW、DNS相关配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE
  • 路由相关的配置文件:
  • /etc/sysconfig/network-scripts/route-IFACE
    路由配置信息想要永久保存,需要写入route-ethN文件进行保存,该文件需要手动创建
     注意:需service network restart生效
     两种风格:
      (1) TARGET via GW
      如:10.0.0.0/8 via 172.16.0.1
      (2) 每三行定义一条路由
      ADDRESS#=TARGET
      NETMASK#=mask
      GATEWAY#=GW
    示例:
ADDRESS1=10.0.0.0/8
NETMASK1=255.0.0.0
GATWAY1=172.16.0.1
  • /etc/sysconfig/network-scripts/ifcfg-IFACE:
    要想永久保存新增网卡添加的ip地址,需要写入该配置文件
    说明参考/usr/share/doc/initscripts-9.49.30/sysconfig.txt
      DEVICE:此配置文件应用到的设备
      HWADDR:对应的设备的真实MAC地址
      BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
      NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no”
  • ONBOOT:在系统引导时是否激活此设备,系统默认为ONBOOT=yes
  • TYPE:接口类型;常见有的Ethernet, Bridge
  • UUID:设备的惟一标识
  • IPADDR:指明IP地址
  • NETMASK:子网掩码
  • GATEWAY: 默认网关
  • DNS1:第一个DNS服务器指向
  • DNS2:第二个DNS服务器指向
  • USERCTL:普通用户是否可控制此设备
  • PEERDNS:如果BOOTPROTO的值为“dhcp”,是否允许dhcp server分配的dns服务器指向信息直接覆盖至/etc/resolv.conf文件中
PEERDNS详解:
当PEERDNS=yes,且BOOTPROTO=dhcp,从dhcp服务器获取一个dns地址,直接覆盖/etc/resolv.conf文件
当PEERDNS=no,且BOOTPROTO=dhcp,从dhcp获取的dns地址,不覆盖/etc/resolv.conf文件,而是由人工指定和维护  相当于windows系统中网卡设置为自动获取,但是dns可以设置为自动获取和手工指定
当dns设置为自动获取即为PEERDNS=yes;当dns设置为手工指定即为PEERDNS=no.
  • 设备配置被保存在文本文件中
      /etc/sysconfig/network-scripts/ifcfg-
      帮助文档列出完整选项列表:/usr/share/doc/initcripts-*/sysconfig.txt
动态配置 静态配置
DEVICE=exthX DEVICE=ethX
HWADDR=0:02:8A:A6:30:45 HWADDR=0:02:8A:A6:30:45
BOOTPROTO=dhcp IPADDR=192.168.0.123
ONBOOT=yes NETMASK=255.255.255.0
Type=Ethernet GATEWAY=192.168.0.254
ONBOOT=yes
Type=Ethernet

知识扩展:
更改主机mac地址(逻辑上更改,并非更改真实mac地址)
使用场景:绑定mac地址使不能上网,可以通过更改mac地址上网
在网络配置文件ifcfg-ethN中添加MACADDR=xx.xx.xx.xx.xx(自定义mac地址),然后重启网络服务

[root@centos7 network-scripts]#ip addr show dev  eth0       更改前eth0网卡信息,mac地址为00:0c:29:6a:30:8b
7: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:6a:30:8b brd ff:ff:ff:ff:ff:ffinet 192.168.32.128/24 brd 192.168.32.255 scope global eth0inet6 fe80::20c:29ff:fe6a:308b/64 scope link valid_lft forever preferred_lft forever
[root@centos7 network-scripts]#cat ifcfg-eth0              在配置文件中设置mac地址:MACADDR=00:0c:29:6a:30:88
DEVICE=eth0
IPADDR=192.168.32.128
PREFIX=24
MACADDR=00:0c:29:6a:30:88
[root@centos7 network-scripts]#ip addr show dev  eth0     更改后eth0网卡信息,mac地址为00:0c:29:6a:30:88
7: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:6a:30:88 brd ff:ff:ff:ff:ff:ffinet 192.168.32.128/24 brd 192.168.32.255 scope global eth0inet6 fe80::20c:29ff:fe6a:3088/64 scope link valid_lft forever preferred_lft forever

主机名和本地解析器

  • 配置当前主机的主机名:
      hostname [HOSTNAME]
      /etc/sysconfig/network
        HOSTNAME=
  • 解析器执行正向和逆向查询
  • /etc/hosts
      本地主机名数据库和IP地址的映像
      对小型独立网络有用
      通常,在使用DNS前检查
      getent hosts 查看/etc/hosts 内容

dns域名解析

  • /etc/resolv.conf
      nameserver DNS_SERVER_IP1
      nameserver DNS_SERVER_IP2
      nameserver DNS_SERVER_IP3
      search magedu.com
  • /etc/nsswitch.conf
    与/etc/hosts相比优先于DNS
  • 正向解析:FQDN–>IP
      dig -t A FQDN
      host -t A FQDN
  • 反向解析:IP–>FQDN
      dig -x IP
      host -t PTR IP
    注:dns域名解析的正向和反向解析会在后续dns服务中有详细的讲解,这里不多做叙述。

知识扩展:
dns和/etc/hosts都具有域名解析功能,二者的优先级为:
hosts文件优先级高于dns文件
/etc/nsswitch.conf 更改二者的优先级

[root@centos6 ~]#vim /etc/nsswitch.conf
#hosts:     db files nisplus nis dns
hosts:      files dns

找到hosts行,该行中file即为/etc/hosts文件
可以通过更改files和dns的先后顺序更改二者的优先级

常用DNS服务器:
联通:114.114.114.114
谷歌:8.8.8.8

网卡别名

  • 对虚拟主机有用
  • 将多个IP地址绑定到一个NIC上
      eth0:1 、eth0:2、eth0:3
  • ifconfig命令:
ifconfig eth0:0 192.168.1.100/24 up   启用网卡别名eth0:0
ifconfig eth0:0 down                  禁用网卡别名
  • ip命令:
ip addr add 172.16.1.2/16 dev eth0    为网卡eth0配置ip地址
ip addr add 172.16.1.1/16 dev eth0 label eth0:0   给网卡eth0设置别名eth0:0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0   给网卡别名配置第二个ip地址
ip addr del 172.16.1.1/16 dev eth0 label eth0:0   删除网卡别名的ip地址
ip addr flush dev eth0 label eth0:0     删除网卡eth0的全部别名

设备别名

  • 为每个设备别名生成独立的接口配置文件
      关闭NetworkManager服务
      ifcfg-ethX:xxx
      必须使用静态联网
        DEVICE=eth0:0
        IPADDR=10.10.10.10
        NETMASK=255.0.0.0
        ONPARENT=yes
  • 注意:service network restart 生效
  • 参考:/usr/share/doc/initscripts-*/sysconfig.txt

注意:网卡别名配置文件ifcfg-ethX:xxx必须使用静态地址,而网卡主配置文件ifcfg-ethX既能使用自动获取的ip地址,又能使用静态地址,但如果该网卡存在别名,则必须使用自动获取的ip地址

网络接口配置-bonding

  • Bonding
      将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

Bonding工作模式

  • Mode 0 (balance-rr)
    轮询(Round-robin)策略:两个网卡同时工作,两个网卡交替传输数据。本模式提供负载均衡和容错的能力
  • Mode 1 (active-backup)
    活动-备份(主备)策略:只有一个网卡被激活,当活动的网卡失败时才会激活其他网卡。为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
  • Mode 3 (broadcast)
    广播策略:在所有的网卡上同一时间传送同样的数据,提供容错能力
  • active-backup、balance-tlb 和 balance-alb模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要LACP和 EtherChannel

Bonding配置

  • 创建bonding设备的配置文件
    /etc/sysconfig/network-scripts/ifcfg-bond0
    DEVICE=bond0
    IPADDR=X.X.X.X
    PREFIX=XX
    BOOTPROTO=none
    BONDING_OPTS= “miimon=100 mode=0”
  • 创建被绑定的网卡设备的配置文件
    /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    /etc/sysconfig/network-scripts/ifcfg-eth1
    DEVICE=eth1
    BOOTPROTO=none
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    注意:配置文件创建完成后,需要重启网络服务才能生效
  • 查看bond0状态:/proc/net/bonding/bond0
  • miimon 是用来进行链路监测的。如果miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路
  • 删除bond0
      ifconfig bond0 down 禁用bond0网卡
      rmmod bonding 卸载绑定网卡的驱动程序
      rm -rf ifconfig-bond0 删除bond0网络配置文件
  • 详细帮助:
      /usr/share/doc/kernel-doc-version/Documentation/networking/bonding.txt
      https://www.kernel.org/doc/Documentation/networking/bonding.txt

12.2 CentOS 7网络管理

CentOS 7网络属性配置

  • CentOS 6之前,网络接口使用连续号码命名:eth0、eth1等,当增加或删除网卡时,名称可能会发生变化
  • CentOS 7使用基于硬件,设备拓扑和设置类型命名:
  • 网卡命名机制
      systemd对网络设备的命名方式
      (a) 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,例如eno1
      (b) 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,例如ens1
      © 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如enp2s0
      (d) 如果用户显式启动,也可根据MAC地址进行命名,enx2387a1dc56
      (e) 上述均不可用时,则使用传统命名机制

网卡名称

  • 基于BIOS支持启用biosdevname软件
    内置网卡:em1,em2
    pci卡:pYpX   Y:slot(插槽) ,X:port(接口)
  • 名称组成格式
      en: Ethernet 有线局域网
      wl: wlan 无线局域网
      ww: wwan无线广域网
    名称类型:
      o: 集成设备的设备索引号
      s: 扩展槽的索引号
      x: 基于MAC地址的命名
      p<总线bus>s<插槽slot>: enp2s1

采用传统命名方式

  • 使用传统命名方式:
    原因:在自动化运维过程中,由于centos6和centos7网卡的命名规则不一致,这势必会增加自动化运维的难度,因此可将网卡命名标准化,均采用传统命名方式以降低运维难度。步骤如下:
    (1) 编辑/etc/default/grub配置文件
      GRUB_CMDLINE_LINUX=“rhgb quiet net.ifnames=0”(推荐此方法进行修改)
      或:修改/boot/grub2/grub.cfg
    (2) 为grub2生成其配置文件
      grub2-mkconfig -o /etc/grub2.cfg
      该命令参考/etc/default/grub文件,生成/boot/grub2/grub.conf文件
    (3) 重启系统

  • 取消传统命名方式
    (1)修改/boot/grub2/grub.cfg文件,在第一个linux16行的行尾去掉net.ifnames=0
    (2)重启设备即可

CentOS 7网络配置工具

  • CentOS 7主机名
      centost7主机名配置文件:/etc/hostname,默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain;该文件相当于centos6系统中/etc/sysconfig/network文件
      显示主机名信息
        hostname
        hostnamectl status
[root@centos7-1 ~]#hostname
centos7-1.magedu.com
[root@centos7-1 ~]#hostnamectl statusStatic hostname: centos7-1.magedu.com
Transient hostname: statusIcon name: computer-vmChassis: vmMachine ID: 7eab25876df747da952cee5f5a6dbc5fBoot ID: fb89dce732ee45ab9443921157f6ed7aVirtualization: vmwareOperating System: CentOS Linux 7 (Core)CPE OS Name: cpe:/o:centos:centos:7Kernel: Linux 3.10.0-862.el7.x86_64Architecture: x86-64

  设置主机名
    hostnamectl set-hostname centos7.magedu.com
  删除文件/etc/hostname,恢复主机名localhost.localdomain

  • CentOS 7网络配置工具
      图形工具:nm-connection-editor
      字符配置tui工具:nmtui 相当于centos6系统中的setup工具
      命令行工具:nmcli

nmcli命令

  • 地址配置工具:nmcli
  • nmcli [ OPTIONS ] OBJECT { COMMAND | help }
      device:显示和管理网络设备
      nmcli device help
      connection - start, stop, and manage network connections
      nmcli connection help
  • 为物理网卡配置多个配置文件,可以在不同场景使用不同的配置文件
[root@centos7-1 ~]#nmcli  connection add con-name eth0-home ifname eth0 type ethernet  ipv4.address 192.168.32.100/24   增加eth0-home配置文件
[root@centos7-1 ~]#nmcli connection
NAME                UUID                                  TYPE      DEVICE
System eth0         5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  eth0
eth0-home           d180f0ba-352d-415a-a790-9c5dac21fecb  ethernet  --
[root@centos7-1 ~]#nmcli connection up eth0-home   启用eth0-home配置文件
[root@centos7-1 ~]#nmcli connection
NAME                UUID                                  TYPE      DEVICE
eth0-home           d180f0ba-352d-415a-a790-9c5dac21fecb  ethernet  eth0
System eth0         5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03  ethernet  --
  • 修改IP地址等属性:
      nmcli connection modify IFACE [+|-]setting.property value
        setting.property:
        ipv4.addresses ipv4.gateway
        ipv4.dns1 ipv4.method manual | auto
[root@centos7-1 ~]#nmcli connection modify eth0-home +ipv4.addresses 1.1.1.1/24  给eth0-home网卡添加ip地址
[root@centos7-1 ~]#nmcli connection modify eth0-home +ipv4.addresses 2.2.2.2/24
[root@centos7-1 ~]#nmcli connection show eth0-home
ipv4.addresses:                         192.168.32.100/32, 1.1.1.1/24, 2.2.2.2/24
[root@centos7-1 ~]#nmcli connection modify eth0-home -ipv4.addresses 2.2.2.2/24  给eth0-home网卡删除ip地址
[root@centos7-1 ~]#nmcli connection show eth0-home
ipv4.addresses:                         192.168.32.100/32, 1.1.1.1/24
  • 修改配置文件执行生效:
        service restart network
        nmcli con reload
  • nmcli命令生效: nmcli con down eth0 ;nmcli con up eth0

使用nmcli配置网络

  • NeworkManager是管理和监控网络设置的守护进程
  • 设备即网络接口,连接是对网络接口的配置。一个网络接口可有多个连接配置,但同时只有一个连接配置生效
  • 显示所有包括不活动连接
      nmcli con show
  • 显示所有活动连接
      nmcli con show --active
  • 显示网络连接配置
      nmcli con show "System eth0“
  • 显示设备状态
      nmcli dev status
  • 显示网络接口属性
      nmcli dev show eth0
  • 创建新连接default,IP自动通过dhcp获取
      nmcli con add con-name default type Ethernet ifname eth0
  • 删除连接
      nmcli con del default
  • 创建新连接static ,指定静态IP,不自动连接
      nmcli con add con-name static ifname eth0 autoconnect no type Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254
  • 启用static连接配置
      nmcli con up static
  • 启用default连接配置
      nmcli con up default
  • 查看帮助
      nmcli con add help
    *修改连接设置
    nmcli con mod “static” connection.autoconnect no
    nmcli con mod “static” ipv4.dns 172.25.X.254
    nmcli con mod “static” +ipv4.dns 8.8.8.8
    nmcli con mod “static” -ipv4.dns 8.8.8.8
    nmcli con mod “static” ipv4.addresses “172.25.X.10/24 172.25.X.254”
    nmcli con mod “static” +ipv4.addresses 10.10.10.10/16
  • DNS设置,存放在/etc/resolv.conf文件中
    PEERDNS=no 表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取。等价于下面命令:
    nmcli con mod “system eth0” ipv4.ignore-auto-dns yes

nmcli命令

命令Command 用法Use
nmcli dev status 列出所有设备
nmcli con show 列出所有连接
nmcli con up “ethN” 启用网卡
nmcli con down “ethN” 临时禁用网卡;如果ONBOOT=yes,系统重启会重新开启
nmcli con off 禁用所有网卡
nmcli con add… 增加新的网卡
nmcli con mod “ethN” 修改网卡的配置信息
nmcli con del “ethN” 删除网卡
  • nmcli con mod命令与ifcfg-*文件对应关系
nmcli con mod ifcfg-*文件
ipv4.method manual BOOTPROTO=none
ipv4.method auto BOOTPROTO=dhcp
ipv4.addresses “192.0.2.1/24 192.0.2.254” IPADDR0=192.0.2.1
PREFIX0=24
GATEWAY0=192.0.2.254
ipv4.dns 8.8.8.8 DNS0=8.8.8.8
ipv4.dns-search example.com DOMAIN=example.com
ipv4.ignore-auto-dns true PEERDNS=no
connection.autoconnect yes ONBOOT=yes
connection.id eth0 NAME=eth0
connection.interface-name eth0 DEVICE=eth0
802-3-ethernet.mac-address… HWADDR…
  • 修改连接配置后,需要重新加载配置
    nmcli con reload
    nmcli con down “system eth0” 可被自动激活
    nmcli con up “system eth0”
    nmcli dev dis eth0 禁用网卡,访止被自动激活
  • 图形工具
    nm-connection-editor
  • 字符工具
    nmtui
    nmtui-connect
    nmtui-edit
    nmtui-hostname

nmcli实现bonding

  • 添加bonding接口
    nmcli con add type bond con-name mybond0 ifname mybond0 mode active-backup
  • 添加从属接口
    nmcli con add type bond-slave ifname ens37 master mybond0
    nmcli con add type bond-slave ifname ens33 master mybond0
    注:如无为从属接口提供连接名,则该名称是接口名称加类型构成
  • 要启动绑定,则必须首先启动从属接口
    nmcli con up bond-slave-eth0
    nmcli con up bond-slave-eth1
  • 启动绑定
    nmcli con up mybond0

网络组Network Teaming

  • 网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
  • 网络组不同于旧版中bonding技术,提供更好的性能和扩展性
  • 网络组由内核驱动和teamd守护进程实现.
  • 多种方式runner
    broadcast 广播模式
    roundrobin 轮询模式
    activebackup 主备模式
    loadbalance 负载均衡模式
    lacp (implements the 802.3ad Link Aggregation Control Protocol)

网络组规则

  • 启动网络组接口不会自动启动网络组中的port接口
  • 启动网络组接口中的port接口总会自动启动网络组接口
  • 禁用网络组接口会自动禁用网络组中的port接口
  • 没有port接口的网络组接口可以启动静态IP连接
  • 启用DHCP连接时,没有port接口的网络组会等待port接口的加入

创建网络接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]
  CNAME 连接名,INAME 接口名
  JSON 指定runner方式
  格式:’{“runner”: {“name”: “METHOD”}}’
  METHOD 可以是broadcast, roundrobin,
    activebackup, loadbalance, lacp

创建port接口

  • nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
    CNAME 连接名
    INAME 网络接口名
    TEAM 网络组接口名
    连接名若不指定,默认为team-slave-IFACE
  • nmcli dev dis INAME
  • nmcli con up CNAME
    INAME 设备名 CNAME 网络组接口名或port接口
    示例:
nmcli con add type team con-name team0 ifname team0 config ‘{"runner": {"name": "loadbalance"}}'  创建网络组team0为负载均衡模式
nmcli con mod team0 ipv4.addresses 192.168.1.100/24            为网络组接口配置地址
nmcli con mod team0 ipv4.method manual                         设置为静态地址
nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0    创建网络组port接口
nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
nmcli con up team0                     启用网络组接口team0
nmcli con up team0-eth1                启用网络组port接口
nmcli con up team0-eth2
teamdctl team0 state; nmcli dev dis eth1    查看网络组team0状态

管理网络组配置文件

  • 网络组team0配置文件
[root@centos7-1 network-scripts]#cat ifcfg-team0
/etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{"runner": {"name": "broadcast"}}"
BOOTPROTO=none
IPADDR0=172.25.5.100
PREFIX0=24
NAME=team0
ONBOOT=yes
  • 网络组port接口team0-eth1配置文件
[root@centos7-1 network-scripts]#cat ifcfg-team0-eth1
/etc/sysconfig/network-scripts/ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes

删除网络组
(1)禁用网络组team0
nmcli connection down team0
(2)查看网络组team0状态
teamdctl team0 state
nmcli connection show
(3)删除网络组port接口team0-port0,team0-port1
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
(4)查看网络状态
nmcli connection show

测试网络工具

  • 在命令行下测试网络的连通性
      显示主机名
        hostname
      测试网络连通性
        ping
        mtr
      显示正确的路由表
        ip route
  • 确定名称服务器使用:
      nslookup
      host
      dig
  • 跟踪路由
      traceroute
      tracepath

网络客户端工具

  • ftp,lftp:子命令:get、mget、ls、help
    lftp [-p port] [-u user[,password]] SERVER
    ftp命令:
[root@centos7-1 ~]#ftp 172.20.0.1
Connected to 172.20.0.1 (172.20.0.1).
220 (vsFTPd 2.2.2)
Name (172.20.0.1:root): ftp     提示输入用户名,该用户名为匿名用户,为ftp或anonymous
331 Please specify the password.
Password:           提示输入密码,密码输入任意字符或者不输入都可以
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ?                 查看命令帮助
ftp> cd pub            切换目录
ftp> ls                查看ftp服务器文件内容
ftp> get getty         从ftp服务器下载文件
local: getty remote: getty
227 Entering Passive Mode (172,20,0,1,128,162).
150 Opening BINARY mode data connection for getty (338796 bytes).
226 Transfer complete.
338796 bytes received in 0.0273 secs (12423.31 Kbytes/sec)
ftp> lcd                 查看本机所在当前目录
Local directory now /root
ftp> !ls                 查看本机所在目录中的文件列表
anaconda-ks.cfg  Desktop    Downloads  initial-setup-ks.cfg  Music     Public     Videos
bin      Documents  getty      motd          Pictures  Templates
ftp> mget  file1  file2     从ftp服务器下载多个文件
ftp> exit               退出ftp服务器
421 Timeout.
[root@centos7-1 ~]#

ftp登录ftp服务器缺点:不支持tab键补全文件名,而且文件没有颜色区分,不方便使用

lftp命令:

[root@centos7-1 ~]#lftp 172.20.0.1       不需要输入用户名和密码
lftp 172.20.0.1:~> ls
drwxr-xr-x   21 0        0            4096 Apr 09 10:44 pub
lftp 172.20.0.1:/>

lftp命令登录ftp服务器支持tab键补全文件名,文件有颜色区分
其他子命令用法类似于ftp命令用法

  • lftpget URL
    lftp为非交互式命令,编写脚本可使用该命令
    lftpget后跟文件完整路径,如:ftp://172.20.0.1/pub/file1
[root@centos7-1 ~]#lftpget ftp://172.20.0.1/pub/getty
[root@centos7-1 ~]#ls getty
getty
  • wget [option]… [URL]…
    可用于下载网络服务器上的文件,支持http,ftp协议,后跟文件完整路径,如:wget http://172.20.0.1/pub/file1
      -q: 静默模式
      -c: 断点续传
      -P:保存在指定目录
      -O: 保存为指定的文件名
      --limit-rate=: 指定传输速率,单位K,M等
  • links URL 字符界面浏览器
      --dump 只显示浏览器文字内容
      --source 查看网页源代码

Linux进阶篇--网络管理相关推荐

  1. Linux进阶篇--磁盘分区管理

    Linux进阶篇–磁盘分区管理 11.1 磁盘基础介绍 设备文件 * I/O Ports:I/O设备地址 * 设备类型:   块设备:block,存取单位"块",来自于磁盘   字 ...

  2. Linux进阶篇--磁盘阵列(RAID)和逻辑卷管理

    磁盘阵列RAID RAID:RedundantArrays of Inexpensive(Independent)Disks 早期被称为RedundantArrays of Inexpensive D ...

  3. Linux使用详解(进阶篇)

    文章目录 Linux使用详解(进阶篇) 1.Linux目录说明 2.操作防火墙 3.ulimit命令和history命令 4.RPM和Yum的使用 5.设置系统字符集 6.vi & vim编辑 ...

  4. 身家过亿的帝都王子来到1024盛宴-小码农献上linux进阶知识点一篇

    文章目录 身家过亿的帝都王子来到1024盛宴-小码农献上linux进阶知识点一篇 联动文章 [身家过亿的帝都公主来到1024盛宴-小码农弟弟献上linux基础知识点一篇](https://blog.c ...

  5. Linux 进阶命令 - 集大成篇

    目录 1.  grep  命令 2.  wc  命令 3.  echo  命令 4.  tail  命令 5.  su  命令 6.  sudo  命令 7.  chomd  命令 8.  chown ...

  6. APC控制Linux关机,NAS进阶 篇四:利用APCPowerchuteNetworkShutdown实现断电自动关闭虚拟机...

    NAS进阶 篇四:利用APCPowerchuteNetworkShutdown实现断电自动关闭虚拟机 2020-02-05 21:50:25 20点赞 118收藏 16评论 在2018年写<NA ...

  7. Linux 进阶笔记(一)

    这几篇博文主要记录博主的Linux 学习之路,用作以后回顾和参考.大家可以选择略过也可以作参考. (一)Linux 初步笔记 (二)Linux 进阶笔记(一) (三)Linux 进阶笔记(二) (四) ...

  8. Kafka核心设计与实践原理总结:进阶篇

    作者:未完成交响曲,资深Java工程师!目前在某一线互联网公司任职,架构师社区合伙人! kafka作为当前热门的分布式消息队列,具有高性能.持久化.多副本备份.横向扩展能力.我学习了<深入理解K ...

  9. 计算机编程书籍-笨办法学Python 3:基础篇+进阶篇

    编辑推荐: 适读人群 :本书适合所有已经开始使用Python的技术人员,包括初级开发人员和已经升级到Python 3.6版本以上的经验丰富的Python程序员. "笨办法学"系列, ...

最新文章

  1. HDU 4652 Dice:期望dp(成环)【错位相减】
  2. Sublime Text 3 Key
  3. 7.程序员的自我修养---动态链接
  4. I.MX6 busybox set hosname and login with root
  5. 2020字节跳动数据库面试题及答案
  6. Git下载与安装 Windows
  7. 智慧城市大数据应用案例
  8. d3d示例程序_3D打印改变我们现实的10个示例
  9. python识别颜色验证码_用Python识别验证码
  10. 基于深度学习的多目标跟踪(MOT)技术一览
  11. Esp8266(WIFI模块)刷阿里云固件
  12. vue单页面背景颜色修改
  13. Centos 7 下joomla简体中文版安装
  14. Flinksql insert overwrite 报错 requires that the underlying DynamicTableSink of table
  15. c语言——PTA——计算存款利息
  16. 微信扫码登录(new WxLogin)-二维码样式修改
  17. 夜幕神话TelesLi
  18. FAT16和FAT32文件定位
  19. loadrunner添加请求头
  20. 手把手教你3步轻松制作报表

热门文章

  1. 软考-数据库系统工程师-SQL章节
  2. OCJP标准题库试题之————第一次
  3. 增删查改html模板,dataGrid增删改查(EasyUI)示例源码
  4. 随机森林特征个数mtry matlab,基于随机森林的特征选择算法
  5. mysql建立索引原则
  6. CloudSim源码分析之虚拟机分配
  7. Arduino学习笔记三之函数详解及使用范例
  8. 电力系统机组组合(Matlab代码实现)
  9. C# 使用NModbus 多Slave站编程方法
  10. 透明背景转换时变为黑色解决方法