本章主要介绍网络配置方法
- 网络基础知识
- 查看网络信息
- 图形化界面修改
- 字符界面修改
- 通过配置文件修改
- 命令行管理
1.网络基础知识
一台主机需要配置必要的网络信息,才可以连接到互联网。需要的配置网络信息包括IP地址,子网掩码,网关和DNS。
1)IP地址
在计算机中对IP地址标记使用的是32bit的二进制,例如:11000000 10101000 00011010 01100100
这里共有32位由1和0组成的二进制数字,这样的地址对于人类来说并不好记忆,所已用3 个点把这32位的二进制隔成4个部分,每个部分8个二进制数字。
11000000 .10101000 .00011010 .01100100
然后我们把每个部分的二进制转换成十进制之后,IP的格式就是下面这样 的:192.168.26.100
这是对IP的表示方法叫做 “点分十进制”
2)网关
我们把一个网络中的网关理解为一个城市中的高铁站,如果我们想从一个城市去往另外一
个城市,需要先到高铁站,坐上高铁之后,高铁会把我们送往另外一个城市。同样地,如果
一个网络中的主机要发送一个数据包去往另外一个网络,则需要先把这个数据包发送到网
关,然后由网关把这个数据包转发到另外一个网络。
所以,如果我们没有给一台机器配置网关,则这台机器的数据包是不能和其他网络的主机
进行通信的,只能和同一个网段的数据包通信。
3)DNS
两台主机通信时依赖的是IP,但是IP地址并不好记忆,不如主机名好记,例如
www.rhce.cc,再如 www.baidu.com。我们说两台主机通信依赖的是IP,但是我们访问
www.rhce.cc时,这是主机名不是IP,那是怎么通信的呢?这里就要用到 DNS 了。
DNS服务器的主要作用是做域名解析,可以把主机名解析成P地址,所以我们需要给系统
指定 DNS服务器。当我们指定了DNS服务器地址之后,在浏览器中输人www.rhce.cc时,
系统会向 DNS服务器查询 www.rhce.cc的IP,然后再通过这个IP来访问。
在我们的练习环境中,本书所使用的网络是192.168.26.0/24网段,我们需要把 DNS设置
为192.168.26.2。如果读者所使用的网络是192.168.X.0/24网段,则需要把 DNS设置为
192.168.26.X.2,这里的X是一个数字。
下面开始讲解如何查看这些网络信息,以及配置这些网络信息。
2.查看网络信息
1)查看 IP 地址信息通过ifconfig命令,命令如下
[root@red01 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:f5:f4:cd:5f txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.182.200 netmask 255.255.255.0 broadcast 192.168.182.255
inet6 fe80::20c:29ff:fe4f:12a8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:4f:12:a8 txqueuelen 1000 (Ethernet)
RX packets 2538 bytes 221720 (216.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 863 bytes 57369 (56.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 6 bytes 496 (496.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6 bytes 496 (496.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:96:ef:60 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@red01 ~]#
2) 这里查看的是所有活跃网卡的信息,如果想查看不管是沾跃还是不沾跃网卡的信息,以通
过ifconfig -a来查看。如果只想查看某张网卡的信息,可以通过“ifconfig 网卡名”来查
看。例如,只查看ens160的网络信息这里ens160是网卡名),命令如下。
[root@red01 ~]# ifconfig ens160
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.182.200 netmask 255.255.255.0 broadcast 192.168.182.255
inet6 fe80::20c:29ff:fe4f:12a8 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:4f:12:a8 txqueuelen 1000 (Ethernet)
RX packets 2609 bytes 227014 (221.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 901 bytes 62441 (60.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@red01 ~]#
3)这里inet后面跟的是此网卡的IP,ether后面跟的是此网卡的MAC地址。 也可以通过“ip address show 网卡名”来香看。例如,杏看engl60的网终信息,命令如下
[root@red01 ~]# ip address show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:4f:12:a8 brd ff:ff:ff:ff:ff:ff
inet 192.168.182.200/24 brd 192.168.182.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4f:12a8/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@red01 ~]#
这里address可以简写为addr 或a,show可以简写为sh。
如果要查看所有网卡的信息,可以写为“ip a”。如果网卡ens160上配置了多个IP,通过
ifconfig ens160只能看到一个IP,如果要看到所有的IP,可以使用ip address show
ens160命令。
4)查看网关可以使用route -n命令,这里的-n是为了防止反向解析,即防止把P解析成主机名,命令如下。可以看到网关是192.168.182.2
[root@red01 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.182.2 0.0.0.0 UG 100 0 0 ens160
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
192.168.182.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
[root@red01 ~]#
5)查看DNS,所使用的DNS记录在/etc/resolv.conf中。
[root@red01 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 202.96.128.86
nameserver 119.29.29.29
[root@red01 ~]#
在nameserver后面指定的就是当前默认使用的DNS。
为了更好地理解,这里举一个例子。我们在一张标签上写上IP、子网掩码、网关、DNS等
信息,然后把这个标签贴到网卡上,那么这张网卡就有这些网络信息了,如图1所示。
这个标签就叫作连接(connection),给网卡配置IP,只要给这个网卡建立一个连接就可
以了。
6)通过nmcli connection或简写为nmcli conn来查看当前连接,命令如下。
[root@red01 ~]# nmcli connection
NAME UUID TYPE DEVICE
ens160 92239b09-7a8b-4718-86d0-f2b0ee80ee57 ethernet ens160
docker0 1879b8f3-f71d-4dba-ba4d-adbaf5b399ea bridge docker0
virbr0 4b33414d-65a9-4627-ac0f-2f1c2332f2ee bridge virbr0
[root@red01 ~]#
这里 DEVICE 对应的是网卡名,NAME对应的是连接名。整句的意思就是网卡ens160存
在一个连接,名称为ens160。
7)查看连接的具体属性,可以通过“nmcli connection show连接名”来查看。下面查看ens160属性中与IPv4相关的条目,命令如下。
[root@red01 ~]# nmcli connection show ens160 | grep ipv4
ipv4.method: manual
ipv4.dns: 202.96.128.86,119.29.29.29
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.addresses: 192.168.182.200/24
ipv4.gateway: 192.168.182.2
可以看到,ens160获取IP方式是mannal.
注意:应为我们要练习创建连接,所以这里先把此连接删除。
[root@red01 ~]# nmcli connection delete ens160
成功删除连接 "ens160" (92239b09-7a8b-4718-86d0-f2b0ee80ee57)。
[root@red01 ~]#
3.图形化界面修改
1)在root用户下,输入“nm-connection-editor ”,结果如下。
[root@red01 ~]# nm-connection-editor
即可打开【网络连接】图形化界面窗口,这个窗口显示了当前具有的连接,单击左下角的
【+】按钮,添加一个连接,如图所示。
注意: 如果出现报错。再打开一个终端,执行ssh root@localhost -X命令(这里X是大写的)。
然后再次执行nm-connection-editor 命令。就可以打开网络连接的图形化界面
。
2)即可打开【网络连接】图形化界面窗口,这个窗口显示了当前具有的连接,单击左下角的 【+】按钮,添加一个连接,如图所示。
3)在【选择连接类刑】对话框中选择【以太网】选项,单击【创建】按钮,如图所示。
4)打开【编辑ens160】对话框,在【常规】选项卡下的【连接名称】文本框中输 入“ens160”,这是创建连接的名称,名称可以随意取,不必和网卡名一致;选中【自动以 优先级连接】复选框,如图所示。
5)选择【以太网】选项卡,在【设备】下拉列表中选择【ens160】选项,意思就是为网卡ens160创建一个连接,名称为ens160,如图所示。
6)选择【IPv4设置】选项卡,这里设置的是连接ens160是通 过什么方式获取IP,可以手动设置也可以通过 DHCP获取。在 【方法】下拉列表中选择【手动】选项,单击下面的【添加】按钮,输入IP地址、子网掩码、网关、DNS等。然后单 击右下角的【保存】按钮,如图所示。
保存后会看到添加成功
7)打开另一个终端,输入ifconfig ens160 查看是否有IP地址。可以看到已经有了IP地址
[root@red01 ~]# ifconfig ens160
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.182.200 netmask 255.255.255.0 broadcast 192.168.182.255
inet6 fe80::7452:2f13:8d33:bf16 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:4f:12:a8 txqueuelen 1000 (Ethernet)
RX packets 3409 bytes 286137 (279.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1215 bytes 96354 (94.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@red01 ~]#
也可以通过查看连接ens160的属性来查看IP信息,这里可以看到IP地址、网关、DNS等信息。因为这个连接是新创建的,所以创建好之后可以立即生效。
[root@red01 ~]# nmcli connection show ens160 | grep ipv4
ipv4.method: manual
ipv4.dns: 202.96.128.86,119.29.29.29
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.addresses: 192.168.182.200/24
ipv4.gateway: 192.168.182.2
4.字符界面修改
1)如果打不开上述图形化界面,可以在终端中输人“nmtui-edit”命令后按【Enter】键, 然后按【Tab】键选择【添加】按钮,再按【Enter】键,如图所示。
[root@red01 ~]# nmtui-edit
2)在【新建连接】界面中选中【以太网】,按【Tab】键选择【创建】按钮,然后按 【Enterl键,如图所示。
3)在【编辑连接】界面的【配置集名称】中输人“ens160”,这是设置连接名的;在下方的 【设备】中输入“ens160”。按【Tab】键选择【IPv4配置】后的【显示】按钮,然后按【Enter】键,如图所示。
4) 在【IPv4配置】后面将获取IP的方式设置为“手动”,按【Tab】键选择【地址】后的【添加】按钮,然后按【Enter】键,如图所示
5)然后按多次【Tab】键,直到看到下面的界面,这里确保【自动连接】前面有“X”,即选中状态,如果没有选中,则按空格键选中,再按【Tab】键选择【确定】按钮,然后按【Enter】键,如图所示。
6) 返回到初始界面,如图所示。可以看到已经有了网卡,直接退出
7)在终端中查看IP信息。
[root@red01 ~]# nmcli connection show ens160 | grep ipv4
ipv4.method: manual
ipv4.dns: 202.96.128.86,119.29.29.29
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.addresses: 192.168.182.200/24
ipv4.gateway: 192.168.182.2
5.通过配置文件修改
1)网卡连接的配置文件在/etc/sysconfig/network-scripts 中,格式为“ifcfg-连接名”,可以看到连接都被删除了,现在没有任何连接。
root@red01 ~]# nmcli connection delete ens160 //删除网卡
成功删除连接 "ens160" (dee33246-5a6d-4416-bff8-e42e110f3f0b)。
[root@red01 ~]#
[root@red01 ~]#
[root@red01 ~]# nmcli connection //查看网卡是否删除
NAME UUID TYPE DEVICE
docker0 1879b8f3-f71d-4dba-ba4d-adbaf5b399ea bridge docker0
virbr0 4b33414d-65a9-4627-ac0f-2f1c2332f2ee bridge virbr0
[root@red01 ~]#
2)下面为网卡 ens160创建一个连接,连接名为ens160, 创建一个文件/etc/sysconfig/network-scripts/ifcfg-ens160,内容如下.
[root@red01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens160
[root@red01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
DEVICE=ens160
NAME=ens160
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.182.200
NATMASK=255.255.255.0
GATEWAY=192.168.182.2
DNS1=202.96.128.86
DNS2=119.29.29.29
[root@red01 ~]#
这里字段的含义如下:
- DEVICE:用于指定哪张网卡
- NAME:用于指定连接的名称
- ONBOOT:设置的是开启是否自动生效,这是设置为yes 开机不生效则no
- BOOTPROTO:设置的是通过什么方式获取IP地址,可以选dhcp none static
- IPADDR:设置IP地址
- NETMASK:设置子网掩码
- GATEWAY:设置网关
- DNS1:设置DNS,这里最多可以指定3个DNS
3)因为这个配置文件时新创建的,所以需要重新加载以下才能生效,命令如下。
[root@red01 ~]# nmcli connection reload
[root@red01 network-scripts]# nmcli device reapply ens160
成功重新应用连接到设备 "ens160"。
4)然后查看网卡ens160的IP,可以看到,现在已经生效了。
[root@red01 ~]# ifconfig ens160
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.182.200 netmask 255.255.255.0 broadcast 192.168.182.255
ether 00:0c:29:4f:12:a8 txqueuelen 1000 (Ethernet)
RX packets 3921 bytes 321958 (314.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1367 bytes 115267 (112.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@red01 ~]#
5)记住,因为这个文件是新创建的,所以只要执行 nmcli connect reload 命令即可生效。 下面开始修改 IP,把配置文件修改为如下内容。
[root@red01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160
DEVICE=ens160
NAME=ens160
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.182.201 //修改IP
NATMASK=255.255.255.0
GATEWAY=192.168.182.2
DNS1=202.96.128.86
DNS2=119.29.29.29
[root@red01 ~]#
6)修改之后执行 nmcli connect reload 命令是没用的,还要执行 nmcli device reapply ens160 命令。
[root@red01 ~]# nmcli connection reload
[root@red01 ~]# nmcli device reapply ens160
成功重新应用连接到设备 "ens160"。
总结如下:
-
新创建好连接的配置文件,直接执行 nmcli connection reload 命令即可生效 。
-
修改已经存在的配置文件,之后需要执行 nmcli connection reload 和 nmclidevice reapply ens160 命令才能让修改生效
6.命令行管理
1)在命令中查看现有连接,命令如下。
root@red01 ~]# nmcli connection
NAME UUID TYPE DEVICE
ens160 ea74cf24-c2a2-ecee-3747-a2d76d46f93b ethernet ens160
docker0 1879b8f3-f71d-4dba-ba4d-adbaf5b399ea bridge docker0
virbr0 4b33414d-65a9-4627-ac0f-2f1c2332f2ee bridge virbr0
[root@red01 ~]#
2)删除连接的命令如下。
[root@red01 ~]# nmcli connection delete ens160 //删除网卡
成功删除连接 "ens160" (ea74cf24-c2a2-ecee-3747-a2d76d46f93b)。
[root@red01 ~]# nmcli connection //查看ens160是否删除
NAME UUID TYPE DEVICE
docker0 1879b8f3-f71d-4dba-ba4d-adbaf5b399ea bridge docker0
virbr0 4b33414d-65a9-4627-ac0f-2f1c2332f2ee bridge virbr0
[root@red01 ~]#
3)命令行添加连接的命令时 nmcli connection add, 常见的选项包括以下几个:
- type:类型
- con-name:连接名
- ifname:网卡名称
- ipv4.method manual/auto manual:手动配置IP,auto为自动获取
- ipv4.addresses:指定IP子网掩码
- ipv4.gateway:指定网关
- ipv4.dns:指定DNS
- autoconnect yes:设置连接开机自动生效
4)下面为网卡ens160创建一个名称为ens160,类型为以太网的连接。
[root@red01 ~]# nmcli connection add type ethernet con-name ens160 ifname ens160 ipv4.addresses 192.168.182.200/24 ipv4.gateway 192.168.182.2 ipv4.dns 202.96.128.86 autoconnect yes
连接 "ens160" (f75547c3-2963-40c8-a599-4ed518f2925c) 已成功添加。
[root@red01 ~]#
5)查看创建好之后,可以查看连接属性,命令如下。 左侧时此连接的属性 右侧是具体的值
[root@red01 ~]# nmcli connection show ens160 | grep ipv4
ipv4.method: auto
ipv4.dns: 202.96.128.86
ipv4.dns-search: --
ipv4.dns-options: --
ipv4.dns-priority: 0
ipv4.addresses: 192.168.182.200/24
ipv4.gateway: 192.168.182.2
6)这里的属性与前面创建连接用的属性一致,现在把ens160的IP改为192.168.182.201,命令如下。
[root@red01 ~]# nmcli connection modify ens160 ipv4.addresses 192.168.182.201/24
[root@red01 ~]#
[root@red01 ~]# nmcli device reapply ens160
成功重新应用连接到设备 "ens160"。
[root@red01 ~]#
注意:一定要记得,修改之后要执行nmcli device reapply ens160命令让所做修改生效。如果不是修改的配置文件,则不必执行nmcli connection reload命令。
7)如果要给ens160再额外添加一个IP地址192.168.182.200/24,可以使用如下命令。
[root@red01 ~]# nmcli connection modify ens160 ifname ens160 ipv4.method manual +ipv4.addresses 192.168.182.200/24
[root@red01 ~]# nmcli device reapply ens160
成功重新应用连接到设备 "ens160"。
[root@red01 ~]#
在添加 IP 地址时,ipy4 .addresses前面一定要有一个加号“+”,写 作“+ipv4.addresses"表示额外添加一个IP,如果没有这个+,会覆盖原有的IP
8)查看ens160的IP信息,可以看到ens160是有两个IP地址的
[root@red01 ~]# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:4f:12:a8 brd ff:ff:ff:ff:ff:ff
inet 192.168.182.201/24 brd 192.168.182.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet 192.168.182.200/24 brd 192.168.182.255 scope global secondary noprefixroute ens160
valid_lft forever preferred_lft forever
inet6 fe80::ae53:b446:9d9a:e8fb/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@red01 ~]#
9)类似地,如果要删除ens160的某个P地址,可以写作“-ipv4.addresses”。例如,要删 除ens160的192.168.8.100这个IP地址,可以用如下命令。
[root@red01 ~]# nmcli connection modify ens160 ifname ens160 ipv4.method manual -ipv4.addresses 192.168.182.201/24
[root@red01 ~]# nmcli device reapply ens160
成功重新应用连接到设备 "ens160"。
[root@red01 ~]#
在RHEL8中,不能通过systemctl restart network来重启网络,不过安装network-scripts之后就可以了,关于软件包的安装,后续的章节会讲解。