2.7. 联网

本小节总结了 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7 联网、网络协议支持以及相关配置工具的不同。

2.7.2. NetworkManager 更新

Red Hat Enterprise Linux 7 包含 NetworkManager 的更新版本,其中包含大量改进和一些新功能。
  • nmcli 工具现在支持使用 nmcli con editnmcli con modify 命令编辑连接。
  • 新的文本用户界面(nmtui)提供流畅的控制台工具进行网络配置编辑以及网络连接控制。它替换了 system-config-network-tui 工具。
  • 之前 NetworkManager 会忽略它无法识别的网络接口(以太网、Infiniband、WiFi、Bridge、Bond 和 VLAN 以外的接口)。NetworkManager 现在可以识别所有 ip link 使用的网络接口,并将这些接口展现在 D-Bus 接口以及类似 nmcli 的客户端中。这为 NetworkManager 提供更接近类似 ip 工具的功能。
  • NetworkManager 现在可非破坏性地获取可本机配置的接口所有权,比如以太网、InfiniBand、Bridge、Bond、VLAN 及 Team 接口。如果这些接口是在 NetworkManager 启动前或者重启时配置,则之前配置的连接就会被中断,就是说不再需要 NM_CONTROLLED 选项。
  • 支持检察网络连接性、热区以及门户。默认禁用这个行为。
  • 支持 team 界面。
  • 基本上可提供 GRE、macvlan、macvtap、tun、tap、veth 及 vxlan 设备的非本机支持。
  • 新的 NetworkManager-config-server 软件包默认提供服务器适应性,比如忽略容器变化,也不生成默认 DHCP 连接。
  • NetworkManager.conf 的新 dns=none 配置可防止 NetworkManager 修改 resolv.conf 文件。
  • 快速用户切换支持。
  • 除接口的 MAC 地址之外,支持将某个连接与接口锁定。
这个更新还改变了配置文件监控行为。NetworkManager 不再监控磁盘中配置文件的变化。反制,用户必须手动使用 nmcli con reload 命令重新载入配置文件的变化。

2.7.3. 新的网络命名方案

Red Hat Enterprise Linux 7 为网络接口提供一致的网络设备命名。这些功能可更改某个系统中的网络接口名称以方便定位和区分接口。
通常 Linux 中的网络接口以 eth[0123...] 方式列举,但这些命名不一定会与底盘实际标签对应。有多个网络适配器的现代服务器平台可遇到这些接口的不确定以及不直观的命名。这会影响主板内嵌网络适配器(板上局域网,LOM)和附加(单一或者多接口)适配器。
在 Red Hat Enterprise Linux 7 中,systemdudevd 支持大量不同的命名方案。默认行为是根据固件、拓扑及位置信息分配固定名称。这个命名方法的优点是完全自动且可预测,即使添加或者删除硬件也不会变化(未发生重新列举),且可以在不产生任何影响的情况下替换破坏的硬件。这个行为的缺点是名称有时比之前使用的名称难读,例如使用 enp5s0 替换 eth0
目前 udevd 本身就支持下列命名方案。
方案 1
合并固件或者 BIOS 的名称为板载设备提供索引号的名称,例如:eno1。如果固件信息适用且可用,则 systemd 默认情况下根据这个方案命名接口,同时使用方案 2 作为备选。
方案 2
合并固件或者 BIOS 的名称提供 PCI 快捷热插拔插槽索引号的名称,例如 ens1。如果固件信息适用且可用,则 systemd 默认情况下根据这个方案命名接口,同时使用方案 3 作为备选。
方案 3
合并硬件连接器物理位置的名称,例如:enp2s0。如果固件信息适用且可用,则 systemd 默认情况下根据这个方案命名接口,同时使用方案 5 作为备选。
方案 4
合并接口的 MAC 地址名称,例如:enx78e7d1ea46da。默认情况下 systemd 不会根据这个方案命名接口,但如果需要可以启用这个功能。
方案 5
传统的不可预测内核属性 ethX 命名,例如:eth0。如果其他所有方法都失败,systemd 就根据这个方案命名接口。
如果该系统启用了 BIOSDEVNAME,或者用户已添加更改内核设备名称的 udevd 规则,则这些规则将替代默认的 systemd 策略。
有关这个新命名系统的详情请查看《Red Hat Enterprise Linux 7 联网指南》网址 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/

