我有一台路由器和一台笔记本电脑。我在笔记本电脑上安装了包含 Apache 的 WAMP。我已将 Apache 配置为允许通过内联网访问。使用 IP 地址,我可以从内联网上的任何其他 PC/移动设备访问服务器。我不想使用 IP 地址,而是使用一些容易记住的名称,例如http://free.goodies打开我创建的网页。
注意:WiFi 路由器将无法访问互联网,它将是一个纯粹的内部网,笔记本电脑内装有 Windows 操作系统。
可以做到吗?如果可以,如何做到?
答案1
我不想使用 IP 地址,而是使用一些容易记住的名称,例如http://free.goodies打开我创建的网页。
您可以通过托管您自己的 DNS 服务器来实现这一点。
请注意,虽然您选择用作 DNS 服务器的计算机可以用于其他用途,但需要打开它并运行适当的服务才能解析自定义域名。
注意:下面列出的步骤适用于 Windows 7,但 Windows 10 的过程应该几乎相同。此外,虽然这些步骤可能看起来有点繁琐,但一旦正确设置了 BIND,您就很少需要摆弄它。
安装 BIND
首先,您需要下载 DNS 服务器软件。我们将使用稳定,ESV备份ISC绑定。对于 Windows,截至本问题的最新更新,该版本为 9.16.29。对于本机 Windows 支持,目前您应避免使用任何non-9.16.x
副本,包括例如9.18.x
或9.19.x
。您还应避免使用任何不稳定或者早期部署版本。
截至撰写本文时(2022 年 6 月),9.16.x
这是 BIND 的最后一个具有原生 Windows 支持的分支。最新的原生 Windows 版本目前应该是BIND9.16.29.x64.zip - win 64 位。这应该列在 9.16.29 当前稳定版、ESV BIND 9.16 下,并获得 2022 年 5 月至 2024 年第一季度的支持。
单击蓝色
Bind 9
链接可展开 ISC BIND 的下载选项。点击“下载”。
出现提示后,选择例如 Windows 64 位版本(蓝色描述文字是链接例如
BIND9.16.29.x64.zip - win 64-bit
)。
下载完成后,解压.zip
文件并查找名为安装文件。您必须“以管理员身份运行此程序”(属性 → 兼容性),因为安装“ISC BIND”服务需要提升的权限。
设置“目标目录”(您希望安装 BIND 的位置)。这可以是任何您喜欢的目录。
将服务帐户设置为“NT AUTHORITY\LocalService”(不带引号)。不要使用“named”作为服务帐户。
将密码字段留空。
确保选中“自动启动”。这将确保 BIND 在服务器启动时启动。
“卸载后保留配置文件”可能会自动选中。这很好。剩下的两个框应该是未选中(“仅工具”和“安装后开始绑定”)。
单击“安装”。这将在 Windows 中注册“ISC BIND”服务,并在“目标目录”下创建两个新目录(“bin”和“etc”)。
请注意,如果您使用正斜杠 /(即 NT AUTHORITY/LocalService)而不是正确的反斜杠 \(即 NT AUTHORITY\LocalService),BINDInstall 将抛出错误,指出密码字段不能为空。您必须使用反斜杠。
如果在首次单击“安装”后系统单独提示您安装 Visual C++ 可再发行组件,则应执行此操作。但是,如果 Visual C++ 可再发行组件安装程序显示“修复”而不是“安装”,则表示您已经拥有正确的文件,可以单击“取消”。
安装后,您应该仔细检查“ISC BIND”服务是否已在开始菜单 → 管理工具 → 服务(交替,开始菜单 → 搜索/运行 → services.msc)。
如果服务未成功安装(“服务”窗口中未出现“ISC BIND”),请重新运行安装文件并选择“卸载”。卸载时您不必修改任何值。
重复上述安装步骤(从第一项“目标目录”开始),直到服务注册成功。
设置BIND
由于我们还有一些配置工作要做,因此您不应该尝试启动 BIND。
在您的安装目录(例如 C:\ISC BIND 9)下,您应该有两个前面提到的文件夹(“bin”和“etc”)。在同一目录下,手动创建第三个文件夹“zones”。
完成后,进入“bin”文件夹。从同一文件夹中的命令提示符(Shift + 右键单击 → 在此处打开命令窗口),运行下面两个命令:
rndc-confgen -a
rndc-confgen > ..\etc\rndc.conf
回到“etc”文件夹,应该有两个新文件 — “rndc.key”和“rndc.conf”。暂时忽略这两个文件,在“etc”中创建一个名为“named.conf”的新文件,内容如下:
例如 C:\ISC BIND 9\etc\named.conf
# Anything with a hash (#) is a comment.
# Our basic options -- where do we find our zone files?
# This should be changed to correspond with the path to
# your zones folder.
options {
directory "C:\ISC BIND 9\zones";
allow-transfer { none; };
# Tack down the edges a little regarding security.
# allow-recursion {192.168.1.0/24;}; // change IPs as required
allow-recursion {"localnets";};
# The option below sets up DNS forwarding to outside servers.
# In this case, we route through BIND which then passes certain
# requests to Google DNS. This is unnecessary for intranets.
# forwarders { 8.8.8.8; 8.8.4.4; };
};
# Local domains
zone "free.goodies" IN {
type master;
file "free.goodies.txt";
allow-transfer { none; };
};
注意:对于上面的部分,您可以直接复制和粘贴。但请确保输入正确的“区域”文件夹路径。forwarders
如果您希望使用它来解析非本地请求,请取消注释该行。
保持“named.conf”打开,现在也打开“rndc.conf”。复制文件底部的整个注释掉的(#)部分并粘贴到“named.conf”的底部。确保取消注释刚粘贴到“named.conf”中的所有内容,除了“# End of named.conf”。
例如 C:\ISC BIND 9\etc\named.conf(续)
# This section needs the correct "secret". You will have to substitute
# the proper rndc.conf section you generated earlier.
# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
algorithm hmac-sha256;
secret "kJE0HwbbEg/J2SegGyJree533aRnCzD4Psi2vQ0NXtI=";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
# End of named.conf
截至 2020 年 2 月,当前稳定的非 ESV 版本的 BIND(BIND 9.14.10)现在使用更安全的rndc-key
算法,形式为hmac-sha256
,如上所示。
虽然这对于新安装来说不应该是一个问题,但是当从旧版本的 BIND 升级时(您只需将配置从一个安装转移到另一个安装),配置可能会使用较旧、不太安全的hmac-md5
算法:
# Use with the following in named.conf, adjusting the allow list as needed:
key "rndc-key" {
algorithm hmac-md5;
secret "2diZ8TosQlmJc15Nw3+ISh==";
};
如果是这种情况,BIND 服务很可能无法启动。您应该重新生成“rndc.key”和“rndc.conf”文件(见上文),并替换旧“named.conf”文件中的相应部分。
创建本地域
现在我们已经完成了基本的 BIND 配置(“named.conf”),我们可以创建一个记录,详细说明“free.goodies”和 WAMP 服务器本身之间的连接。
在您的“zones”文件夹中,创建一个名为“free.goodies.txt”的新文件(或您在“named.conf”文件中输入的任何内容),并使其看起来像以下内容:
; Enables use of e.g. http://free.goodies/
; Anything with a semi-colon is a comment
$TTL 3600 ; Default TTL
@ IN SOA ns.free.goodies. candyman.free.goodies. (
2017081001 ; serial
10800 ; Refresh period
3600 ; Retry interval
604800 ; Expire time
86400 ) ; Negative caching TTL
@ NS ns.free.goodies.
ns IN A 10.0.0.10 ; This entry is necessary - Use the IP of the BIND server
free.goodies. IN A 10.0.0.10 ; A Record for the WAMP server - we're assuming its on the same server as BIND
cool IN A 10.0.0.10 ; A Record for a subdomain on the same machine e.g. cool.free.goodies
注意:对于上面的部分,您可以根据需要复制并再次粘贴。但请确保输入正确的 IP 地址。
如果您想更改此文件,请记住...
- 非子域名条目需要以句点“。”结尾。
- 您需要更新序列(使其更大,例如增加 1)。
- 例如,candyman.free.goodies 可以是任何您希望的内容(它是一个以“.”表示“@”的电子邮件地址)。
- 例如,您输入的主域
free.goodies.
需要与“named.conf”区域条目相匹配zone "free.goodies" IN {
。 - 您必须重新启动服务器才能看到任何更改(这也适用于“named.conf”的更改)
启动 BIND
现在,您可以在“服务”窗口中启动 BIND。在“服务”下找到“ISC BIND”服务开始菜单 → 管理工具 → 服务(或者,开始菜单 → 搜索/运行 → services.msc) 并点击“开始”。
如果没有错误,BIND 服务应该会启动。如果没有启动,则说明您的配置文件(“named.conf”)或本地域区域文件(“free.goodies.txt”)存在错误。
服务器防火墙
对于网络访问,请确保 DNS 服务器防火墙上的端口 53 和 953(TCP 和 UDP)已打开,以便入站和出站流量。这些是标准 DNS 端口。
设置路由器
设置自定义域的最后一步是配置路由器。具体步骤因路由器而异,但您需要查找允许您指定路由器将使用的 DNS 服务器的设置。
如果您希望该服务器公开可用,您将需要确保路由器也正确转发端口 53 和 953。
成功!(也许)
一旦 ISC BIND 服务启动并且路由器配置正确,您应该能够导航到例如http://free.goodies/在您的浏览器中并获取您的 WAMP 服务器页面。
如果你不能...
仔细检查您的路由器设置。
仔细检查您的“named.conf”和“free.goodies.txt”区域文件。
确保您的 WAMP 服务器配置正确(即,它被设置为处理http://free.goodies/并且没有 WAMP 服务器或 BIND 服务器防火墙问题)。
在基于 Chrome 的浏览器(Chrome、Firefox、Opera 等)中,请确保在本地域名地址末尾使用“/”。由于内置功能,
http://free.goodies
可能会导致错误,而http://free.goodies/
不会。仔细检查 BIND 是否正在运行。在(极)少数情况下,BIND 也可能无响应。无论哪种情况,您都可以使用“服务”窗口根据需要停止和启动 BIND。
请注意,由于您(可能)在配置中启用了 RNDC 管理(至少如果您遵循了所有步骤),您可以使用例如:
@echo off
"C:\ISC BIND 9\bin\rndc" reload
pause
在批处理文件 ( .bat
) 中快速重新加载正在运行的服务器。如果您必须对“named.conf”或区域文件进行配置更改,这比通过“服务”窗口停止和启动 BIND 要简单得多。
在 WAMP 中设置虚拟主机
根据本文,这些是在 WAMP 中设置虚拟主机来处理 free.goodies 大致需要采取的步骤:
打开httpd配置文件在 下
C:\wamp\bin\Apache#.#.#\conf\httpd.conf
。您可能希望在进行任何更改之前复制一份以进行备份。取消注释以下行(删除前面的 #):
LoadModule vhost_alias_module modules/mod_vhost_alias.so
和
Include conf/extra/httpd-vhosts.conf
节省httpd配置文件。
现已开放httpd-vhosts.conf在 下
C:\wamp\bin\Apache#.#.#\conf\httpd.conf\extra
。同样,您可能希望在进行任何更改之前复制一份以进行备份。在......的最后httpd-vhosts.conf,添加以下内容:
# Virtual host entry for the free.goodies local domain. # Anything beginning with a # are comments. <VirtualHost *:80> ServerName free.goodies #ServerAlias www.free.goodies # DocumentRoot should correspond to wherever the HTML files # for your free.goodies site are located. This is an example. DocumentRoot "C:/wamp/www/free-goodies" #ErrorLog "logs/free.goodies-error.log" #CustomLog "logs/free.goodies-access.log" common # If you have any problems with "Forbidden", try uncommenting # the following. You may have to alter the directory to match # your DocumentRoot above. #<Directory "/"> #AllowOverride None #Options None #Require all granted #</Directory> </VirtualHost>
节省httpd-vhosts.conf。您可以直接复制并粘贴上述内容到httpd-vhosts.conf但请确保替换 WAMP 安装的正确路径。
重启所有服务。假设你的更改没有问题,WAMP 应该会正常重启并处理所有请求http://free.goodies从适当的目录中。