linux網路篇第二章CentOS7網路屬性配置

weixin_33895657發表於2017-06-29

網路卡命名機制

  • 早期的系統網路卡命名都是非常容易變化的
  • 在CentOS6之前,網路介面使用連續號碼命令如:eth0,eth1.....等,當增加或刪除網路卡時,名稱可能會發生變化

Centos7使用基於硬體, 裝置拓撲和裝置型別命令:

  • CentOS7 和Centos6的不同就是通過硬體來生成你的網路卡名稱
  • 他生成的時候有一系列的命名過程:
    • 首先他會基於你的韌體如BOISS裡面的資訊或其他的硬體的資訊來進行識別,比如他有可能會識別為eno1,eno就是內建網路卡的意思
    • 如果你不是內建網路卡時外接的,比方說是PCI-E的插槽外接網路卡,他可能會裝置ens1
    • 當然也有可能會識別別的名稱如:ens0等等
    • 總之會根據你的物理位置,和主機板的資訊來識別和生成網路卡名稱
    • 所以這就可以保證我們的網路卡不會那麼容易變化,導致伺服器斷網等等一些危險的情況
    • 甚至有可能會用到我們物理網路卡的MAC地址來命令
    • 當然有利也有弊,不容易管理,如果你實在是不喜歡,一樣也可以採用傳統的命名機制

網路卡名稱

  • 在老期版本的裡面我們的網路卡名不是叫eth0,eh1嗎
  • 有的廠家為了避免網路卡名的變化就開發了一些軟體,讓你的網路卡名稱不像那麼老變,其中有個軟體可以實現這功能

biosdevname

  • 這是老早期的軟體,裝上這個軟體以後你的網路卡可能會生成這種名字,:如內建網路卡會生成em1,em2,外接網路卡會生成:pypX :y(slot)插槽的意思 : X(port)意思是第幾個埠
  • 那我們來看看這個軟體
[root@localhost ~]# rpm -qi biosdevname     
Name        : biosdevname                  Relocations: (not relocatable)
Version     : 0.7.2                             Vendor: CentOS
Release     : 1.el6                         Build Date: Wed 22 Mar 2017 12:30:37 PM CST
Install Date: Wed 28 Jun 2017 11:52:56 AM CST      Build Host: c1bm.rdu2.centos.org
Group       : System Environment/Base       Source RPM: biosdevname-0.7.2-1.el6.src.rpm
Size        : 55296                            License: GPLv2
Signature   : RSA/SHA1, Thu 23 Mar 2017 11:02:59 PM CST, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://linux.dell.com/files/biosdevname
Summary     : Udev helper for naming devices per BIOS names
Description :
biosdevname in its simplest form takes a kernel device name as an
argument, and returns the BIOS-given name it "should" be.  This is necessary
on systems where the BIOS name for a given device (e.g. the label on
the chassis is "Gb1") doesn't map directly and obviously to the kernel
name (e.g. eth0).
  • 瞧上面網址就給咋們列出了來了DEll,我相信你們都知道這是上面廠家,那就是戴爾
  • 只要你買的是DELL的伺服器,會自帶給你配一個biosdevname的軟體
  • 如果你公司買的是DELL的伺服器,自己不修改的話可能看到的是這種網路卡名字
  • 當然別的廠家也可以裝這個軟體,但是別的廠家一般預設不會配,或者是有這個軟體沒啟用這個功能

名稱組成格式

  • 在CentOS7 裡面他的命名如下:

     -  **en**:**Ethernet**  有線區域網
     -  **wl**:**wlan** 無線區域網
     -  **ww**:**wwan**   無線廣域網
    
  • 名稱型別

    • o<index>:整合裝置的裝置索引號

    • s<slot> 擴充套件的索引號

    • x<MAC>基於MAC地址的命令

    • p<bus>s<slot>:enp2s1

網路卡裝置的命令過程

  • 對於CentOS7來講有一系列的命名過程
  • 第一步:udev,輔助工具程式/linb/udev/rename_device/usr/lib/udev/rules.d/60-net.rules
  • 第二步:biosdevname,會根據/usr/lib/udev/rules.d/71-biosdrvname.rules
  • 第三步:通過檢查網路介面裝置,根據/usr/lib/udev/rulis.d/75-net-description如:
  • ID_NET_NAME_ONBOARD
  • ID_NET_NAME_SLOT
  • ID_NET_NAME_PATH

採用傳統命名方式

使用傳統命令方式

  • 其實很簡單我們只需要修改核心選項就可以了,下面我們開始介紹
  • 方法1:進入grub.cfg 由於裡面資料較多,找到BEGIN /etc/grub.d/10_linu開頭的行,在找到LANG=en_US.UTF-8結尾的行在後面加上net.ifnames=0即可
[root@localhost ~]#  vim   /boot/grub2/grub.cfg
### BEGIN /etc/grub.d/10_linux ###