2.7.4. 新联网程序(ncat)

Red Hat Enterprise Linux 7 使用新的联网程序 ncat 替代 ncatncat 是一个可靠的后台工具,可为其他应用程序和用户提供网络连接性。它使用命令行跨网络读取并写入输入数据,同时使用 TCP 和 UDP 进行沟通。
ncat 中的一些命令与最初由 netcat 提供的命令有所不同,或者使用同一选项提供不同的功能。下面的列表中列出了这些不同。
  • netcat -P 选项使用指定的用户名显示需要认证的代理服务器。这个行为的 ncat 选项是 --proxy-auth user[:pass]
  • 在与代理服务器沟通时,netcat -X 选项与联网程序使用指定的协议。这个行为的 ncat 选项为 --proxy-type
  • netcat -x 选项在联网程序中使用地址和可选端口连接代理服务器。这个行为的 ncat 选项为 --proxy,该选项使用 IP 地址和可选端口,比如:--proxy host[:port]
  • netcat -d 选项禁用从 stdin 读取。ncat -d 选项允许用户指定读或者写操作之间的等待时间。但 ncat 提供 --recv-only 选项,其行为与 netcat -d 类似。
  • netcat -i 选项指定发送和接受文本之间,或者到多个端口连接的行之间的间隔。ncat -i 选项指定连接超时并终止前可闲置的时间。ncat 中没有与 netcat -i 对等的选项。
  • netcat -w 指定连接超时并被终止前无法建立该连接的时间。ncat -w 选项指定超时前尝试连接的时间。
netcat 中的有些选项目前已无法在 ncat 中使用。ncat 目前不执行以下操作。
  • 启用在插槽中 debug(之前由 netcat -D 提供)。
  • 指定 TCP 发送及接受缓存的大小(之前由 netcat -Inetcat -O 提供)。
  • 指定随机选择的源或者目标端口(之前由 netcat -r 提供)。
  • 通过 TCP MD5 信号选项、RFC 2385 启用 BGP 会话保护(之前由 netcat -S 提供)。
  • 指定服务的 IPv4 类型(之前由 netcat -T 提供)。
  • 指定 UNIX 域插槽使用(之前由 netcat -U 提供)。
  • 指定要使用的路由表(之前由 netcat -V 提供)。
  • 不传输数据即进行侦听守护进程扫描。
  • 指定发送和接收文本行之间,或者到多个端口的连接之间的间隔。
ncat 程序由 nmap-ncat 软件包提供。有关 ncat 的详情请查看 man page:
$ man ncat

2.7.5. Postfix 的变化

