您需要某种方式让您网络上的计算机通过名称互相引用,也需要某种方式让外部世界的人们通过名称引用您暴露的主机。 有几种方法可以实现这一点。
[ 注意:如果您选择不实施私有网络,请转到 完全暴露网络,由 ISP 托管 部分。]
在此配置中,您已将域名上的主要 DNS 权威的责任委托给 ISP。当私有网络中的主机想要相互通信时,您仍然在私有网络中使用 DNS。您已向 ISP 提供了所有暴露主机的名称和 IP 地址列表。如果您希望一个外部可见的机器(例如 betty.example.com)同时充当 Web 和 FTP 服务器,您应该要求 ISP 为 www.example.com 和 ftp.example.com 创建指向 betty.example.com 的 CNAME 条目。
在您的私有网络网关机器上设置 DNS。 这可以安全地完成,并且如果您以后决定托管域的主要 DNS 权威,则可以更轻松地升级。
我将假设您已决定从 dns.example.com 机器托管 DNS,该机器位于私有网络网关上,并且是 192.168.1.1 上的 fred.example.com 的别名。如果情况并非如此,则必须对此配置进行一些小的修改。除非有浓厚的兴趣,否则我不会在本 HOWTO 中介绍这一点。
您将必须下载并编译最新版本的 BIND,Berkeley Internet Name Domain。它可以在 BIND 网站 上找到。接下来,您必须配置守护程序。创建以下文件,/etc/named.conf
options {
directory "/var/named";
listen-on { 192.168.1.1 };
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
zone "1.168.192.in-addr.arpa" {
type master;
file "pz/1.168.192";
};
zone "example.com" {
type master;
notify no;
file "pz/example.com";
};
请注意,我们声明自己是 example.com 域的主服务器。同时,我们的 ISP 也声明自己是同一域的主服务器。这不是问题,只要您小心设置即可。私有网络上的所有机器都必须使用 dns.example.com 来执行其名称解析。它们不得使用 ISP 的名称解析器,因为 ISP 名称服务器认为自己对您的整个域具有权威性,但它不知道您私有网络上任何机器的 IP 地址或名称。同样,您域中暴露的 IP 地址上的主机必须使用 ISP 名称服务器,而不是 dns.example.com 上的私有名称服务器。
现在必须创建 /var/named
下的各种文件。
root.hints
文件与 BIND 文档或 DNS HOWTO 中描述的完全相同。在撰写本文时,以下是一个有效的 root.hints 文件
H.ROOT-SERVERS.NET. 6d15h26m24s IN A 128.63.2.53
C.ROOT-SERVERS.NET. 6d15h26m24s IN A 192.33.4.12
G.ROOT-SERVERS.NET. 6d15h26m24s IN A 192.112.36.4
F.ROOT-SERVERS.NET. 6d15h26m24s IN A 192.5.5.241
B.ROOT-SERVERS.NET. 6d15h26m24s IN A 128.9.0.107
J.ROOT-SERVERS.NET. 6d15h26m24s IN A 198.41.0.10
K.ROOT-SERVERS.NET. 6d15h26m24s IN A 193.0.14.129
L.ROOT-SERVERS.NET. 6d15h26m24s IN A 198.32.64.12
M.ROOT-SERVERS.NET. 6d15h26m24s IN A 202.12.27.33
I.ROOT-SERVERS.NET. 6d15h26m24s IN A 192.36.148.17
E.ROOT-SERVERS.NET. 6d15h26m24s IN A 192.203.230.10
D.ROOT-SERVERS.NET. 6d15h26m24s IN A 128.8.10.90
A.ROOT-SERVERS.NET. 6d15h26m24s IN A 198.41.0.4
pz/127.0.0
文件如下所示
$TTL 86400
@ IN SOA example.com. root.example.com. (
1 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
NS dns.example.com.
1 PTR localhost.
pz/1.168.192
文件如下所示
$TTL 86400
@ IN SOA dns.example.com. root.dns.example.com. (
1 ; Serial
8H ; Refresh 8 hours
2H ; Retry 2 hours
1W ; Expire 1 week
1D ; Minimum 1 day
)
NS dns.example.com.
1 PTR fred.example.com.
PTR dns.example.com.
PTR mail.example.com.
2 PTR barney.example.com.
3 PTR wilma.example.com.
依此类推,您为私有网络上具有接口的每台机器创建一个 PTR 记录。在此示例中,fred.example.com 的 IP 地址为 192.168.1.1,并由 dns.example.com 和 mail.example.com 别名指向。机器 barney.example.com 的 IP 地址为 192.168.1.2,依此类推。
pz/example.com
文件如下所示
$TTL 86400
@ IN SOA example.com. root.dns.example.com. (
1 ; Serial
8H ; Refresh 8 hours
2H ; Retry 2 hours
1W ; Expire 1 week
1D ; Minimum 1 day
)
NS dns.example.com.
IN A 192.168.1.1
IN MX 10 mail.example.com.
IN MX 20 <ISP mail machine IP>.
localhost A 127.0.0.1
fred A 192.168.1.1
A 10.1.1.9
dns CNAME fred
mail CNAME fred
barney A 192.168.1.2
wilma A 192.168.1.3
betty A 10.1.1.10
www CNAME betty
ftp CNAME betty
请注意,我们为私有网络内部和外部 IP 上的机器都创建了条目,因为私有网络中的机器不会向 ISP 的名称服务器查询例如 betty.example.com 的请求。我们还为 fred 提供了两个 IP 地址,私有和外部 IP 地址。
/etc/named.conf
的“options”部分中的一行值得讨论
listen-on { 192.168.1.1 };
这将阻止您的 named 守护程序在外部接口上回答 DNS 请求(来自外部的所有请求都必须通过 ISP 的名称解析器,而不是您的解析器)。
[ 注意:如果您选择不实施私有网络,请转到 完全暴露网络,由 ISP 托管 部分。]
在此配置中,您已确定您的私有网络相当小且不太可能经常更改。您已决定不使用 DNS 服务器的集中式数据库,而是单独维护每台机器上的主机解析。所有机器都应使用 ISP 的 DNS 服务器来解析超出私有网络网关的主机名。对于私有网络上的名称解析,必须创建主机表。对于 Linux,这意味着将私有网络上所有机器的名称和 IP 地址输入到每台机器上的 /etc/hosts
中。每当添加新机器或更改名称或 IP 地址时,都必须在每个 Linux 框上更新此文件。
与 私有网络上的 DNS 解析,ISP 处理域名 部分一样,必须将暴露的 IP 地址上的主机名列表发送给 ISP,并且应指定任何别名(例如 www 和 ftp 名称),以便 ISP 可以创建 CNAME 条目。
虽然您可以在暴露的主机上设置 named 解析,并在私有网络上设置私有数据库解析,但我不会介绍这种情况。如果您要为一个服务运行 named,您真的应该为两者都运行它,只是为了简化配置。在本节中,我将假设私有网络网关机器正在处理私有网络和外部请求的名称解析。
在撰写本文时,在 BIND 软件包的 8.2.2 版本下,named 守护程序无法根据请求到达的接口生成不同的答案。我们希望名称解析的行为有所不同,如果查询来自外部世界,因为私有网络上的 IP 地址不应发送出去,但必须在回答来自私有网络内部的请求时可用。有人讨论过一个新的“views”关键字,该关键字可能会添加到 BIND 中以满足以后的需求,但在那之前,解决方案是运行两个配置不同的 named 守护程序。
首先,按照 私有网络上的 DNS 解析,ISP 处理域名 部分中的描述设置私有网络域名服务器。这将是从您的私有网络内部可见的名称解析器。
接下来,您必须为您的域设置 DNS,使其对外部世界的主机可见。首先,与您的提供商联系,看看他们是否会将您的 IP 地址的反向查找委派给他们。虽然原始 DNS 标准没有考虑到控制小于 C 类网络的子网上的反向 DNS 的可能性,但已开发出一种适用于所有兼容 DNS 客户端的解决方法,并在 RFC 2317 中进行了概述。如果您的提供商愿意委派对您的 IP 块上的反向 DNS 的控制权,您将必须从他们那里确定他们选择委派的 in-addr 伪域的确切名称(RFC 没有为日常使用推荐的约定),并且您将必须注册对该伪域的控制权。我将假设提供商已将控制权委派给您,并且伪域的名称为 8.1.1.10.in-addr.arpa。提供商将创建以下形式的 CNAME 条目
8.1.1.10.in-addr.arpa. 2H IN CNAME 8.8.1.1.10.in-addr.arpa.
9.1.1.10.in-addr.arpa. 2H IN CNAME 9.8.1.1.10.in-addr.arpa.
10.1.1.10.in-addr.arpa. 2H IN CNAME 10.8.1.1.10.in-addr.arpa.
etc.
在其 1.1.10.in-addr.arpa 域的区域文件中。您的 8.1.1.10.in-addr.arpa 区域文件的配置将在本节稍后给出。
如果您的提供商愿意委派对反向 DNS 的控制权给您,他们将在其反向 DNS 区域表中为那些您控制的 IP 地址创建 CNAME 条目,指向您的伪域中的相应记录,如上所示。如果他们不愿意委派控制权给您,您将必须要求他们在您添加、删除或更改域中外部可见的主机的名称时更新其反向 DNS 条目。如果反向 DNS 表与您的正向 DNS 条目不同步,则某些服务可能会生成警告,或者拒绝处理受不匹配影响的机器发出的请求。
您现在必须创建第二个 named 设置,这次是处理私有网络网关外部的机器发出的请求。此设置仅列出那些外部可见的主机和 IP 地址,并且仅响应私有网络网关机器的外部接口上的请求。
首先,创建一个辅助配置文件,例如 /etc/named.ext.conf
,用于来自外部接口的请求。在我们的示例中,它可能如下所示
options {
directory "/var/named";
listen-on { 10.1.1.9; };
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
zone "8.1.1.10.in-addr.arpa" {
type master;
file "ext/8.1.1.10";
};
zone "example.com" {
type master;
notify no;
file "ext/example.com";
};
/var/named
下的 root.hints
和 pz/127.0.0
文件与另一个正在运行的守护程序共享。文件 ext/8.1.1.10
如下所示
$TTL 86400
@ IN SOA fred.example.com. root.fred.example.com. (
1 ; Serial
10800 ; Refresh 3 hours
3600 ; Retry 1 hour
3600000 ; Expire 1000 hours
86400 ) ; Minimum 24 hours
NS dns.example.com.
9 IN PTR fred.example.com.
PTR dns.example.com.
PTR mail.example.com.
10 IN PTR betty.example.com.
PTR www.example.com.
PTR ftp.example.com.
文件 ext/example.com
包含以下内容
$TTL 86400
@ IN SOA example.com. root.fred.example.com. (
10021 ; Serial
8H ; Refresh 8 hours
2H ; Retry 2 hours
1W ; Expire 1 week
1D ; Minimum 1 day
)
NS fred.example.com.
IN A 10.1.1.9
IN MX 10 mail.example.com.
IN MX 20 <ISP Mail Machine>.
localhost A 127.0.0.1
fred A 10.1.1.9
betty A 10.1.1.10
dns CNAME fred
mail CNAME fred
www CNAME betty
ftp CNAME betty
在私有网络网关机器上启动两个守护程序。将以下内容放入您的网络守护程序初始化脚本中
/usr/sbin/named -u dnsuser -g dnsgroup /etc/named.conf
/usr/sbin/named -u dnsuser -g dnsgroup /etc/named.ext.conf
我在这里假设您已创建了非特权用户“dnsuser”和相应的非特权组“dnsgroup”。如果 bind 中出现错误,允许攻击者从 named 内部执行代码,则攻击者会发现自己仅限于非特权用户可用的操作。/var/named
目录和其中的文件不应由“dnsuser”写入。
私有网络上的机器必须将其名称解析配置为询问 dns.example.com(在我们的示例中为 IP 192.168.1.1),而外部可见的机器可以查询网络网关的外部接口(在我们的示例中为 IP 10.1.1.9)或 ISP 的 DNS 服务器。
在此配置中,您已选择暴露所有主机。您的域中的每台机器都有一个真实的 IP 地址,并且您已向 ISP 提供了机器名称和 IP 地址列表。ISP 已为您提供了至少一个 IP 地址作为其 DNS 主机。您的 Linux 框现在已在 /etc/resolv.conf 中配置了名称解析
search example.com
nameserver <DNS host 1>
nameserver <DNS host 2>
Windows 框在网络设置对话框中使用相同的参数进行配置。
如果您决定将您的域名移动到新的 IP 地址,无论是由于您必须更改 ISP,还是由于您更改了服务的某些细节,需要您从同一 ISP 移动到新的 IP 地址,您都必须在移动之前做一些准备。
您希望设置好一切,以便外部世界的 DNS 查找获取的 IP 地址在您移动之前正确地指向原始 IP 地址,然后在您移动之后快速指向新的 IP 地址。远程站点可能已缓存了您的 IP 地址,并且后续查询可能会从本地缓存中本地应答,而不是查询相应的服务器。这可能会导致最近访问过您网站的人无法连接,而新访问者没有问题,因为只有新访问者才能获得有效的未缓存数据。更复杂的是,根级服务器每天只更新两次,因此很难在根服务器中定时更改主 DNS 服务器和辅助 DNS 服务器的身份。
进行转换的最简单方法可能是复制整个站点,或者至少是其公共可见的组件,到新的 IP 地址上,提交更改,然后等待流量完全转移到新的 IP 地址。但这可能不是很实用。
您首先应该做的是与您的新 ISP(或者如果您只是在单个 ISP 内更改 IP 地址,则与您当前的 ISP)安排在转换期间托管主 DNS 和辅助 DNS。这应该在移动前至少一天完成。要求他们将此记录的 TTL 设置为适当的小值(例如,五分钟)。本节前面给出的示例 DNS 文件都将 TTL 值设置为 86400 秒(1 天)。如果您的 TTL 比这更长,您将必须提前更多地安排更改。最终,这是您必须实现的。如果您当前的域信息 TTL 为 N 小时,则以下事项必须在移动前 N 小时以上完成
现在,您已准备好进行移动。将您的机器移动到新的 IP 地址。将此与 ISP 上 DNS 记录的更新同步,以指向新地址。在五分钟内(您为移动设置的小 TTL),流量应已切换到新站点。您现在可以根据自己的喜好重新安排 DNS 权威,如果您希望自己成为主权威,则可以将 TTL 恢复为合理的大值。
设置名称解析 部分中描述的配置具有指向机器“mail.example.com”的 MX 记录。具有最低优先级编号的 MX 记录告诉远程站点将电子邮件发送到哪里。其他具有较高优先级编号的 MX 记录用作备份电子邮件接收器。如果主电子邮件接收器由于某种原因无法接受消息,则这些备份将保留邮件一段时间。在该部分的示例中,我假设 fred.example.com 在其 mail.example.com 别名下处理域的电子邮件。如果您已选择让 ISP 处理您的所有电子邮件托管,则应更改这些 MX 记录以指向适当的 ISP 机器。询问您的 ISP 技术支持代表您应该在各种文件中使用哪些主机名作为 MX 记录。
如果您已选择为您的域执行完整的电子邮件托管,则必须对来自私有网络上的主机的电子邮件采取特殊措施,并允许从私有网络内的任何位置进行透明的邮件读取。除非您小心,否则如果消息在一个主机上等待,而预期的收件人登录到另一台机器,则消息可能会长时间滞留。出于安全原因,我建议从外部可见的主机无法访问传入的电子邮件(这可能有助于阻止 PHB 想要他的桌面机器位于真实的 IP 上,然后想知道为什么他每天被死亡之 Ping 攻击击垮两次)。在 sendmail 中,私有网络上的透明电子邮件共享系统非常简单。如果有人想为其他邮件处理守护程序提供经过测试的解决方案,我欢迎添加。
为了使传递到一台主机的电子邮件在所有机器上都可见,最简单的解决方案是在整个私有网络上以读写权限导出邮件假脱机目录。私有网络网关机器还将充当整个私有网络的邮件收集器和转发器,因此必须具有对邮件假脱机驱动器的 root 写入权限。其他客户端可能会或可能不会压缩 root,由您自行决定。我的一般安全理念是不授予特权,除非有明确的理由,所以我为除私有网络网关机器之外的所有主机压缩邮件假脱机网络驱动器上的 root。这具有 root 只能从该机器读取其邮件的效果,但这并不是特别严重的障碍。请注意,邮件假脱机驱动器可以是私有网络网关机器上的目录,通过 NFS 导出,也可以是内部服务器之一上的目录,导出到整个私有网络。如果邮件假脱机驱动器驻留在私有网络网关上,则该机器不存在压缩 root 的问题。如果它在另一台服务器上,请注意,如果该服务器、网关机器或连接它们的网络出现故障,则电子邮件将无法传递。
对于私有网络上的 Windows 机器,您可以选择在邮件假脱机主机上设置 POP 服务器,或使用 samba 将邮件假脱机导出到这些机器。Windows 机器应配置为在 Linux 用户名(例如 joeuser@example.com)下发送和检索邮件,以便电子邮件地址主机名是裸域名,而不是像 barney.example.com 这样的机器名。传出 SMTP 主机应设置为私有网络网关机器,该机器将负责转发邮件并执行任何地址重写。
接下来,您应该配置 sendmail 以转发来自私有网络上的机器的电子邮件,并在必要时重写地址。从 sendmail.org WWW 站点 获取 sendmail 的最新源代码。编译二进制文件,然后转到 sendmail 源代码树中的 cf/domain
子目录,并创建以下新文件:example.com.m4
divert(-1)
#
# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
#
#
# The following is a generic domain file. You should be able to
# use it anywhere. If you want to customize it, copy it to a file
# named with your domain and make the edits; then, copy the appropriate
# .mc files and change `DOMAIN(generic)' to reference your updated domain
# files.
#
divert(0)
define(`confFORWARD_PATH', `$z/.forward.$w+$h:$z/.forward+$h:$z/.forward.$w:$z/.forward')dnl
FEATURE(redirect)dnl
MASQUERADE_AS(example.com)dnl
FEATURE(masquerade_envelope)dnl
这定义了域“example.com”。接下来,您必须创建将在邮件主机(私有网络网关)和私有网络上的其他 Linux 节点上使用的 sendmail.cf
文件。
在 sendmail 源代码树的 cf/cf
下创建以下文件:example.master.m4
divert(-1)
#
# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
#
#
# This is the prototype file for a configuration that supports nothing
# but basic SMTP connections via TCP.
#
# You MUST change the `OSTYPE' macro to specify the operating system
# on which this will run; this will set the location of various
# support files for your operating system environment. You MAY
# create a domain file in ../domain and reference it by adding a
# `DOMAIN' macro after the `OSTYPE' macro. I recommend that you
# first copy this to another file name so that new sendmail releases
# will not trash your changes.
#
divert(0)dnl
OSTYPE(linux)dnl
DOMAIN(example.com)dnl
FEATURE(nouucp)
FEATURE(relay_entire_domain)
FEATURE(`virtusertable', `hash /etc/sendmail/virtusertable')dnl
FEATURE(`genericstable', `hash /etc/sendmail/genericstable')dnl
define(`confPRIVACY_FLAGS', ``noexpn,novrfy'')dnl
MAILER(local)
MAILER(smtp)
Cw fred.example.com
Cw example.com
在此示例中,我们禁用了“expn”和“vrfy”命令。攻击者可以使用“expn”来探测别名,尝试诸如“staff”、“allstaff”、“office”等名称,直到他找到一个别名,该别名扩展出几个用户名给他。然后,他可以尝试针对某些弱密码的用户名,希望能够进入(假设他可以获得登录提示 - 保护您的域 部分中描述的安全设置已设置,以便场外攻击者无法获得登录提示)。
您应该创建的另一个文件将定义从属机器的 sendmail.cf:example.slave.m4
divert(-1)
#
# Copyright (c) 1998 Sendmail, Inc. All rights reserved.
# Copyright (c) 1983 Eric P. Allman. All rights reserved.
# Copyright (c) 1988, 1993
# The Regents of the University of California. All rights reserved.
#
# By using this file, you agree to the terms and conditions set
# forth in the LICENSE file which can be found at the top level of
# the sendmail distribution.
#
#
#
# This the prototype for a "null client" -- that is, a client that
# does nothing except forward all mail to a mail hub. IT IS NOT
# USABLE AS IS!!!
#
# To use this, you MUST use the nullclient feature with the name of
# the mail hub as its argument. You MUST also define an `OSTYPE' to
# define the location of the queue directories and the like.
# In addition, you MAY select the nocanonify feature. This causes
# addresses to be sent unqualified via the SMTP connection; normally
# they are qualified with the masquerade name, which defaults to the
# name of the hub machine.
# Other than these, it should never contain any other lines.
#
divert(0)dnl
OSTYPE(linux)
FEATURE(nullclient, fred.$m)
Cm example.com
您可以使用以下命令构建相应的 sendmail.cf 文件
make example.master.cf example.slave.cf
然后将文件以名称 sendmail.cf
复制到相应的机器。
此配置将大多数 sendmail 配置文件放在 /etc/sendmail/
子目录下。此配置使 sendmail 解析并使用两个特殊文件,virtusertable.db
和 genericstable.db
。要使用这些特殊文件,请创建它们的父文件。首先是 virtusertable.src
John.Public@example.com jpublic
Jane.Doe@example.com jdoe@somemachine.somedomain
abuse@example.com root
Pointyhaired.Boss@example.com #phb#@hotmail.com
这会将传入电子邮件上的电子邮件地址映射到新的目标。发送到 John.Public@example.com 的邮件将在本地传递到 Linux 帐户 jpublic。发送到 Jane.Doe@example.com 的邮件将被重定向到另一个电子邮件帐户,可能在不同的域中。发送到 abuse@example.com 的邮件将发送到 root,依此类推。另一个文件是 genericstable.src
jpublic John.Public@example.com
janedoe Jane.Doe@example.com
whgiii Pointyhaired.Boss@example.com
此文件重命名来自本地邮件的传出电子邮件上的发件人。虽然它显然不能影响直接从 jdoe@somemachine.somedomain 发送的邮件的返回地址,但它允许您将发件人的电子邮件地址从内部用户名重写为您选择的任何电子邮件地址约定。最后,在 /etc/sendmail/
中创建以下 Makefile
all : genericstable.db virtusertable.db
virtusertable.db : virtusertable.src
makemap hash virtusertable < virtusertable.src
genericstable.db : genericstable.src
makemap hash genericstable < genericstable.src
运行 make 以创建 sendmail 可以使用的哈希文件,并记住在对任何这些“.src”文件进行任何更改后重新运行 make 并重新启动 sendmail(或向其发送 SIGHUP)。
我的经验仅限于 sendmail。如果有人想编写本节,请与我联系。否则,我可能会在稍后的某个时间尝试提供有关 Postfix、Exim 或 smail 等 MTA 的详细信息。我真的希望使用这些程序的人来编写这些部分。
出于安全原因,您应该在私有网络外部的机器上而不是在私有网络网关机器上设置外部可见的 Web 服务器。如果 Web 服务器需要访问存储在私有网络上的数据库或其他资源,则情况会变得更加复杂,无论是从网络还是安全角度来看。此类配置超出了本文档的范围。
有关设置服务器本身的详细信息,请参阅 apache 文档和 Linux WWW HOWTO 文档。
同样,您的 FTP 主机应该是外部可见的机器,而不是私有网络网关机器。请按照 FTP 守护程序包附带的设置说明进行操作。请务必下载最新版本的守护程序,因为许多守护程序的某些旧版本中存在安全漏洞。如果您的 FTP 站点不需要匿名用户上传文件,请务必在守护程序中禁用该功能。我建议用户(非匿名)FTP 登录在 FTP 主机上不允许,您要求您的普通用户使用 scp,安全 shell 远程复制命令,来执行他们可能必须在 FTP 主机上执行的任何文件更新。这是为了帮助用户养成安全习惯,并防止 保护您的域 部分中描述的“恶意路由器”问题。
这在 配置防火墙 部分中详细讨论。