CentOS7常用网络管理命令总结

一、CentOS7网络接口命名策略(systemd)
二、CentOS7的基础网络管理命令
2.1 NetworkManager服务
2.2 nmtui文本交互式工具
2.3 nmcli命令行接口工具
nmcli的语法说明
NetworkManager整体状态显示
显示所有连接或仅活动的连接
显示所有设备的状态
显示指定设备的所有连接属性
添加动态的以太网连接(DHCP)
添加静态的以太网连接
设置dns
设置静态路由
清空指定连接下的静态路由
2.5 直接编辑ifcfg-xxx文件
ip地址设置
路由设置
2.6 使用ip命令
添加IP地址
清除接口上的所有IP
添加/删除静态路由
三、主机名的修改
3.1 直接修改/etc/hostname
3.2 通过hostnamectl 修改
3.3 通过nmcli修改hostname
四、多网卡绑定
4.1 使用nmtui
4.2 使用nmcli
1) 创建bond0并设置ip
2) 添加从接口
五、桥接多网卡
六、VLAN接口

一、CentOS7网络接口命名策略(systemd)

在centos7之前使用传统接口命名(eth[0 1 2 …]),优点是简单易记,但其缺点也很明显,不能保证接口id与物理槽位一一对应,并且在添加、删除、更换网卡时可能会出现接口id改变的问题,所以在centos7中使用了如下命名法则:

接口名 类型 命名格式 说明
eno1424112 以太网 eno<index> 用于板载网卡的命名,en代表以太网,o表示onboard(板载设备),index为设备索引号
ens1234123 以太网 ens<slot>[f<function>][d<dev_id>] 用于PCI热插拔槽上设备命名,s表示slot,f表示function号(多功能pci设备上都有function号),d表示设备号
enp2s1234123 以太网 enp<bus>s<slot>[f<function>][d<dev_id>] 用于外接PCI设备命名,p表示pci总线id,s表示slot,f表示function号(多功能pci设备上都有function号),d表示设备号
enp2s1234123 以太网 enp<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] 用于外接usb设备
enx78e7d1ea46da 以太网 enx<MAC> 网卡mac地址命名只是一种可供用户选择的方式,系统默认不使用这种方式
eth0 以太网 eth<id> 传统的命名方案,在其他方法均失败后使用,需要指定net.ifnames=0

补充说明: 
en代表以太网, 
w1代表WLAN, 
ww代表WWAN; 
要使用上述命名方案,系统必须已安装biosdevname包及启动biosdevname(启动时内核参数需要添加biosdevname=1) 
要使用传统命名法,可以通过编辑/etc/default/grub文件,GRUB_CMDLINE_LINUX的值追加上net.ifnames=0;然后使用grub2-mkconfig -o /etc/grub2.cfg重新生成grub2配置;重启系统即可

网卡设备的重命名过程:

  1. 按/usr/lib/udev/rules.d/60-net.rules文件中的规则查看所有/etc/sysconfig/network-scripts/ifcfg-xxx文件,如果发现包含HWADDR的值与接口的mac地址匹配,则将该接口重命名为ifcfg-xxx文件中DEVICE指定的名称;

  2. 如果上一步没有重命名成功,但已安装biosdevname且kernel启动参数没有设置为biosdevname=0;/usr/lib/udev/rules.d/71-biosdevname.rules中规则会让biosdevname根据其命名规则重命名该网络接口;

  3. /lib/udev/rules.d/75-net-description.rules中的规则让udev通过检测网卡设备来填充udev属性,如:ID_NET_NAME_ONBOARD,ID_NET_NAME_SLOT,ID_NET_NAME_PATH,ID_NET_NAME_MAC。但有些设备的属性可能会未定义;

  4. /usr/lib/udev/rules.d/80-net-name-slot.rules中将按照此属性优先级顺序:ID_NET_NAME_ONBOARD、ID_NET_NAME_SLOT、ID_NET_NAME_PATH来重命名步骤1,2中没有被重命名且kernel启动参数没有设置net.ifnames=0的网卡设备;如果所有属性都没有设置,网卡将不被重命名。

二、CentOS7的基础网络管理命令

centos7使用NetworkManager守护进程来管理网络,常用的管理命令如下:

  1. nmtui 文本用户接口

  2. nmcli 命令行接口

  3. control-center GNOME下的图形接口

  4. nm-connection-editor GTK+ 3图形接口

2.1 NetworkManager服务

