一、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配置;重启系统即可
网卡设备的重命名过程:
-
按/usr/lib/udev/rules.d/60-net.rules文件中的规则查看所有/etc/sysconfig/network-scripts/ifcfg-xxx文件,如果发现包含HWADDR的值与接口的mac地址匹配,则将该接口重命名为ifcfg-xxx文件中DEVICE指定的名称;
-
如果上一步没有重命名成功,但已安装biosdevname且kernel启动参数没有设置为biosdevname=0;/usr/lib/udev/rules.d/71-biosdevname.rules中规则会让biosdevname根据其命名规则重命名该网络接口;
-
/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。但有些设备的属性可能会未定义;
-
/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守护进程来管理网络,常用的管理命令如下:
-
nmtui 文本用户接口
-
nmcli 命令行接口
-
control-center GNOME下的图形接口
-
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
直接编辑指定网卡 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
步骤如下:
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