menuentry 'CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core)' --class centos --class gnu-linux --class gnu --class os --unrestricted $menue
ntry_id_option 'gnulinux-3.10.0-327.el7.x86_64-advanced-e9dc3158-e6dd-41d1-b51e-c24105d130cc' {
        load_video
        set gfxpayload=keep
        insmod gzio
        insmod part_msdos
        insmod xfs
        set root='hd0,msdos1'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd
0,msdos1'  3ffaae18-be19-44b1-b629-e850953533b2
        else
          search --no-floppy --fs-uuid --set=root 3ffaae18-be19-44b1-b629-e850953533b2
        fi
        linux16 /vmlinuz-3.10.0-327.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/
swap rhgb quiet LANG=en_US.UTF-8 net.ifnames=0  <<<<<在後面加上 net.ifnames=0即可
        initrd16 /initramfs-3.10.0-327.el7.x86_64.img
[root@localhost ~]# 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
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:6f:cf:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.42.130/24 brd 192.168.42.255 scope global dynamic eth0
       valid_lft 1182sec preferred_lft 1182sec
    inet6 fe80::20c:29ff:fe6f:cf88/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:6f:cf:92 brd ff:ff:ff:ff:ff:ff
    inet 172.17.253.208/16 brd 172.17.255.255 scope global dynamic eth1
       valid_lft 85782sec preferred_lft 85782sec
    inet6 fe80::20c:29ff:fe6f:cf92/64 scope link 
       valid_lft forever preferred_lft forever
  • 方法2:
    • grub2-mkconfig來生成,他是根據/etc/default/grub這個檔案來生成的,我們也可以把這個檔案也改了,下次在用grub2-mkconfig來生成就會有我們改過的net.ifnames-0了,我們修改的是倒數第二行
[root@localhost ~]# vi /etc/default/grub 
[root@localhost ~]# vi /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="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"
~                    
  • 所謂的方法2,就是已經改好了的/etc/default/grub,來重定向/boot?grub2/grub.cfg,不過原來的設計者也帶有這個選項-o 有重定向功能
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-5ec44303424e44a3a31f7b97358af5de
Found initrd image: /boot/initramfs-0-rescue-5ec44303424e44a3a31f7b97358af5de.img
done
[root@localhost ~]# 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
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:6f:cf:88 brd ff:ff:ff:ff:ff:ff
    inet 192.168.42.130/24 brd 192.168.42.255 scope global dynamic eth0
       valid_lft 1784sec preferred_lft 1784sec
    inet6 fe80::20c:29ff:fe6f:cf88/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:6f:cf:92 brd ff:ff:ff:ff:ff:ff
    inet 172.17.253.208/16 brd 172.17.255.255 scope global dynamic eth1
       valid_lft 86384sec preferred_lft 86384sec
    inet6 fe80::20c:29ff:fe6f:cf92/64 scope link 
       valid_lft forever preferred_lft forever

CentOS7 網路配置工具

  • CentOS7裡面,他有一個重大的變化就是,在CentOS7裡面有一個重大的服務
  • 那就是systemctl status NetworkManager服務,這個服務在CentOS7裡面很穩定,而且功能很強,CentOS6裡面也有這個服務,推薦還是別用因為不穩定,在CentOS7裡面已經是一個主流的服務了,那對應的這個服務有很多工具,我們來開始介紹
[root@localhost ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-06-29 20:38:09 CST; 16min ago
 Main PID: 999 (NetworkManager)
   CGroup: /system.slice/NetworkManager.service
           ├─ 999 /usr/sbin/NetworkManager --no-daemon
           ├─1337 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth1.pid -lf /var/lib/NetworkManager/dh...
           └─1338 /sbin/dhclient -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-eth0.pid -lf /var/lib/NetworkManager/dh...

Jun 29 20:49:43 localhost.localdomain dhclient[1338]: DHCPREQUEST on eth0 to 192.168.42.254 port 67 (xid=0x6091a5ea)
Jun 29 20:49:43 localhost.localdomain dhclient[1338]: DHCPACK from 192.168.42.254 (xid=0x6091a5ea)
Jun 29 20:49:43 localhost.localdomain NetworkManager[999]: <info>    address 192.168.42.130
Jun 29 20:49:43 localhost.localdomain NetworkManager[999]: <info>    plen 24 (255.255.255.0)
Jun 29 20:49:43 localhost.localdomain NetworkManager[999]: <info>    server identifier 192.168.42.254
Jun 29 20:49:43 localhost.localdomain NetworkManager[999]: <info>    lease time 1800
Jun 29 20:49:43 localhost.localdomain NetworkManager[999]: <info>    nameserver '192.168.42.1'
Jun 29 20:49:43 localhost.localdomain NetworkManager[999]: <info>    domain name 'localdomain'

CentOS7主機名

  • CentOS7裡面有一個專門來控制主機名的名字叫hostnamectl ,原來的hostname 還在,只不過比他多了些功能和,顯示更詳細的資訊
[root@localhost ~]# hostnamectl
   Static hostname: localhost.localdomain      
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 5ec44303424e44a3a31f7b97358af5de
           Boot ID: a6a9666d1d5644618b7127c02b53f786
    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
  • 這個命令就是比以前的CentOS6多了點功能,以前我們在CentOS6裡面執行了hostname主機名只是臨時生效,我們還要去/etc/sysconfig/network裡面去修改
  • 但是在CentOS7裡面執行這個命令就可以直接改掉主機名了
  • 我們執行 hostnamectl set-hostname Centos8 這個命令
[root@localhost ~]# hostnamectl  set-hostname Centos8
[root@centos8 ~]# 
  • 有一個要注意的是 在CentOS7裡面主機名已經不是在/etc/sysconfig/network裡面了
  • 在CentOS7裡面主機名存放在/etc/hostname裡面
  • 如果 /etc/hostname檔案刪了他就會使用CentOS7,預設的主機名localhost.localdomain
  • 當然了還有一個很重要的地方,那就是主機改了還有一個地方最好還是改下,以免系統以後出現特殊故障
  • 那就是/etc/hosts下加上你的主機名,你可以不改但是以後用應用軟體會出現一些特殊問題
[root@centos8 ~]# vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 centos8 <<這裡加上主機名
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  • 在CentOS7裡面執行nm-connection-editor命令可以開啟圖形化工具來配置網路卡,圖形化這就不多說了
 [root@localhost ~]# nm-connection-editor
  • 還可以用字元介面的工具 nmtui這個命令也不過多解釋
[root@localhost ~]# nmtui

相關文章