一、前言


    本来准备写一些网络配置工具的使用,后来想了想(其实还是为了偷懒),网上关于nmcli工具的使用文章不多,所以写一下CentOS7中的nmcli工具的简单使用和CentOS7中一些网络属性配置的相关变化。



二、CentOS7网络方面的变化


    很多朋友刚接触到CentOS7的时候最不习惯的就是它的网卡命名方式了,不过不习惯终究还是得去了解它,毕竟一个运维人员要时刻保持先进性,我们一起来了解CentOS7中网卡的命名方式吧!




网卡命名机制


  1. 如果 Firmware或BIOS主板上集成设备的索引信息可用,且可预测,则根据此索引命名

  2. 如果 Firmware或BIOS为PCI-E扩展插槽提供的索引信息可用,且可预测,则根据此索引命名

  3. 如果硬件接口的物理位置信息可用,则根据此信息进行命名,如enp2s1(表示第二个PCI-E插槽上的第一个索引号的以太网设备)

  4. 如果用户显式可用,也可根据MAC地址进行命名

  5. 上述均不可用,才使用传统的eth0...进行命名




发问:为什么在CentOS7中要使用这种命名机制?


    在CentOS7之前我们使用的网卡命名机制是有很多问题的,例如:如果有两块网卡,分别为eth0和eth1,假设eth0网卡坏了,我们将它替换下来,换上新的网卡,我们可能会发现,新网卡却变成eth2了,这样我们再管理配置网络就会出现很多问题。

     而CentOS7中的命名方式就不会出现这种问题了,一般情况下只要你的接口不变化就不会出现网卡名称会出现变化的情况。




CentOS7网卡名称组成格式

en:表示Ethernet、以太网
wl:表示wlan、无线网
ww:表示wwan、无限广域网
o:表示集成设备的设备索引号
s:表示扩展槽的索引号
x:表示基于MAC地址命名
ps:表示主板上哪个总线上的索引号



    

udev
    通过udev读取/lib/udev/rename_device,/usr/lib/udev/rules.d/60-net.rules来命名网卡设备
biosdevname
    如果第一步未检测到相应数据,则根据/usr/lib/udv/rules.d/71-biosdevname.rules文件中的信息来命名网卡设备
检测网络设备接口
    如果第二步未检测到相应数据,通过udev检测网卡设备接口,根据/usr/lib/udev-rules.d/75-net-description中对于网卡设备的描述信息来命名网卡设备
使用传统命名方式
    如果以上方式均为检测到相应信息,则回归传统的网卡命名方式


三、CentOS7回归传统网卡命名方式


    其实如果实在不喜欢CentOS7的网卡命名方式我们也是可以改回传统的命名方式



1、编辑/etc/default/grub配置文件

[root@server1 ~]# vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="net.ifnames=0 crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"        #在前面添加net.ifnames=0
GRUB_DISABLE_RECOVERY="true"


2、为grub2生成其配置文件

[root@server1 ~]# grub2-mkconfig > /etc/grub2.cfg     #重建grub2配置重定向到原始配置文件
Generating grub configuration file ...
Found linux p_w_picpath: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd p_w_picpath: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux p_w_picpath: /boot/vmlinuz-0-rescue-ec3b02cacfc74b14822e17fb4079710b
Found initrd p_w_picpath: /boot/initramfs-0-rescue-ec3b02cacfc74b14822e17fb4079710b.img
done
[root@server1 ~]#

3、重启系统

[root@server1 ~]# ifconfig     #网卡以命名成eth0
eth0: flags=4163  mtu 1500
        inet 192.168.192.132  netmask 255.255.255.0  broadcast 192.168.192.255
        inet6 fe80::20c:29ff:fed1:44a3  prefixlen 64  scopeid 0x20
        ether 00:0c:29:d1:44:a3  txqueuelen 1000  (Ethernet)
        RX packets 75  bytes 8491 (8.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 90  bytes 14146 (13.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



地址配置工具:nmcli简单介绍

nmcli工具是由NetworkManager提供的一个命令行配置工具,我们在这里只它的一些简单用法,此博文可能以后会进行更新对nmcli进行全面讲解。


nmcli  [ OPTIONS ] OBJECT { COMMAND | help }    #nmcli语法



将eth0的IP地址配置为192.168.1.1/24

nmcli con modify eth0 ipv4.addresses 192.168.1.1/24


将eth0的网关地址配置为192.168.1.254

nmcli con modify eth0 ipv4.gateway 192.168.1.254


将eth0的dns1设置为202.102.192.68,dns2设置为8.8.8.8

nmcli con modify eth0 ipv4.dns 202.102.192.68 dns2 8.8.8.8


在eth0设备上添加一个名称为eth0-2的connection,ip为172.16.100.1/24 gateway 172.16.100.254

nmcli con add con-name eth0-2 type ethernet ip4 172.16.100.1/24 gateway 172.16.100.254
nmcli con up eth0-2    #启动eth0-2的配置,注意一个接口的配置只能同时启动一个


将eth0设备上的名称为eth0的connection设置为dhcp获取地址

nmcli con eth0 modify ipv4.method auto



总结

    本文写的真的不是很好,少写了很多改写的东西,以后可能会添加一些对于nmcli工具的全面介绍,写这篇文章时已经11点了,我实在太累了,索性先发布了,希望大家谅解。