安装
yum install NetworkManager
启动服务
systemctl start NetworkManager
查看服务状态
systemctl status NetworkManager
开机启动
systemctl enable NetworkManager

2.2 nmtui文本交互式工具

安装
yum install NetworkManager-tui
使用
nmtui

5a557ee8-a5d2-4d8b-af38-9ed9da01826d.pngfd5144b6-043a-467d-be72-a3611dba172c.png

直接编辑指定网卡 
nmtui edit eno33554960
激活(up)指定网卡
nmtui connect eno33554960

2.3 nmcli命令行接口工具

无论是通过编辑修改ifcfg配置文件或使用nmcli工具修改网络接口属性,都要使用如下命令通知NetworkManager才会生效 
1) 通过编辑ifcfg修改:

# 重读/etc/sysconfig/network-scripts下的所有ifcfg文件
nmcli connection reload
# 重读指定的ifcfg文件
nmcli con load /etc/sysconfig/network-scripts/ifcfg-eno16777736

2) 通过nmcli工具修改:

# 重新关联网络接口
nmcli dev disconnect  eno16777736 ; nmcli con up eno16777736
nmcli的语法说明
命令格式:
nmcli OPTIONS OBJECT { COMMAND | help }
[root@centos7-template ~]# nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }OPTIONS   包含如下选项:
  -t[erse]                                  不输出头部标题信息,一般用于脚本执行
  -p[retty]                                  更加友好的输出
  -m[ode] tabular|multiline                  指定输出的模式,包括列表输出和多行输出
  -f[ields] <field1,field2,...>|all|common  仅输出指定的字段内容
  -e[scape] yes|no                          当value中出现列分割符时转义
  -n[ocheck]                                 don't check nmcli and NetworkManager versions
  -a[sk]                                     ask for missing parameters
  -w[ait] <seconds>                          set timeout waiting for finishing operations
  -v[ersion]                                 show program version
  -h[elp]                                    print this help
  OBJECT        包含如下:  
     g[eneral]       NetworkManager的通用状态和操作
     n[etworking]    网络控制相关  
     r[adio]         NetworkManager管理射频卡配置  
     c[onnection]    NetworkManager的连接管理  
     d[evice]        设备管理  
     a[gent]         NetworkManager secret agent or polkit agent
NetworkManager整体状态显示
[root@centos7-template ~]# nmcli gen status
状态    CONNECTIVITY  WIFI-HW  WIFI    WWAN-HW  WWAN   
连接的  全部          已启用   已启用  已启用   已启用
显示所有连接或仅活动的连接
[root@centos7-template ~]# nmcli connection show
名称         UUID                                  类型            设备        
有线连接 1   8be86794-a88a-4995-983c-6a7470586748  802-3-ethernet  --          
eno16777736  13756690-ac77-b776-4fc1-f5535cee6f16  802-3-ethernet  eno16777736 
test-lab     be5dda98-df56-4466-a7b1-73047f0bbb3d  802-3-ethernet  eno33554960
[root@centos7-template ~]# nmcli connection show -a
名称         UUID                                  类型            设备        
eno16777736  13756690-ac77-b776-4fc1-f5535cee6f16  802-3-ethernet  eno16777736 
test-lab     be5dda98-df56-4466-a7b1-73047f0bbb3d  802-3-ethernet  eno33554960
显示所有设备的状态
[root@centos7-template ~]# nmcli dev status
设备         类型      状态    CONNECTION  
eno16777736  ethernet  连接的  eno16777736 
eno33554960  ethernet  连接的  test-lab    
eno50332216  ethernet  已断开  --          
lo           loopback  未管理  --
显示指定设备的所有连接属性
[root@centos7-template ~]# nmcli con show test-lab
connection.id:                          test-lab
connection.uuid:                        be5dda98-df56-4466-a7b1-73047f0bbb3d
connection.interface-name:              eno33554960
connection.type:                        802-3-ethernet
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.timestamp:                   1465380794
connection.read-only:                   no
connection.permissions:                 
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.auto
connect-slaves:          -1 (default)
connection.secondaries:                 
connection.gateway-ping-timeout:        0
connection.metered:                     未知
802-3-ethernet.port:                    --
802-3-ethernet.speed:                   0
802-3-ethernet.duplex:                  --
802-3-ethernet.auto-negotiate:          yes
802-3-ethernet.mac-address:             --
802-3-ethernet.cloned-mac-address:      --
802-3-ethernet.mac-address-blacklist:   
802-3-ethernet.mtu:                     自动
802-3-ethernet.s390-subchannels:        
802-3-ethernet.s390-nettype:            --
802-3-ethernet.s390-options:            
802-3-ethernet.wake-on-lan:             1 (default)
802-3-ethernet.wake-on-lan-password:    --
ipv4.method:                            manual
ipv4.dns:                               
ipv4.dns-search:                        
ipv4.addresses:                         10.10.10.10/24
ipv4.gateway:                           10.10.10.254
ipv4.routes:                            
ipv4.route-metric:                      -1
ipv4.ignore-auto-routes:                no
ipv4.ignore-auto-dns:                   no
ipv4.dhcp-client-id:                    --
ipv4.dhcp-send-hostname:                yes
ipv4.dhcp-hostname:                     --
ipv4.never-default:                     no
ipv4.may-fail:                          yes
ipv6.method:                            auto
ipv6.dns:                               
ipv6.dns-search:                        
ipv6.addresses:                         
ipv6.gateway:                           --
ipv6.routes:                            
ipv6.route-metric:                      -1
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (未知)
ipv6.dhcp-send-hostname:                yes
ipv6.dhcp-hostname:                     --
GENERAL.名称:                           test-lab
GENERAL.UUID:                           be5dda98-df56-4466-a7b1-73047f0bbb3d
GENERAL.设备:                           eno33554960
GENERAL.状态:                           已激活
GENERAL.默认:                           否
GENERAL.DEFAULT6:                       否
GENERAL.VPN:                            否
GENERAL.ZONE:                           --
GENERAL.DBUS-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/2
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/Settings/0
GENERAL.SPEC 对象:                      /
GENERAL.MASTER-PATH:                    --
IP4.地址[1]:                            10.10.10.10/24
IP4.网关:                               10.10.10.254
IP6.地址[1]:                            fe80::20c:29ff:fe6f:b254/64
IP6.网关:
添加动态的以太网连接(DHCP)
[root@centos7-template ~]# nmcli dev status
设备         类型      状态    CONNECTION  
eno16777736  ethernet  连接的  eno16777736 
eno33554960  ethernet  已断开  --          
eno50332216  ethernet  已断开  --          
lo           loopback  未管理  --          
[root@centos7-template ~]# nmcli con add type ethernet con-name test1 ifname eno33554960
成功添加的连接 'test1'(5eb90d46-4ea7-48f3-af6b-967b8156dca7)。
#激活连接
[root@centos7-template ~]# nmcli con up id test1
添加静态的以太网连接
[root@centos7-template ~]# nmcli con add type ethernet con-name test2 ifname eno50332216 ip4 1.1.1.1/24 gw4 1.1.1.254 
成功添加的连接 'test2'(5fa56342-03b5-442c-9794-af466c28bb1a)。
[root@centos7-template ~]# nmcli con up id test2
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/137)
设置dns
[root@centos7-template ~]# nmcli con mod test2 ipv4.dns "114.114.114.114 8.8.8.8"
[root@centos7-template ~]# nmcli con mod test2 +ipv4.dns "8.8.4.4"
[root@centos7-template ~]# nmcli con show test2 | grep dns
ipv4.dns:                               114.114.114.114,8.8.8.8,8.8.4.4
[root@centos7-template ~]# nmcli con mod test2 -ipv4.dns "8.8.4.4"
[root@centos7-template ~]# nmcli con show test2 | grep 'ipv4.dns'
ipv4.dns:                               114.114.114.114,8.8.8.8
[root@centos7-template ~]# nmcli con up id test2
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/137)
设置静态路由
[root@centos7-template network-scripts]# nmcli con mod test2 ipv4.routes '3.3.3.0/24 1.1.1.4,4.4.4.0/24 1.1.1.4'
[root@centos7-template network-scripts]# nmcli con up id test2
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/28)
[root@centos7-template network-scripts]# ip route list
default via 192.168.124.2 dev eno16777736  proto static  metric 100 
1.1.1.4 dev eno50332216  proto kernel  scope link  src 1.1.1.4  metric 100 
3.3.3.0/24 via 1.1.1.4 dev eno50332216  proto static  metric 100 
4.4.4.0/24 via 1.1.1.4 dev eno50332216  proto static  metric 100 
192.168.124.0/24 dev eno16777736  proto kernel  scope link  src 192.168.124.70  metric 100
清空指定连接下的静态路由
#方法一:[root@centos7-template network-scripts]# nmcli con mod test2 ipv4.routes ''
[root@centos7-template network-scripts]# nmcli con up id test2 
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/33)
#方法二:
[root@centos7-template network-scripts]# nmcli con edit test2
nmcli> remove ipv4.routes
nmcli> print ipv4.routes
ipv4.routes: 
nmcli> save
Connection 'test2' (ffcbd3c0-f384-0a48-59ec-961241cbe948) successfully updated.
nmcli> activate 
激活监控连接(按任意间继续)成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/23)

