RedHat8_Linux的网络配置

本章主要介绍网络配置方法

  • 网络基础知识
  • 查看网络信息
  • 图形化界面修改
  • 字符界面修改
  • 通过配置文件修改
  • 命令行管理

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)网关
        我们把一个网络中的网关理解为一个城市中的高铁站,如果我们想从一个城市去往另外一
个城市,需要先到高铁站,坐上高铁之后,高铁会把我们送往另外一个城市。同样地,如果
一个网络中的主机要发送一个数据包去往另外一个网络,则需要先把这个数据包发送到网
关,然后由网关把这个数据包转发到另外一个网络。
        所以,如果我们没有给一台机器配置网关,则这台机器的数据包是不能和其他网络的主机
进行通信的,只能和同一个网段的数据包通信。
RedHat8_Linux的网络配置_第1张图片
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  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  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
        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  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10
        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  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  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
        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:  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,只要给这个网卡建立一个连接就可
以了。
RedHat8_Linux的网络配置_第2张图片
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 
即可打开【网络连接】图形化界面窗口,这个窗口显示了当前具有的连接,单击左下角的
【+】按钮,添加一个连接,如图所示。

RedHat8_Linux的网络配置_第3张图片

  注意:      如果出现报错。再打开一个终端,执行ssh root@localhost -X命令(这里X是大写的)。
然后再次执行nm-connection-editor 命令。就可以打开网络连接的图形化界面
2)即可打开【网络连接】图形化界面窗口,这个窗口显示了当前具有的连接,单击左下角的 【+】按钮,添加一个连接,如图所示。
RedHat8_Linux的网络配置_第4张图片
3)在【选择连接类刑】对话框中选择【以太网】选项,单击【创建】按钮,如图所示。
RedHat8_Linux的网络配置_第5张图片
 
4)打开【编辑ens160】对话框,在【常规】选项卡下的【连接名称】文本框中输 入“ens160”,这是创建连接的名称,名称可以随意取,不必和网卡名一致;选中【自动以 优先级连接】复选框,如图所示。

RedHat8_Linux的网络配置_第6张图片

5)选择【以太网】选项卡,在【设备】下拉列表中选择【ens160】选项,意思就是为网卡ens160创建一个连接,名称为ens160,如图所示。

RedHat8_Linux的网络配置_第7张图片

6)选择【IPv4设置】选项卡,这里设置的是连接ens160是通 过什么方式获取IP,可以手动设置也可以通过 DHCP获取。在 【方法】下拉列表中选择【手动】选项,单击下面的【添加】按钮,输入IP地址、子网掩码、网关、DNS等。然后单 击右下角的【保存】按钮,如图所示。
RedHat8_Linux的网络配置_第8张图片
保存后会看到添加成功
RedHat8_Linux的网络配置_第9张图片
7)打开另一个终端,输入ifconfig ens160 查看是否有IP地址。可以看到已经有了IP地址
[root@red01 ~]# ifconfig ens160
ens160: flags=4163  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
        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

RedHat8_Linux的网络配置_第10张图片

2)在【新建连接】界面中选中【以太网】,按【Tab】键选择【创建】按钮,然后按 【Enterl键,如图所示。

RedHat8_Linux的网络配置_第11张图片

3)在【编辑连接】界面的【配置集名称】中输人“ens160”,这是设置连接名的;在下方的 【设备】中输入“ens160”。按【Tab】键选择【IPv4配置】后的【显示】按钮,然后按【Enter】键,如图所示。

RedHat8_Linux的网络配置_第12张图片

4) 在【IPv4配置】后面将获取IP的方式设置为“手动”,按【Tab】键选择【地址】后的【添加】按钮,然后按【Enter】键,如图所示
RedHat8_Linux的网络配置_第13张图片
5)然后按多次【Tab】键,直到看到下面的界面,这里确保【自动连接】前面有“X”,即选中状态,如果没有选中,则按空格键选中,再按【Tab】键选择【确定】按钮,然后按【Enter】键,如图所示。

RedHat8_Linux的网络配置_第14张图片

 6) 返回到初始界面,如图所示。可以看到已经有了网卡,直接退出

RedHat8_Linux的网络配置_第15张图片

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 ~]# 

这里字段的含义如下:

  1. DEVICE:用于指定哪张网卡
  2. NAME:用于指定连接的名称
  3. ONBOOT:设置的是开启是否自动生效,这是设置为yes 开机不生效则no
  4. BOOTPROTO:设置的是通过什么方式获取IP地址,可以选dhcp none static
  5. IPADDR:设置IP地址
  6. NETMASK:设置子网掩码
  7. GATEWAY:设置网关
  8. 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  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 和 nmcli
    device 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:  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之后就可以了,关于软件包的安装,后续的章节会讲解。

        

你可能感兴趣的:(linux,服务器,运维)