使用 Windows 计算机和 Apache 在我的 Wi-Fi 网络上创建自定义域

使用 Windows 计算机和 Apache 在我的 Wi-Fi 网络上创建自定义域

我有一台路由器和一台笔记本电脑。我在笔记本电脑上安装了包含 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.x9.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”)。

BIND 9 安装示例

请注意,如果您使用正斜杠 /(即 NT AUTHORITY/LocalService)而不是正确的反斜杠 \(即 NT AUTHORITY\LocalService),BINDInstall 将抛出错误,指出密码字段不能为空。您必须使用反斜杠。

如果在首次单击“安装”后系统单独提示您安装 Visual C++ 可再发行组件,则应执行此操作。但是,如果 Visual C++ 可再发行组件安装程序显示“修复”而不是“安装”,则表示您已经拥有正确的文件,可以单击“取消”。

安装后,您应该仔细检查“ISC BIND”服务是否已在开始菜单 → 管理工具 → 服务(交替,开始菜单 → 搜索/运行 → services.msc)。

如果服务未成功安装(“服务”窗口中未出现“ISC BIND”),请重新运行安装文件并选择“卸载”。卸载时您不必修改任何值。

重复上述安装步骤(从第一项“目标目录”开始),直到服务注册成功。

BIND 9 服务安装成功示例


设置BIND

由于我们还有一些配置工作要做,因此您不应该尝试启动 BIND。

在您的安装目录(例如 C:\ISC BIND 9)下,您应该有两个前面提到的文件夹(“bin”和“etc”)。在同一目录下,手动创建第三个文件夹“zones”。

完成后,进入“bin”文件夹。从同一文件夹中的命令提示符(Shift + 右键单击​​ → 在此处打开命令窗口),运行下面两个命令:

rndc-confgen -a
rndc-confgen > ..\etc\rndc.conf

RNDC Confgen 示例

回到“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”)存在错误。

BIND 9 服务示例

服务器防火墙

对于网络访问,请确保 DNS 服务器防火墙上的端口 53 和 953(TCP 和 UDP)已打开,以便入站和出站流量。这些是标准 DNS 端口。

设置路由器

设置自定义域的最后一步是配置路由器。具体步骤因路由器而异,但您需要查找允许您指定路由器将使用的 DNS 服务器的设置。

如果您希望该服务器公开可用,您将需要确保路由器也正确转发端口 53 和 953。

BIND 路由器设置


成功!(也许)

一旦 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 大致需要采取的步骤:

  1. 打开httpd配置文件在 下C:\wamp\bin\Apache#.#.#\conf\httpd.conf。您可能希望在进行任何更改之前复制一份以进行备份。

  2. 取消注释以下行(删除前面的 #):

    LoadModule vhost_alias_module modules/mod_vhost_alias.so
    

    Include conf/extra/httpd-vhosts.conf
    
  3. 节省httpd配置文件

  4. 现已开放httpd-vhosts.conf在 下C:\wamp\bin\Apache#.#.#\conf\httpd.conf\extra。同样,您可能希望在进行任何更改之前复制一份以进行备份。

  5. 在......的最后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> 
    
  6. 节省httpd-vhosts.conf。您可以直接复制并粘贴上述内容到httpd-vhosts.conf但请确保替换 WAMP 安装的正确路径。

  7. 重启所有服务。假设你的更改没有问题,WAMP 应该会正常重启并处理所有请求http://free.goodies从适当的目录中。

相关内容