Linux进阶篇--网络管理

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
* 卸载网卡驱动:
   -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:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/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 1000
    link/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 1000
    link/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 1000
    link/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 1000
    link/ether 00:0c:29:6a:30:8b brd ff:ff:ff:ff:ff:ff
    inet 192.168.32.128/24 brd 192.168.32.255 scope global eth0
    inet6 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 1000
    link/ether 00:0c:29:6a:30:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.32.128/24 brd 192.168.32.255 scope global eth0
    inet6 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
  (c) 如果硬件接口的物理位置信息可用,则根据此信息进行命名,例如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 status
   Static hostname: centos7-1.magedu.com
Transient hostname: status
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 7eab25876df747da952cee5f5a6dbc5f
           Boot ID: fb89dce732ee45ab9443921157f6ed7a
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-862.el7.x86_64
      Architecture: 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,不自动连接
  nmcti 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 查看网页源代码

猜你喜欢

转载自blog.csdn.net/u013168176/article/details/82083808
今日推荐