补充说明: 
使用nmcli connection的所有增删改操作都会同步到/etc/sysconfig/network-scripts/ifcfg-<ID>中 
关于nmcli更多的使用例子,请参考: man nmcli-examples

2.5 直接编辑ifcfg-xxx文件

ip地址设置
[root@centos7-template network-scripts]# vim ifcfg-test2
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=test2
DEVICE=eno50332216
ONBOOT=yes
IPADDR=1.1.1.3
PREFIX=32
GATEWAY=1.1.1.254
DNS1=114.114.114.114
[root@centos7-template network-scripts]# systemctl restart network
路由设置
#方法一
[root@centos7-template network-scripts]# vim /etc/sysconfig/network-scripts/route-test2
ADDRESS0=2.2.2.0
NETMASK0=255.255.255.0
GATEWAY0=1.1.1.4
[root@centos7-template network-scripts]# systemctl restart network
#方法二
[root@centos7-template network-scripts]# vim route-test2
3.3.3.0/24 via 1.1.1.4
[root@centos7-template network-scripts]# systemctl restart network

2.6 使用ip命令

添加IP地址
[root@centos7-template ~]# ip addr add 1.1.1.1/24 dev eno33554960
[root@centos7-template ~]# ip addr add 2.2.2.2/24 dev eno33554960
[root@centos7-template ~]# ip addr add 3.3.3.3/24 label eno33554960:3 dev eno33554960
[root@centos7-template ~]# ip addr show
清除接口上的所有IP
[root@centos7-template ~]# ip addr flush eno33554960
[root@centos7-template ~]# ip addr show eno335549603

仅删除接口上指定的ip,可以使用ip addr del 3.3.3.3/24 dev eno33554960

添加/删除静态路由
[root@centos7-template ~]# ip route add default via 1.1.1.1 dev eno33554960
[root@centos7-template ~]# ip route del default dev eno33554960
[root@centos7-template ~]# ip route add 2.2.2.0/24 via 1.1.1.1 dev eno33554960
[root@centos7-template ~]# ip route list
[root@centos7-template ~]# ip route del 2.2.2.0/24 
[root@centos7-template ~]# ip route list

三、主机名的修改

3.1 直接修改/etc/hostname

[root@centos7-template ~]# echo 'new-hostname' > /etc/hostname #修改后需要通知hostnamed
[root@centos7-template ~]# systemctl restart systemd-hostnamed

3.2 通过hostnamectl 修改

[root@new-hostname ~]# hostnamectl set-hostname centos7-template
[root@new-hostname ~]# hostnamectl status
   Static hostname: centos7-template
   Icon name: computer-vm
   Chassis: vm        
   Machine ID: 6c8fe0fba4bc4ea0a1530d52d0ac9d75           
   Boot ID: 4a14b25f14eb4174aee7b21df771870b    
   Virtualization: vmware  
   Operating System: CentOS Linux 7 (Core)       
   CPE OS Name: cpe:/o:centos:centos:7            
   Kernel: Linux 3.10.0-327.el7.x86_64      
   Architecture: x86-64

3.3 通过nmcli修改hostname

[root@centos7-template ~]# nmcli general hostname
centos7-template
[root@centos7-template ~]# nmcli general hostname new-hostname
[root@centos7-template ~]# systemctl restart systemd-hostnamed
[root@centos7-template ~]# hostname
new-hostname

四、多网卡绑定

4.1 使用nmtui

步骤如下:

215c63ac-f10f-48e8-a130-925d92f10ee7.pngCentOS7常用网络管理命令总结 
f507490e-c01a-4735-8e5b-8ffb93fc019f.pngCentOS7常用网络管理命令总结 
d4a3403b-9305-4b9b-89a3-65435bbf3d91.pngCentOS7常用网络管理命令总结 
4d10c19e-7be2-409e-a4da-dc39ba422fe1.pngCentOS7常用网络管理命令总结 
391ea634-70a3-4eb0-977a-56b5ec73e3d6.png

