网卡命名
两种命名规范
biosdevname(过时)
通过读取BIOS中的信息来确定网卡的物理位置,然后借此生成设备名称。这种方式并不一定能够准确对应网卡的物理顺序。
使用需安装 yum -y install biosdevname 软件包
命名规律
eth0、eth1、eth2...
systemd(主流)
使用设备的类型、位置、数字来生成设备名称。
守护进程 systemd-udevd.service ,默认开机自启
命名规律
类型
en | 以太网(Ethernet) |
ib | 无限带宽(InfiniBand) |
sl | 串列线路互联网协议(slip:Serial line IP) |
wl | 无线局域网(WLAN,Wireless local area network) |
ww | 无线广域网(WWAN,Wireless wide area network) |
位置
o<index> | 板载设备索引号 |
s<slot> | 热插拔插槽索引号 |
x<MAC> | MAC 地址 |
p<bus>s<slot>[f<function>][d<dev_id>] | PCI 地理位置 |
p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] | USB 端口链 |
命名策略
Scheme 1(方案 1):如果从BIOS中能够取到可用的,板载网卡的索引号,则使用这个索引号命名,例如: eno1,如不能则尝试Scheme 2
Scheme 2(方案 2):如果从BIOS中能够取到可以用的,网卡所在的PCI-E热插拔插槽的索引号,则使用这个索引号命名,例如: ens1,如不能则尝试Scheme 3
Scheme 3(方案 3):如果能拿到设备所连接的物理位置信息,则使用这个信息命名,例如:enp2s0,如不能则尝试Scheme 5
Scheme 4(方案 4):使用网卡的MAC地址来命名,这个方法一般不使用。
Scheme 5(方案 5):传统的kernel命名方法,例如: eth0,这种命名方法的结果不可预知的,即可能第二块网卡对应eth0,第一块网卡对应eth1。
管理方式
network.service
network.service是系统提供的服务之一,以兼容遗留的网络功能。该服务的运行也被纳入SystemD的管理。
相关命令
service network start 和 chkconfig network on 系列命令
systemctl start network 系列命令
NetworkManager.service
它是守护进程NetworkManager提供的服务。centos7及之后版本默认的网络管理工具
相关命令
systemctl status NetworkManager.service 系列命令
两者不能同时使用
CentOS6
网卡名字
常见的 eth0、eth1、eth2...
管理方式
network.service
相关命令
启动网络服务:service network start
关闭网络服务:service network stop
查看网络服务状态:service network status
设为开机自启:chkconfig network on
取消开机自启:chkconfig network off
配置网络
修改完网卡配置文件后重启网络服务。
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
HWADDR="00:0C:29:E5:8D:44"
TYPE="Ethernet"
UUID="8d0680d1-36ff-4a3f-ac93-5ca2b335094d"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR=192.168.28.163
PREFIX=24
GATEWAY=192.168.28.2
DNS1=223.5.5.5
DNS2=119.29.29.29
[root@localhost ~]# service network restart
CentOS7
网卡名字
常见的 ens33
管理方式
network.service 和 NetworkManager(默认) 同时存在,但不能同时启用。
系统启动时,/etc/init.d/network会读取ifcfg文件,并检测NetworkManager是否已启动该设备。如果NetworkManager已经启动该设备,则/etc/init.d/network不生效,NetworkManager.service管理网络;否则/etc/init.d/network会启动该设备,network.service管理网络。
相关命令
启动网络服务:systemctl start network.service 或 systemctl start NetworkManager.service
关闭网络服务:systemctl stop network.service 或 systemctl stop NetworkManager.service
查看网络服务状态:systemctl status network.service 或 systemctl status NetworkManager.service
设为开机自启:systemctl enable network.service 或 systemctl enable NetworkManager.service
取消开机自启:systemctl disable network.service 或 systemctl disable NetworkManager.service
配置网络
network.service方式
修改完网卡配置文件后重启网络服务。
将 NetworkManager 停止并取消开机自启
[root@wenzi ~]# systemctl stop NetworkManager.service
[root@wenzi ~]# systemctl disable NetworkManager.service
Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
Removed symlink /etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service.
启动network.service并设置为开机自启
[root@wenzi ~]# systemctl start network.service
会出现提示,应使用 chkconfig network on
[root@wenzi ~]# systemctl enable network.service
network.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig network on
[root@wenzi ~]# chkconfig network on
[root@wenzi ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID="039c247d-11cc-4cee-8562-01f309f0332a"
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.28.162
PREFIX=24
GATEWAY=192.168.28.2
DNS1=223.5.5.5
DNS2=119.29.29.29
[root@wenzi ~]# systemctl restart network.service
NetworkManager方式
见下方CentOS8
CentOS8
网卡名字
常见的 ens160
管理方式
NetworkManager
相关命令
启动网络服务:systemctl start NetworkManager.service
关闭网络服务:systemctl stop NetworkManager.service
查看网络服务状态:systemctl status NetworkManager.service
设为开机自启:systemctl enable NetworkManager.service
取消开机自启:systemctl disable NetworkManager.service
配置网络
nmcli
是一个命令行工具,用于控制NetworkManager,它是CentOS 7和Red Hat Enterprise Linux 7等系统中默认的网络管理工具。
语法
nmcli [options] object {command | help}
object 常用的是 connection 和 device。
Device(设备)是指网络接口,是物理设备,例如网卡、无线网卡等。NetworkManager可以自动检测和配置这些设备。
Connection(连接)是逻辑设置,用于描述如何配置Device(设备)。一个Connection可以应用到多个Device上,但同一时间只能启用其中一个Connection。Connection包含了诸如IP地址、子网掩码、网关等网络参数的配置。
一、查看网卡信息
查看所有网络连接
[root@wenzi ~]# nmcli con show
NAME UUID TYPE DEVICE
System ens160 96649f5b-1c86-4cea-aa1e-366223abaea8 ethernet ens160
查看活跃的网络连接
[root@wenzi ~]# nmcli con show --active
NAME UUID TYPE DEVICE
System ens160 96649f5b-1c86-4cea-aa1e-366223abaea8 ethernet ens160
查看指定网络连接的详细信息
[root@wenzi ~]# nmcli con show "System ens160"
connection.id: System ens160
connection.uuid: 96649f5b-1c86-4cea-aa1e-366223abaea8
connection.stable-id: --
connection.type: 802-3-etherne
...
查看所有网络设备
[root@wenzi ~]# nmcli dev show
GENERAL.DEVICE: ens160
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:1B:12:DA
...
GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
查看指定网络设备的详细信息
[root@wenzi ~]# nmcli dev show ens160
GENERAL.DEVICE: ens160
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:1B:12:DA
GENERAL.MTU: 1500
...
二、改变网卡状态
停用指定的网络连接
[root@wenzi ~]# nmcli con down "System ens160"
启用指定的网络连接
[root@wenzi ~]# nmcli con up "System ens160"
删除指定的网络连接
[root@wenzi ~]# nmcli con delete "System ens160"
停用指定网络设备
[root@wenzi ~]# nmcli device disconnect ens160
启用指定网络设备
[root@wenzi ~]# nmcli device connect ens160
删除指定的网络设备
[root@wenzi ~]# nmcli device delete ens160
重新加载网络配置
[root@wenzi ~]# nmcli con reload
三、新增网卡配置文件
nmcli con add ...会自动生成新的网卡配置文件,名字为ifcfg-[con-name],即下面的ifcfg-ens00
[root@wenzi ~]# nmcli con add type ethernet con-name ens00 ifname ens00 ipv4.method manual connection.autoconnect yes ipv4.addresses 192.168.28.165/24 ipv4.gateway 192.168.28.2 ipv4.dns 223.5.5.5 +ipv4.dns 119.29.29.29
[root@wenzi ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens00
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.28.165
PREFIX=24
GATEWAY=192.168.28.2
DNS1=223.5.5.5
DNS2=119.29.29.29
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens00
UUID=e4b5bd14-e321-4a9a-a8a9-13226a209c5e
DEVICE=ens00
ONBOOT=yes
type ethernet | TYPE=Ethernet |
con-name ens00 | NAME=ens00 |
ifname ens00 | DEVICE=ens00 |
ipv4.method manual 或 auto | BOOTPROTO=none 或 dhcp |
connection.autoconnect yes | ONBOOT=yes |
ipv4.addresses 192.168.28.165/24 | IPADDR=192.168.28.165 |
ipv4.gateway 192.168.28.2 | GATEWAY=192.168.28.2 |
ipv4.dns 223.5.5.5 | DNS1=223.5.5.5 |
+ipv4.dns 119.29.29.29 | DNS2=119.29.29.29 |
三、修改网卡配置文件
一、通过nmcli命令 nmcli con mod ens00 .... ,修改后需要执行 nmcli con up ens00 使配置生效。
二、手动修改ifcfg-ens00配置文件,修改后需要执行 nmcli con reload && nmcli con up ens00 使配置生效
添加第二个IP
[root@wenzi ~]# nmcli con mod ens00 +ipv4.addresses 192.168.28.166/24
删除第二个IP
[root@wenzi ~]# nmcli con mod ens00 -ipv4.addresses 192.168.28.166/24
添加第二个DNS
[root@wenzi ~]# nmcli con mod ens00 +ipv4.dns 223.5.5.5
删除第二个DNS
[root@wenzi ~]# nmcli con mod ens00 -ipv4.dns 223.5.5.5
其余的选项同上方表格。
Ubuntu
网卡文件:/etc/netplan/xxx.yaml,格式如下
root@wenzi:~# cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens33:
addresses:
- 192.168.1.3/24
nameservers:
addresses:
- 223.5.5.5
- 8.8.8.8
search: []
routes:
- to: default
via: 192.168.1.1
version: 2
1、禁用cloud-init's
root@wenzi:~# vim /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
network: {config: disabled}
2、修改完ip,使用netplan apply后,即可生效。
若有如下提示
root@wenzi:~# netplan apply
WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running.
解决办法
查看服务是否正在运行
systemctl status ovsdb-server.service
若没运行,就启动该服务
systemctl start ovsdb-server.service
若提示,没有此服务
Unit ovsdb-server.service could not be found.
就安装此服务
apt -y install openvswitch-switch
systemctl start ovsdb-server.service