使用 nmcli 和 ip 命令配置 CentOS/RHEL 的网络
0X00 查看网络配置文件
在CentOS中网络是以配置文件的形式存在系统里的,在/etc/sysconfig/network-scripts/目录下,一般情况下网卡的配置文件都在这里了,以ifcfg-就是配置文件了,打开配置文件看一下。下面注释一下关键的配置项
1TYPE=Ethernet # 网络类型
2BOOTPROTO=static # 协议取值,常见的是static和dhcp
3IPADDR=10.13.7.33 # 给网卡ip赋值
4NETMASK=255.255.255.0 # 给网卡子网掩码赋值
5DEFROUTE=yes
6PEERDNS=yes
7PEERROUTES=yes
8IPV4_FAILURE_FATAL=no
9IPV6INIT=yes
10IPV6_AUTOCONF=yes
11IPV6_DEFROUTE=yes
12IPV6_PEERDNS=yes
13IPV6_PEERROUTES=yes
14IPV6_FAILURE_FATAL=no
15NAME=enp0s8
16USERCTL=no # 是否允许非root用户控制
17UUID=4c967913-c4c9-4961-ae03-de7865f144d0 # 网卡的唯一标识码
18DEVICE=enp0s8 # 设备名
19ONBOOT=no # 是否在开机时激活但是一般不建议直接使用编辑器修改网络配置文件,因为这样容易出现一些语法错误和逻辑错误,所以建议使用命令行来管理配置网络,虽然本质上都是去修改配置文件。但是使用命令行去管理网络,命令都是确保配置没有问题才会写入到文件,所以会更加安全。包括下面介绍的ip和nmcli命令,都是通过修改配置文件来完成功能的。
0X01 ifconfig 命令
这个命令在CentOS7中已经不建议使用了,不过由于之前的版本都是在用这个命令,还是说一下。ifconfig是interface configuration的缩写,也就是接口配置。
查看网络
直接输入这个命令就可以看到现在启动着的所有网络。也可以接上某个特定的网卡来查看单独的信息ifconfig enp0s3
1[root@localhost ~]# ifconfig
2enp0s8: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
3 ether 08:00:27:79:c4:b1 txqueuelen 1000 (Ethernet)
4 RX packets 0 bytes 0 (0.0 B)
5 RX errors 0 dropped 0 overruns 0 frame 0
6 TX packets 0 bytes 0 (0.0 B)
7 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
8
9lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
10 inet 127.0.0.1 netmask 255.0.0.0
11 inet6 ::1 prefixlen 128 scopeid 0x10<host>
12 loop txqueuelen 0 (Local Loopback)
13 RX packets 0 bytes 0 (0.0 B)
14 RX errors 0 dropped 0 overruns 0 frame 0
15 TX packets 0 bytes 0 (0.0 B)
16 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0如果想查看包括已经关闭了的网络时,使用ifconfig -a就可以了
最后的那个lo是回环网络,暂时不用管
开关网络
ifconfig还可以开关网络,命令后面接interface name也就是网卡名,然后接上up/down就可以开关网络了
1[root@localhost ~]# ifconfig enp0s8 down # 关闭网络
2[root@localhost ~]# ifconfig
3lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
4 inet 127.0.0.1 netmask 255.0.0.0
5 inet6 ::1 prefixlen 128 scopeid 0x10<host>
6 loop txqueuelen 0 (Local Loopback)
7 RX packets 0 bytes 0 (0.0 B)
8 RX errors 0 dropped 0 overruns 0 frame 0
9 TX packets 0 bytes 0 (0.0 B)
10 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
11
12[root@localhost ~]# ifconfig enp0s8 up # 打开网络
13[root@localhost ~]# ifconfig
14enp0s8: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
15 inet 123.123.123.2 netmask 255.255.255.128 broadcast 123.123.123.1
16 ether 08:00:27:79:c4:b1 txqueuelen 1000 (Ethernet)
17 RX packets 0 bytes 0 (0.0 B)
18 RX errors 0 dropped 0 overruns 0 frame 0
19 TX packets 0 bytes 0 (0.0 B)
20 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
21
22lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
23 inet 127.0.0.1 netmask 255.0.0.0
24 inet6 ::1 prefixlen 128 scopeid 0x10<host>
25 loop txqueuelen 0 (Local Loopback)
26 RX packets 0 bytes 0 (0.0 B)
27 RX errors 0 dropped 0 overruns 0 frame 0
28 TX packets 0 bytes 0 (0.0 B)
29 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
30配置网络
ifconfig命令可以在不重启的情况下开关网络接口,修改IP、掩码、网关等信息。
1[root@localhost ~]# ifconfig enp0s8 # 查看ep0s8的网卡信息
2enp0s8: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
3 ether 08:00:27:79:c4:b1 txqueuelen 1000 (Ethernet)
4 RX packets 0 bytes 0 (0.0 B)
5 RX errors 0 dropped 0 overruns 0 frame 0
6 TX packets 0 bytes 0 (0.0 B)
7 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
8
9[root@localhost ~]# ifconfig enp0s8 123.233.233.123 # 修改ip为123.233.233.123
10[root@localhost ~]# ifconfig enp0s8
11enp0s8: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
12 inet 123.233.233.123 netmask 255.0.0.0 broadcast 123.255.255.255
13 ether 08:00:27:79:c4:b1 txqueuelen 1000 (Ethernet)
14 RX packets 0 bytes 0 (0.0 B)
15 RX errors 0 dropped 0 overruns 0 frame 0
16 TX packets 0 bytes 0 (0.0 B)
17 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
18
19[root@localhost ~]# ifconfig enp0s8 netmask 255.255.255.0 # 修改子网掩码为255.255.255.0
20[root@localhost ~]# ifconfig enp0s8
21enp0s8: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
22 inet 123.233.233.123 netmask 255.255.255.0 broadcast 123.233.233.255
23 ether 08:00:27:79:c4:b1 txqueuelen 1000 (Ethernet)
24 RX packets 0 bytes 0 (0.0 B)
25 RX errors 0 dropped 0 overruns 0 frame 0
26 TX packets 0 bytes 0 (0.0 B)
27 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
28[root@localhost ~]# ifconfig enp0s8 123.123.123.2 netmask 255.255.255.128 # 当然也可以把这些写成一行
29[root@localhost ~]# ifconfig enp0s8
30enp0s8: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
31 inet 123.123.123.2 netmask 255.255.255.128 broadcast 123.123.123.
32 ether 08:00:27:79:c4:b1 txqueuelen 1000 (Ethernet)
33 RX packets 0 bytes 0 (0.0 B)
34 RX errors 0 dropped 0 overruns 0 frame 0
35 TX packets 0 bytes 0 (0.0 B)
36 TX errors 0 dropped 0 overruns 0 carrier 0 collisions 00X02 nmtui 简单的类图形管理工具
在终端中输入nmtui就可以打开一个类图形的界面,用这个界面可以更简单得管理配置网络,但是不能做比较细致的配置,而且使用比较简单,所以这里就不多做介绍了,可以自己在终端上打开看看。这个命令的一大优点是可以在ssh远程连接的时候使用,在Windows下的XShell等软件中都可以直接调出。
0X03 ip 命令
ip是现在推荐使用的命令,功能比较强大。
ip命令管理设备开关
1[root@localhost ~]# ip link show enp0s8 # 这个命令大致相当于 ifconfig enp0s8 查看这个网卡的信息
23: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
3 link/ether 08:00:27:79:c4:b1 brd ff:ff:ff:ff:ff:ff
4[root@localhost ~]# ip link set dev enp0s8 up # 设置一个device,enp0s8,打开
5[root@localhost ~]# ip link show enp0s8
63: enp0s8: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
7 link/ether 08:00:27:79:c4:b1 brd ff:ff:ff:ff:ff:ff
8[root@localhost ~]# ip link set dev enp0s8 down # 设置 设备 网卡名 打开/关闭
9[root@localhost ~]# ip link show enp0s8
103: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
11 link/ether 08:00:27:79:c4:b1 brd ff:ff:ff:ff:ff:ffip命令修改网卡MAC地址
1[root@localhost ~]# ip link set dev enp0s8 address 00:00:ff:bb:aa:22 # 修改网卡的物理地址,也就是MAC地址
2[root@localhost ~]# ip link show enp0s8
33: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
4 link/ether 00:00:ff:bb:aa:22 brd ff:ff:ff:ff:ff:ff0X04 nmcli 管理网络
nmcli是network manager command line interface的简写,这个命令可以用来管理配置网络。
查看网络接口状态
1[root@localhost ~]# nmcli -p g
2=============================================================
3 NetworkManager status
4=============================================================
5STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
6-------------------------------------------------------------
7connected full enabled enabled enabled enabled查看修改主机名
1[root@localhost ~]# nmcli general hostname
2localhost.localdomain
3[root@localhost ~]# nmcli general hostname test
4[root@localhost ~]# nmcli general hostname
5test查看网络设备
以前可以用ifconfig来查看网络设备,ip命令也可以查看。可以直接查看所有的,也可以指定某一个设备查看。
1[root@localhost ~]# nmcli device show # 莎看所有设备
2GENERAL.DEVICE: enp0s3
3GENERAL.TYPE: ethernet
4GENERAL.HWADDR: 08:00:27:35:C7:CE
5GENERAL.MTU: 1500
6....................... # 输出太多,就不全放在这里了
7IP6.ADDRESS[1]: ::1/128
8IP6.GATEWAY:
9[root@localhost ~]# nmcli device show enp0s8 # 查看指定设备
10GENERAL.DEVICE: enp0s8
11GENERAL.TYPE: ethernet
12GENERAL.HWADDR: 08:00:27:79:C4:B1
13GENERAL.MTU: 1500
14GENERAL.STATE: 100 (connected)
15GENERAL.CONNECTION: enp0s8
16GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/7
17WIRED-PROPERTIES.CARRIER: off
18IP4.ADDRESS[1]: 123.123.123.2/25
19IP4.GATEWAY:
20IP6.GATEWAY:修改网卡配置
一个设备可以有多个连接,在CentOS7中网络是以连接管理的。虽然每个设备可以有多个连接,但是同时生效的只能有一个。我们可以使用nmcli connection查看连接
1[root@localhost ~]# nmcli connection show
2NAME UUID TYPE DEVICE
3enp0s8 ae99f48d-5f20-4a9c-a487-c4ebafa3f92e 802-3-ethernet enp0s8
4enp0s3 2edc4731-888c-4102-8ff5-236ea47eeedb 802-3-ethernet enp0s3我们可以进行如下操作nmcli connection add/delete/edit也就是增删改三个操作。
每一个连接都有一个名字,我们可以根据名字索引来操作对应到的连接。我们先来删除掉之前配置的网络。
1[root@localhost ~]# nmcli connection delete enp0s8 # 这样可以删掉之前的连接
2Connection 'enp0s8' (ae99f48d-5f20-4a9c-a487-c4ebafa3f92e) successfully deleted.然后添加一个新的连接,名字叫’test_conn’,接口是’enp0s8’,类型是’ethernet’也就是以太网,ip使用v4版本123.123.123.123,子网掩码是24位,ipv4的网关是123.123.123.1
1[root@localhost ~]# nmcli connection add con-name 'test_conn' ifname enp0s8 type ethernet ip4 123.123.123.123/24 gw4 123.123.123.1
2Connection 'test_conn' (05c7cd70-a48e-4a12-a0de-9d57724cf0d0) successfully added.
3[root@localhost ~]# nmcli connection show test_conn
4# 这行命令的输出太多了就不展示了。但是我们可以通过这行命令看到自己创建的连接,信息和自己填写的命令相对应。修改一个连接可以使用nmcli connection modify,下面我们来测试一下修改一个连接
1[root@localhost ~]# nmcli connection show test_conn | grep ipv4.dns # 使用grep搜索查看dns设置
2ipv4.dns:
3ipv4.dns-search:
4[root@localhost ~]# nmcli connection modify test_conn ipv4.dns 8.8.8.8 # 修改ipv4的dns地址
5[root@localhost ~]# nmcli connection show test_conn | grep ipv4.dns
6ipv4.dns: 8.8.8.8
7ipv4.dns-search:如果这篇文章对你有帮助,可以请我喝杯咖啡 ☕
评论