f3c5f711-6dd5-4680-932b-4f7da6f9336e.png

62e6cad3-ca78-4936-a3db-210d4cfdf468.png

06447e26-1d19-4b47-9ed8-1ffacf253a6c.png

6e9675c7-c4ba-463b-acf3-3e31f25d7b6a.png

4.2 使用nmcli

1) 创建bond0并设置ip
[root@centos7-template ~]# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup ip4 1.1.1.1/24
成功添加的连接 'bond0'(9812336b-1c48-4b13-a172-b5f996f797c8)。
2) 添加从接口
[root@centos7-template ~]# nmcli con add type bond-slave con-name test1 ifname eno33554960 master bond0
成功添加的连接 'test1'(6a4f670a-1c77-408a-9808-c8ca8c45f5bb)。
[root@centos7-template ~]# nmcli con add type bond-slave con-name test2 ifname eno50332216 master bond0
成功添加的连接 'test2'(0003b65b-7a1a-497a-9531-d4afc684a025)。

备注: 
需要确保bonding模块已被kernel加载。可以使用lsmod | grep bonding检查,modprobe –first-time bonding载入

五、桥接多网卡

[root@centos7-template ~]# nmcli con add type bridge con-name br0 ifname br0 ip4 1.1.1.1/24
成功添加的连接 'br0'(2ea2906e-cb99-4fad-8ed6-4d1c038ad0b2)。
[root@centos7-template ~]# nmcli con add type bridge-slave con-name test1 ifname eno33554960 master br0
成功添加的连接 'test1'(0f4e9540-eda8-4259-a135-dd0fb6a7c06b)。
[root@centos7-template ~]# nmcli con add type bridge-slave con-name test2 ifname eno50332216 master br0
成功添加的连接 'test2'(385d73b4-5378-4b75-aa80-3b1c8f5c8adc)。
[root@centos7-template ~]# yum install bridge-utils
[root@centos7-template ~]# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.000c296fb254   yes         eno33554960
                                        eno50332216

备注: 
需要确保bridge模块已被kernel加载。可以使用lsmod | grep bridge检查,modprobe –first-time bridge载入

六、VLAN接口

[root@centos7-template ~]# nmcli con add type vlan con-name vlan20 ifname vlan20 dev br0 id 20 ip4 2.2.2.2/24
成功添加的连接 'vlan20'(e40abce1-5be5-4bda-b766-c6eb01d1198d)。

备注: 
需要确保8021q模块已被kernel加载。可以使用lsmod | grep 8021q检查,modprobe –first-time 8021q载入 
其中id 20为vlan tagid


原创文章,作者:gateray,如若转载,请注明出处:http://www.178linux.com/18021

(1)
上一篇 2016-06-09 11:11
下一篇 2016-06-09 22:14

相关推荐

  • 位置变量在Shell脚本编程中的作用

    位置变量:         如果要向一个shell脚本传递信息,可以使用位置参数完成此功能;参数相关数目传入脚本,此数目可以任意多,但只有前9个可以被访问,使用shift命令可以改变这个限制;参数从第一个开始,在第九个结束;每个访问参数前要加$符号;第一个参数为0,表示预留保存实…

    Linux干货 2016-08-15
  • rpm管理包

    rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。接下来聊一聊如何安装、卸载、查询、检验rpm类的软件。 安装:…

    2017-08-19
  • 第10周作业(下)

    4、写一个脚本(1) 能接受四个参数:start, stop, restart, statusstart: 输出“starting 脚本名 finished.”(2) 其它任意参数,均报错退出。 #!/bin/bash # [ $# -ne 1 ] && echo &quo…

    Linux干货 2017-01-03
  • 学习宣言

            学习计划:每天至少2个小时的学习,循序渐进,先通读再精读。         学习目标:成为运维的高手,走上人生巅峰。      &nb…

    Linux干货 2016-10-25
  • Docker 之初次体验

    一、Docker 简介  lxc linux container,openvz  容器中各虚拟机只有一个内核,而是多个用户空间  在库中完成虚拟化,比如wine 或者在windows中运行bash  在应用程序的运行级别提供虚拟化,比如jvm   pstree , pid 为1 的进程  …

    Linux干货 2017-02-24
  • Linux入门知识之计算机基础

    计算机基础、linux发行版、命令帮助获取

    2018-01-11