2.7. 网络
本小节概述了 Red Hat Enterprise Linux 6 和 Red Hat Enterprise Linux 7 之间的网络、网络协议支持和相关配置工具的更改。
2.7.1. 推荐的命名实践
主机名可以是最多 64 个字符的、任何格式的字符串。但是,红帽建议静态名称和临时名称与 DNS 中用于机器的完全限定域名(FQDN)匹配,如 host.example.com
。hostnamectl 工具允许最多 64 个字符的静态和临时主机名,包括 a-z、A-Z、0-9、-
和。
在当前规格中,允许使用下划线。但是,由于旧的规格不允许使用它,因此红帽不推荐在主机名中使用下划线。
用于分配名称和编号的互联网公司有时会将之前未注册的顶级域(如 .yourcompany
)添加到公共寄存器。因此,红帽强烈建议您不要使用没有委托给您的域名,即使在私有网络中。因为这可能会导致根据网络配置的不同,解析的域名会有所不同。因此,网络资源可能会不可用。使用未委托给您的域名也使得 DNSSEC 更难以部署和维护,因为域名冲突会导致需要手动配置 DNSSEC 验证。
有关此问题的详情,请参阅 ICANN 有关域名冲突的 FAQ。
2.7.2. NetworkManager 更新
Red Hat Enterprise Linux 7 包括了一个 NetworkManager 的更新版本,它提供了很多改进和一些新功能。
-
nmcli 工具现在支持使用
nmcli con edit
和nmcli con modify
命令编辑连接。 - 新的基于文本的用户界面(nmtui)提供了基于控制台的简化工具来编辑网络配置和控制网络连接。它用于替代 system-config-network-tui 工具。
-
在以前的版本中,NetworkManager 会忽略它无法识别的网络接口(以太网、Infiniband、WiFi、Bridge、Bond 和 VLAN 以外的接口)。NetworkManager 现在识别由
ip 链接
获取的任何网络接口,并通过 D-Bus 接口和 nmcli 等客户端公开这些接口。这可让 NetworkManager 更接近 ip 等工具。 -
NetworkManager 现在可以以一个非破坏性的方式,获得它可以原生配置的接口(如以太网、InfiniBand、Bridge、Bond、VLAN 和团队接口)的所有权。如果在 NetworkManager 启动或重启前配置了这些接口,则之前配置的连接不会中断。这意味着不再需要
NM_CONTROLLED
选项。 - 支持检查网络连接、热点和门户。默认禁用此行为。
- 支持团队接口。
- 对 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…]
,但这些名称不一定与机箱上的实际标签对应。具有多个网络适配器的现代服务器平台,可能会遇到这些接口的命名不明确的情况。这会影响在主板上嵌入的网络适配器(Lan-on-Motherboard 或 LOM)和附加(单一和多端口)适配器。
在 Red Hat Enterprise Linux 7 中,systemd 和 udevd 支持很多不同的命名方案。默认行为是根据固件、拓扑和位置信息分配固定名称。它具有完全自动且完全可预测的名称的优点。即使添加或删除硬件(不会重新定义),并且有问题的硬件可以被无缝地替换,仍然可以保持固定的名称。这个行为的缺点是,名称有时比之前使用的名称更难于读,例如,enp5s0
代替 eth0
。
udevd 现在原生支持以下网络接口命名方案。
- 方案 1
-
使用固件或 BIOS 为板上设备提供的索引号,例如
eno1
。如果来自固件的信息可用,则默认情况下systemd 会使用这个方案命名接口,方案 2 作为一个备用方案。
- 方案 2
-
使用固件或 BIOS 提供的 PCI Express 热插槽索引号命名,例如
ens1
。如果来自固件的信息可用,则默认情况下systemd 会使用这个方案命名接口,方案 3 作为一个备用方案。
- 方案 3
-
使用硬件连接器的物理位置命名,例如
enp2s0
。如果来自固件的信息可用,则默认情况下systemd 会使用这个方案命名接口,方案 5 作为一个备用方案。
- 方案 4
-
使用 MAC 地址进行命名,例如
enx78e7d1ea46da
。默认情况下,systemd 不会根据这个方案命名接口,但在需要时可以启用它。
- 方案 5
-
传统的无法预计的内核原生 ethX 命名,如
eth0
。如果所有其他方法都失败,则systemd 根据这个方案进行接口命名。
如果系统启用了 BIOSDEVNAME
,或者用户添加了更改内核设备名称的 udevd 规则,则这些规则优先于默认的 systemd 策略。
有关此新命名系统的详情,请查看 网络指南。
2.7.4. 新的网络工具程序(ncat)
在 Red Hat Enterprise Linux 7 中使用一个新的网络工具程序 ncat 替换 netcat。ncat 是一个可靠的后端工具,它为其他应用程序和用户提供网络连接。它从命令行读取和写入数据,并使用 TCP 和 UDP 进行通信。
ncat 中的一些命令与之前由 netcat 提供的命令不同,或者使用相同的选项但提供的功能有所不同。这些区别在以下列表中概述。
-
netcat -P
选项使用指定的用户名来提供给需要身份验证的代理服务器。这个行为的 ncat 选项是--proxy-auth 用户 [: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 目前无法执行以下操作。
-
在 socket 上启用调试(以前由
netcat -D
提供)。 -
指定 TCP 发送和接收缓冲区的大小(以前由
netcat -I
和netcat -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 stop
和postfix start
命令,以避免通过
master 服务出现问题。 -
默认由系统提供的 CA 证书不再添加到
*_tls_CAfile
或*_tls_CApath
列表中。这意味着使用 allow_tls_all_clientcerts
时第三方证书不再接收邮件中继权限。如果您的配置需要证书验证,请通过设置tls_append_default_CA = yes
来启用向后兼容的行为。 -
验证
服务现在使用默认启用定期清理的持久缓存。需要支持 delete 和 sequence 操作。要禁用缓存,在main.cf
中指定一个空白address_verify_map
参数。要禁用定期清理,将address_verify_cache_cleanup_interval
设置为0。
-
在以前的版本中,当过滤的 next-hop 目的地没有指定时,使用默认的 next-hop 目的地是
$myhostname
的值。现在默认是接收者域。要更改默认的 next-hop 目的地,请指定default_filter_nexthop = $myhostname
。在基于 pipe 的过滤中,这也启用了 FIFO 发送顺序,而不是使用 round-robin 域选择。 -
postmulti -e destroy
命令不再尝试删除执行postmulti -e create
命令后创建的文件。 -
现在,当添加带有 Milter
smfi_addrcpt
操作的接收者时,Postfix 会请求默认的发送状态通知。 - 当虚拟别名扩展超过虚拟别名递归或扩展限制时,Postfix 现在报告临时发送错误,而不是静默丢弃过量收件人并传递邮件。
-
现在,当向一个没有 owner-alias 的子别名发送邮件时,本地发送代理会保留父别名的 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:;
-
现在,在每次成功完成
STARTTLS
后,SASL 机制列表会被重新计算。 -
smtpd_starttls_timeout
默认值现在依赖于压力。 DNSBL 查询域名中带有 secret 的 DNSBL 查询现在必须从创建后 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&
gt; 结尾的所有输入行转换为 UNIX 格式(<LF>
)。 -
默认情况下,SMTP 客户端不再将
AUTH=<>
附加到MAIL FROM
命令。 -
有些之前归类为
致命
的日志消息现在被归类为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 连接的站点出现意外的性能损失,在不存在显式设置时,进行
postfix upgrade-configuration
命令当前会将inet_protocols = ipv4
附加到main.cf
。 -
默认的
smtp_address_preference
值现在是任意的
(随机选择 IPv4 或 IPv6)。 -
SMTP 服务器不再报告因为查询表不可用而拒绝客户端命令的会话记录。要继续接收这样的报告,请将
data
类添加到notify_classes
参数的值中。 -
添加了一个新的
smtpd_relay_restrictions
参数。默认情况下,这启用了allow_mynetworks
、allow_sasl_authenticated
和defer_unauth_destination
。这可防止因为smtpd_recipient_restrictions
中的 spam 过滤规则出错而打开转发问题。但是,如果您的站点在smtpd_recipient_restrict
ion 下配置了复杂的邮件转发策略,则可能会错误地延迟一些邮件。要修正它,可以删除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 提供了很多性能和安全增强,包括对 Parallel NFS(pNFS)的客户端支持。另外,回调不再需要单独的 TCP 连接,允许 NFS 服务器授权委派,即使它无法联系客户端,例如:当 NAT 或防火墙干扰时。
服务器支持 NFS 3、NFS 4.0 和 NFS 4.1。通过更改 RPCNFSDARGS
参数的值,可以在 /etc/sysconfig/nfs
文件中启用或禁用对特定版本的支持。例如,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 为 Parallel NFS(pNFS)提供客户端支持。pNFS 提高了 NFS 的可扩展性并可能提高性能。当 Red Hat Enterprise Linux 7 客户端挂载支持 pNFS 的服务器时,该客户端可以同时通过多个服务器访问数据。请注意,Red Hat Enterprise Linux 7 支持文件布局类型,对象和块布局类型作为技术预览包含。有关此协议及其功能的更多信息,请参阅 存储管理指南。
2.7.6.2. Apache Web 服务器(httpd)
Red Hat Enterprise Linux 7 提供 Apache Web Server 的更新版本。此新版本(2.4)包括一些重要的打包更改,以及许多新功能。
- 更改了代理配置
-
使用 SSL 后端的 Apache Web 服务器(
httpd
)配置现在必须使用SSLProxyCheckPeerName
指令,如果 SSL 证书与配置的主机名不匹配。在以前的版本中,不会验证代理后端的 SSL 证书中的主机名。
- 新的控制机制
-
因为 Red Hat Enterprise Linux 将系统从 SysV init 脚本中移出,所以控制
httpd
服务的命令已更改。红帽现在推荐使用apachectl
和systemctl
命令而不是service
命令。例如,如果您之前运行了service httpd 安全
,红帽现在推荐使用apachectl graceful
。
- 更改了默认子命令的行为
-
httpd 的
systemd
单元文件定义了reload
和stop
子命令的不同行为。具体来说,reload
子命令现在会正常重新加载该服务,stop
命令现在默认正常停止该服务。
- 硬编码的默认配置
-
以前的 httpd 版本提供了一个完整的配置文件,它列出了所有配置设置及其默认值。现在,一些常见的配置设置不再在默认配置文件中明确配置,而是默认设置是硬编码的。现在,默认配置文件具有最少的内容,因此更易于管理。所有设置的硬编码默认值都在手册中指定,默认情况下会安装到
/usr/share/httpd
中。
- 新的多功能模型模块
-
以前的 Red Hat Enterprise Linux 版本提供了几个多功能模型(fork 和
worker
)作为不同的 httpd 二进制文件。Red Hat Enterprise Linux 7 使用单一二进制文件,并提供这些多处理模型作为可加载模块:
worker
、prefork
(default)和事件
。编辑/etc/httpd/conf.modules.d/00-mpm.conf
文件,以选择载入哪个模块。
- 目录更改
在这个更新版本中,大量目录已移动或 不再提供。
-
以前在
/var/cache/mod_proxy
中安装的内容已移到proxy
或ssl
子目录下的/var/cache/httpd
。 -
之前在
/var/www
中安装的内容已移至/usr/share/httpd
。 -
之前在
/var/www/icons
中安装的内容已移至/usr/share/httpd/icons
。该目录包含与目录索引搭配使用的一组图标。 -
之前在
/var/www/manual
中安装的 httpd 手册的 HTML 版本已移至/usr/share/httpd/manual
。 -
之前在
/var/www/error
中安装的自定义多语言 HTTP 错误页面已移至/usr/share/httpd/error
。
-
以前在
- 对 suexec 的更改
-
suexec
二进制文件在安装时将用户标识符设置为 root。相反,使用文件系统功能位应用一组限制的权限集。这提高了 httpd 服务的安全性。另外,suexec 现在会向 syslog 发送日志信息,而不是使用/var/log/httpd/suexec.log
文件。默认情况下,发送到 syslog 的信息会出现在
/var/log/secure
中。
- 更改了模块接口兼容性
- 对 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/ 中显示的"welcome page"。
-
- 更改配置兼容性
- 此版本的 httpd 与之前版本(2.2)的配置语法不兼容。在与 httpd 的这个更新版本搭配使用时需要配置文件来更新相关的语法。有关版本 2.2 和版本 2.4 之间的语法变化的详情,请查看 Apache 文档。
2.7.6.3. Samba
Red Hat Enterprise Linux 7 提供 Samba 4。它是一组守护进程、客户端实用程序和 Python 绑定,允许使用 SMB1、SMB2 和 SMB3 协议进行通信。
Kerberos 的当前实现不支持 Samba 4 Active Directory 域控制器功能。这个功能没有包括在 Red Hat Enterprise Linux 7.0 中,但预计会包含在以后的版本中。包括了不依赖于 Active Directory DC 的所有其他功能。
Red Hat Enterprise Linux 6.4 及之后的版本提供了 Samba 4 作为技术预览,并将其打包为一系列 [package]*samba4- 软件包, 以避免与稳定的 Samba 3 软件包([package]*samba- )冲突。由于 Samba 4 现在被完全支持,并提供了多个对 Samba 3 的改进,Red Hat Enterprise Linux 7 提供 Samba 4 作为标准 [package]*samba- 软件包。特殊 [package]*samba4- 软件包已过时。
有关 Samba 的详情,请查看 系统管理员指南。
2.7.6.4. BIND
在 Red Hat Enterprise Linux 6 中,安装 bind-chroot 软件包更改了 /etc/sysconfig/named
中的 ROOTDIR
环境变量,以指向 chroot 环境位置。要正常运行 指定服务
(不在 chroot 环境中),需要删除 bind-chroot 软件包或在 /etc/sysconfig/named
文件中手动编辑 ROOTDIR
环境变量。
在 Red Hat Enterprise Linux 7 中,安装 bind-chroot 软件包不会改变 named
服务的运行方式。相反,它会安装 一个名为-chroot
的新服务,该服务通过 systemctl
命令单独启动和停止,例如:
# systemctl start named-chroot.service
# systemctl stop named-chroot.service
服务不能与指定服务同时运行。
named
-chroot
2.7.7. 默认产品证书
从 Red Hat Enterprise Linux 7.2 版本开始,已将默认证书添加到 redhat-release 软件包中。此默认证书保存在 /etc/pki/product-default/
目录中。
Subscription Manager 现在会在 /etc/pki/product/
目录中搜索证书列表,然后在 /etc/pki/product-default/
目录中搜索证书列表。/etc/pki/product-default/
目录中的内容由 redhat-release 软件包提供。/etc/pki/product-default/
目录中的任何证书都被视为安装 /etc/pki/product/
目录中。默认产品证书在 Subscription Manager 从订阅的频道获取产品证书前使用。