Red Hat Enterprise Linux 7 将 postfix 从版本 2.6 升级为版本 2.10。同时在从 Red Hat Enterprise Linux 6 升级至 7 时,使用 Preupgrade Assistant(预升级助手)处理主要兼容性问题。用户会注意到以下非关键兼容性问题。
  • 使用 postscreen 守护进程前,确定已执行 postfix stoppostfix start 命令,以避免 pass 主要服务问题。
  • 不会在 *_tls_CAfile 或者 *_tls_CApath 列表中添加默认由系统提供的 CA 证书。这意味着使用 permit_tls_all_clientcerts 后,第三方证书不再收到邮件中继权限。如果您的配置要求证书验证,则可设置 tls_append_default_CA = yes 启用向后兼容行为。
  • verify 服务现在使用默认启用了定期清除的持久缓存。需要提供对删除和顺序运行的支持。要禁用该缓存,请在 main.cf 中指定空白的 address_verify_map 参数。要禁用定期清除行为,请将 address_verify_cache_cleanup_interval 设定为 0
  • 之前,会在未指定过滤下一个跃点时使用默认的下一个跃点,即 $myhostname。这个默认跃点现在是收件人域。要更改默认下一个跃点,请指定 default_filter_nexthop = $myhostname。在使用管道的过滤器中,还会启用 FIFO 传递顺序,而不是鲁棒域选择。
  • postmulti -e destroy 命令不再尝试移除执行 postmulti -e create 命令后生成的文件。
  • Postfix 现在要求在使用 Milter smfi_addrcpt 操作添加收件人时提供默认传送状态通知。
  • 现在,当所得虚拟别名扩展超过虚拟别名递归或扩展限制后,Postfix 会报告临时传送错误,而不是静默地放弃超出的收件人,并继续传递信息。
  • 现在,本地传递代理在向不拥有其自己别名的子别名发送邮件时会保留其父别名的 owner-alias 属性。这样就不会发生向邮件列表重复发送的情况。要启用原有的行为,请指定 reset_owner_alias = yes
  • 查找没有 "." 的 DNS 名称时,Postfix SMTP 客户端不会再添加本地域。要启用原有的行为,请指定 smtp_dns_resolver_options = res_defnames。注:这样可能会有意想不到的结果。
  • 已更改 postfix/smtpd[pid]: queueid: client=host[addr] 日志文件记录的格式。可用时,before-filter 客户端信息及 before-filter 序列 ID 现在都会添加到该记录的末尾。
  • 默认情况下,postfix 不再向没有指定收件人的信息之添加未披露的收件人标头。要启用原有行为,请在mail.cf 中指定以下内容:
    undisclosed_recipients_header = To: undisclosed-recipients:;
  • 现在,SASL 机制列表在每次成功完成 STARTTLS 后都会重新计算。
  • 现在,smtpd_starttls_timeout 默认值为 stress-dependent。
  • 现在,域名中附带 secret 的 DNSBL 查询必须在 postscreen SMTP 回复中隐藏那个 secret。例如:在 main.cf 中,请指定:
    postscreen_dnsbl_reply_map = texthash:/etc/postfix/dnsbl_reply
    dnsbl_reply 中指定不同的 DNSBL 名称:
    # Secret DNSBL name        Name in postscreen(8) replies
    secret.zen.spamhaus.org    zen.spamhaus.org
  • 所有使用 postfix VSTREAMs 的程序必须重新编码,因为 VSTREAM 错误现在使用不同的标签记录读取和写入错误。
  • 现在,smtp_line_length_limit 的默认值为 999,以保持与 SMTP 标准的统一。
  • 现在,Sendmail 将所有以 <CR><LF> 结尾的输入行转换为 UNIX 格式(<LF>)。
  • 默认情况下,SMTP 客户端不再为 MAIL FROM 命令添加 AUTH=<>
  • 有些之前分级为 fatal 的日志信息现在分级为 error。基于警报系统的日志文件可能需要进行相应的更新。要重新启用原有的行为,请将 daemon_table_open_error_is_fatal 设定 yes
  • 对于新支持的长查询文件名,在 Postfix 2.9 以前的版本中不支持此功能。要迁移会 Postfix 2.8 或更早的版本,则必须转换所有长的查询文件名称。方法是首先停止 postfix,将 enable_long_queue_ids 设定为 no,然后运行 postsuper 命令,知道不再导出查询文件名称变更。
  • 现在,Postfix 记录成功与 TLS 级 0 进行的 TLS 协商。详情请查看 postconf man page 中有关日志等级描述。
  • 现在,postfix SMTP 服务器总是检查 smtpd_sender_login_maps 表。
  • 现在,默认 inet_protocols 值为 all(同时使用 IPv4 和 IPv6)。为避免未使用全局 IPv6 连接站点的意外性能损失,目前在没有明确设置的情况下,会在 main.cf 中添加 make upgradepostfix upgrade-configuration 命令。
  • 现在,默认 smtp_address_preference 值为 any(随机选择 IPv4 或者 IPv6)。
  • SMTP 服务器不再报告拒绝客户端命令的会话,因为没有可用的查找表。要继续接收此类报告,请在 notify_classes 参数中添加 data 类别。
  • 已添加 smtpd_relay_restrictions 参数。默认情况下,这样会启用 permit_mynetworkspermit_sasl_authenticateddefer_unauth_destination。这样可防止由于错误使用 smtpd_recipient_restrictions 中垃圾邮件过滤器造成的开源中继问题。但如果您的站点使用 smtpd_recipient_restrictions 配置了复杂的邮件中继策略,则可能会错误地延迟某些邮件的发送。要纠正这个问题,可以删除 smtpd_relay_restrictions 配置并使用 smtpd_recipient_restrictions 中已有的策略,或者将 smtpd_recipient_restrictions 中已有的策略复制到 smtpd_relay_restrictions 中。

2.7.6. 网络协议

本小节总结了 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7 中网络协议的变化。

2.7.6.1. 网络文件系统(NFS)

Red Hat Enterprise Linux 7 提供 NFS 3、NFS 4.0 以及 NFS 4.1 支持。从 Red Hat Enterprise Linux 7 开始不再支持 NFS 2。
NFS 4.1 提供大量性能及安全性加强,其中包括平行 NFS(pNFS)的客户端支持。另外,独立 TCP 连接不再要求回叫,可允许 NFS 服务器在无法联络到客户端的情况下提供授权,例如:NAT 或者防火墙干扰。
该服务器支持 NFS 3、NFS 4.0 以及 NFS 4.1。可在 /etc/sysconfig/nfs 文件中启用或者禁用具体的版本,方法是更改 RPCNFSDARGS 参数值。例如:RPCNFSDARGS="-N4.1 -V3" 启用 NFS 3 支持,禁用 NFS 4.1 支持。详情请查看其 man page:
$ man rpc.nfsd
NFS 客户端默认会使用 NFS 4.0 挂载,如果挂载操作失败则返回使用 NFS 3。编辑 /etc/nfsmount.conf 并使用命令行可更改这个默认行为。详情请查看其 man page:
$ man nfs
$ man nfsmount.conf
2.7.6.1.1. 平行 NFS(pNFS)
Red Hat Enterprise Linux 7 提供平行 NFS(pNFS)支持。pNFS 提高了 NFS 的可扩展性,并有可能提高性能。当 Red Hat Enterprise Linux 7 客户端挂载支持 pNFS 的服务器时,该客户端可同时通过多个服务器访问数据。有关这个协议的详情及其功能请查看《Red Hat Enterprise Linux 7 存储管理指南》,网址 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/

2.7.6.2. Apache Web 服务器(httpd)

Red Hat Enterprise Linux 7 提供 Apache Web 服务器的更新版本。这个新版本(2.4)中包含一些明显的打包变化以及大量新功能。
更改代理服务器配置
如果 SSL 证书与配置的主机名不匹配,则使用 SSL 后端的 Apache 网页服务器(httpd)配置现在必须使用 SSLProxyCheckPeerName 指令。之前并不验证代理服务器后端 SSL 证书中的主机名。
新的控制机制
由于 Red Hat Enterprise Linux 不再使用 SysV 初始化脚本,因此用来控制 httpd 服务的命令也因此不同。Red Hat 现在建议您使用 apachectlsystemctl 命令,而不是 service 命令。例如:如果您之前使用 service httpd graceful,Red Hat 现在建议您使用 apachectl graceful
更改的默认子命令行为
httpdsystemd 单元文件为 reloadstop 子命令定义不同的行为。特别是 reload 子命令现在温和地重新载入该服务,同时 stop 现在也默认温和地停止该服务。
硬编码默认配置
httpd 之前的版本提供详尽的配置文件,列出所有配置设置及其默认值。在默认配置文件中很多常用配置设置已不再特别进行配置,现在默认设置已采用硬编码。现在默认配置文件尽量采用较少的内容,结果是更容易进行管理。手册中给出了所有设置的硬编码默认值,该手册默认是按照在 /usr/share/httpd 中。
新的多进程模型模块
Red Hat Enterprise Linux 之前的发行本提供几个多进程模型(preforkworker)作为不同的 httpd 二进制库。Red Hat Enterprise Linux 7 使用单一二进制库并将这些多进程模型作为可载入模块提供:workerprefork(默认)以及 event。编辑 /etc/httpd/conf.modules.d/00-mpm.conf 文件选择要载入的模块。
目录变化
在这个 httpd 的这个更新后的版本中移走了很多目录,或者以后都不再提供。
  • 之前安装在 /var/cache/mod_proxy 中的内容已移动到 /var/cache/httpdproxy 或者 ssl 子目录下。
  • 之前安装在 /var/www 中的内容已移动到 /usr/share/httpd 中。
  • 之前安装在 /var/www/icons 中的内容已移动到 /usr/share/httpd/icons 中。这个目录包含一组用于设定目录索引的图标。
  • httpd 手册的 HTML 版面之前安装在 /var/www/manual 中,现已移动到 /usr/share/httpd/manual 中。
  • 自定义多语言 HTTP 出错页面之前是安装在 /var/www/error 中,现已移动到 /usr/share/httpd/error 中。
suexec 的变化
不再将 suexec 二进制项目的用户标识符在安装时设定为 root,而是使用文件系统功能字节应用更具限制性的权限。这样可提高 httpd 服务的安全性。另外,suexec 现在会向 syslog 发送日志信息,而不是使用 /var/log/httpd/suexec.log 文件记录。默认在 /var/log/secure 文件中显示发送到 syslog 的信息。
模块接口兼容性的变化
更改 httpd 模块接口意味着 httpd 的这个更新后的版本与根据 httpd 之前版本(2.2)构建的第三方二进制模块不兼容。此类模块需要为 httpd 2.4 模块接口进行必要的调整,并重新构建。版本 2.4 中的 API 变化详情请查看 Apache 文档。
apxs 二进制库位置的变化
用来使用源构建模块的 apxs 二进制库已从 /usr/sbin/apxs 移动到 /usr/bin/apxs
新的以及移走的配置文件
载入模块的配置文件现已放在 /etc/httpd/conf.modules.d 目录中。为 httpd 提供附加可载入模块的软件包(比如 php 软件包)将文件添加到这个目录中。conf.modules.d 目录中的所有配置文件都在 httpd.conf 正文前进行处理。/etc/httpd/conf.d 中的配置文件现在都在 httpd.conf 正文后进行处理。
httpd 软件包提供的附加配置文件:
  • /etc/httpd/conf.d/autoindex.conf 配置 mod_autoindex 目录索引。
  • /etc/httpd/conf.d/userdir.conf 配置对用户目录(http://example.com/~username/)的访问。默认情况下处于安全考虑会禁用长个访问。
  • /etc/httpd/conf.d/welcome.conf 配置在没有出现任何内容时在 http://localhost/ 显示的“欢迎页面”。
配置兼容性变化
httpd 的这个版本与之前的版本(2.2)的配置语法兼容。配置文件需要在可以与这个更新后的 httpd 版本合用前更新语法。有关版本 2.2 与版本 2.4 之间语法变化的详情请查看 Apache 文档。

2.7.6.3. Samba

Red Hat Enterprise Linux 7 提供 Samba 4,它是一个守护进程、客户端程序以及 Pythong 捆绑的组合,允许使用 SMB1、SMB2 和 SMB3 协议进行沟通。
目前采用的 Kerberos 不支持 Samba 4 Active Diretory Domain Controller 功能。Red Hat Enterprise Linux 7.0 省略了这个功能,但可能在未来的版本中包含此功能。仍保留了其他不依赖 Active Directory DC 的功能。
Red Hat Enterprise Linux 6.4 以及之后的版本提供 Samba 4 作为技术预览,并将其打包在一组 samba4-* 软件包中以避免与稳定的 Samba 3 软件包(samba-*)冲突。因为现在全面支持 Samba 4,并提供大量优于 Samba 3 的功能,Red Hat Enterprise Linux 7 将 Samba 4 作为标准 samba-* 软件包提供。特殊的 samba4-* 软件包已被弃用。
有关 Samba 的详情请查看《Red Hat Enterprise Linux 7 系统管理员指南》《系统管理员参考指南》,网址 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/

2.7.6.4. BIND

在 Red Hat Enterprise Linux 6 中,安装 bind-chroot 软件包会改变 /etc/sysconfig/named 中的 ROOTDIR 环境变量,使其指向 chroot 环境位置。要运行通常要求的 named 服务(不是在 chroot 环境中),可删除 bind-chroot 软件包,或手动编辑 /etc/sysconfig/named 文件中的 ROOTDIR 环境。
在 Red Hat Enterprise Linux 7 中,安装 bind-chroot 软件包不会改变 named 服务的运行方式。反之,它会安装一个新服务 named-chroot,可使用 systemctl 命令单独启动和停止该服务,如下。
# systemctl start named-chroot.service
# systemctl stop named-chroot.service
named-chroot 服务不能与 named 服务同时运行。

为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。