当前位置:  首页>> 技术小册>> Linux应该怎么学(中)

截至目前,大家已经完全可以利用当前所学的知识来管理Linux系统了。当然,大家的水平完全可以更进一步,当有朝一日登顶技术巅峰时,您一定会感谢现在正在努力学习的您。
我们接下来将学习如何在Linux系统上配置服务。但是在此之前,必须先保证主机之间能够顺畅地通信。如果网络不通,即便服务部署得再正确用户也无法顺利访问,所以,配置网络并确保网络的连通性是学习部署Linux服务之前的最后一个重要知识点。
在4.1.3小节讲解了如何使用Vim文本编辑器来配置网络参数,其实,在RHEL 7系统中有至少5种网络的配置方法,刘遄老师尽量在本书中为大家逐一演示。这里教给大家的是使用nmtui命令来配置网络,其具体的配置步骤如图9-1至图9-8所示。当遇到不容易理解的内容时,我们会额外进行解释说明。

图9-1 执行nmtui命令运行网络配置工具

现在,在服务器主机的网络配置信息中填写IP地址192.168.10.10/24。

在RHEL 5、RHEL 6系统及其他大多数早期的Linux系统中,网卡的名称一直都是eth0、eth1、eth2、……,但在RHEL 7中则变成了类似于eno16777736这样的名字。不过除了网卡的名称发生变化之外,其他几乎一切照旧,因此这里演示的网络配置实验完全可以适用于各种版本的Linux系统。
注:
再多提一句,我们的这本《Linux就该这么学》不仅学习门槛低、简单易懂,而且还有一个潜在的优势——书中所有的服务器主机IP地址均为192.168.10.10,而客户端主机均为192.168.10.20及192.168.10.30。这样的好处就是,在后面部署Linux服务的时候,不用每次都要考虑IP地址变化的问题,从而可以心无旁骛地关注配置细节。
至此,在Linux系统中配置网络的步骤就结束了。
刘遄老师在培训时经常会发现,很多学员在安装RHEL 7系统时默认没有激活网卡。如果各位读者有同样的情况也不用担心,只需使用Vim编辑器将网卡配置文件中的ONBOOT参数修改成yes,这样在系统重启后网卡就被激活了。

  1. [root@linuxprobe ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
  2. TYPE=Ethernet
  3. BOOTPROTO=none
  4. DEFROUTE=yes
  5. IPV4_FAILURE_FATAL=no
  6. IPV6INIT=yes
  7. IPV6_AUTOCONF=yes
  8. IPV6_DEFROUTE=yes
  9. IPV6_FAILURE_FATAL=no
  10. NAME=eno16777736
  11. UUID=ec77579b-2ced-481f-9c09-f562b321e268
  12. ONBOOT=yes
  13. IPADDR0=192.168.10.10
  14. HWADDR=00:0C:29:C4:A4:09
  15. PREFIX0=24
  16. IPV6_PEERDNS=yes
  17. IPV6_PEERROUTES=yes

当修改完Linux系统中的服务配置文件后,并不会对服务程序立即产生效果。要想让服务程序获取到最新的配置文件,需要手动重启相应的服务,之后就可以看到网络畅通了:

  1. [root@linuxprobe ~]# systemctl restart network
  2. [root@linuxprobe ~]# ping -c 4192.168.10.10
  3. PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
  4. 64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.056 ms
  5. 64 bytes from 192.168.10.10: icmp_seq=2 ttl=64 time=0.099 ms
  6. 64 bytes from 192.168.10.10: icmp_seq=3 ttl=64 time=0.095 ms
  7. 64 bytes from 192.168.10.10: icmp_seq=4 ttl=64 time=0.095 ms
  8. ---192.168.10.10 ping statistics ---
  9. 4 packets transmitted, 4 received, 0% packet loss, time 2999ms
  10. rtt min/avg/max/mdev = 0.056/0.086/0.099/0.018 ms

9.1.2 创建网络会话RHEL和CentOS系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态。可以使用nmcli命令来管理Network Manager服务。nmcli是一款基于命令行的网络配置工具,功能丰富,参数众多。它可以轻松地查看网络信息或网络状态:

  1. [root@linuxprobe ~]# nmcli connection show
  2. NAME UUID TYPE DEVICE
  3. eno16777736 ec77579b-2ced-481f-9c09-f562b321e268802-3-ethernet eno16777736
  4. [root@linuxprobe ~]# nmcli con show eno16777736
  5. connection.id: eno16777736
  6. connection.uuid: ec77579b-2ced-481f-9c09-f562b321e268
  7. connection.interface-name: --
  8. connection.type: 802-3-ethernet
  9. connection.autoconnect: yes
  10. connection.timestamp: 1487348994
  11. connection.read-only: no
  12. connection.permissions:
  13. connection.zone: --
  14. connection.master: --
  15. connection.slave-type: --
  16. connection.secondaries:
  17. connection.gateway-ping-timeout: 0
  18. ………………省略部分输出信息………………

另外,RHEL7系统支持网络会话功能,允许用户在多个配置文件中快速切换(非常类似于firewalld防火墙服务中的区域技术)。如果我们在公司网络中使用笔记本电脑时需要手动指定网络的IP地址,而回到家中则是使用DHCP自动分配IP地址。这就需要麻烦地频繁修改IP地址,但是使用了网络会话功能后一切就简单多了——只需在不同的使用环境中激活相应的网络会话,就可以实现网络配置信息的自动切换了。
可以使用nmcli命令并按照“connection add con-name type ifname”的格式来创建网络会话。假设将公司网络中的网络会话称之为company,将家庭网络中的网络会话称之为house,现在依次创建各自的网络会话。
使用con-name参数指定公司所使用的网络会话名称company,然后依次用ifname参数指定本机的网卡名称(千万要以实际环境为准,不要照抄书上的eno16777736),用autoconnect no参数设置该网络会话默认不被自动激活,以及用ip4及gw4参数手动指定网络的IP地址:

  1. [root@linuxprobe ~]# nmcli connection add con-name company ifname eno16777736
  2. autoconnect no type ethernet ip4192.168.10.10/24 gw4192.168.10.1
  3. Connection 'company' (86c71220-0057-419e-b615-38f4014cfdee) successfully added.

使用con-name参数指定家庭所使用的网络会话名称house。因为我们想从外部DHCP服务器自动获得IP地址,因此这里不需要进行手动指定。

  1. [root@linuxprobe ~]# nmcli connection add con-name house type ethernet ifname
  2. eno16777736
  3. Connection 'house' (44acf0a7-07e2-40b4-94ba-69ea973090fb) successfully added.

在成功创建网络会话后,可以使用nmcli命令查看创建的所有网络会话:

  1. [root@linuxprobe ~]# nmcli connection show
  2. NAME UUID TYPE DEVICE
  3. house 44acf0a7-07e2-40b4-94ba-69ea973090fb 802-3-ethernet --
  4. company 86c71220-0057-419e-b615-38f4014cfdee 802-3-ethernet --

使用nmcli命令配置过的网络会话是永久生效的,这样当我们下班回家后,顺手启用house网络会话,网卡就能自动通过DHCP获取到IP地址了。

  1. [root@linuxprobe ~]# nmcli connection up house
  2. Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/
  3. ActiveConnection/2)
  4. [root@linuxprobe ~]# ifconfig
  5. eno1677773628: flags=4163<UP, BROADCAST, RUNNING, MULTICAST> mtu 1500
  6. inet 192.168.100.128 netmask 255.255.255.0 broadcast 192.168.100.255
  7. inet6 fe80::20c:29ff:fec4:a409 prefixlen 64 scopeid 0x20<link>
  8. ether 00:0c:29:c4:a4:09 txqueuelen 1000 (Ethernet)
  9. RX packets 42 bytes 4198 (4.0 KiB)
  10. RX errors 0 dropped 0 overruns 0 frame 0
  11. TX packets 75 bytes 10441 (10.1 KiB)
  12. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  13. lo: flags=73<UP, LOOPBACK, RUNNING> mtu 65536
  14. inet 127.0.0.1 netmask 255.0.0.0
  15. inet6 ::1 prefixlen 128 scopeid 0x10<host>
  16. loop txqueuelen 0 (Local Loopback)
  17. RX packets 518 bytes 44080 (43.0 KiB)
  18. RX errors 0 dropped 0 overruns 0 frame 0
  19. TX packets 518 bytes 44080 (43.0 KiB)
  20. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

如果大家使用的是虚拟机,请把虚拟机系统的网卡(网络适配器)切换成桥接模式,如图9-9所示。然后重启虚拟机系统即可。


该分类下的相关小册推荐: