我遇到了一个问题,当使用 DD-WRT 路由器的公共 IP 地址时,我无法从 LAN 连接到我的家庭服务器。我基本上遇到了与此处详述的相同的问题:DD-WRT:如何允许端口转发应用于来自 LAN 内部的请求?;但是,提供的解决方案对我都不起作用。我相当确定我已经修改了正确的值以应用于我的 LAN 设置。路由器是 Netgear WNR834B v2,它运行的是 DD-WRT v24-sp2 18777。我为其使用默认 IP(192.168.1.1),我知道域和端口转发正常工作。
编辑:明白了!我发现我需要启用本地 DNS 并使用这来自链接问题的答案。
答案1
DD-WRT 可能未配置发夹路由。从 LAN 连接到公共 IP 通常不是一个好主意,您将无法识别连接源。最好的选择是从网络内部直接连接到所需的服务器。
这Shorewall 常见问题解答 2介绍了如何配置路由器以使其正常工作。Shorewall 从一组规范文件构建 iptables 防火墙,因此这些步骤不是必需的 iptables 命令,但可以相当轻松地映射到 iptables。我相信您应该能够在 DD-WRT 上运行 shorewall-lite,在这种情况下,您需要在 Shorewall 而不是 DD-WRT 工具中构建所有防火墙。
使用拆分 DNS 要容易得多,我推荐这种方法。像 这样的工具dnsmasq
可以从文件中提供必要的内部 DNS /etc/hosts
。它充当 Internet 上地址的缓存服务器。它还提供 DHCP,如果您不在 DD-WRT 路由器上运行它,您需要决定启用哪个 DHCP 服务器。如果您有记忆,您可以在 DD-WRT 上安装它以替代默认 DHCP 服务器。
编辑:如果您选择使用,dnsmasq
最好将其设置为活动 DHCP 服务器。如果您不在路由器上运行它,请在路由器上禁用 DCHP。或者,对要路由到的服务器使用 DHCP 地址范围之外的固定地址。无论如何,对服务器使用固定地址是个好主意。将服务器的地址添加到/etc/hosts
运行的主机上的文件中dnsmasq
,然后重新启动dnsmasq
。如果您dnsmasq
使用域进行配置,您还可以按名称查找 DHCP 客户端。
确定主机的地址dnsmasq
。(这应该是私有网络地址,如 192.168.0.10。)配置您的 DHCP 服务器以将此地址列为第一个 DNS 名称服务器。对于 Linux 主机和其他具有文件的主机,/etc/resolve.conf
将此地址用作第一个nameserver
条目。对于具有静态名称服务器条目的其他服务器,将此地址作为第一个指定地址。
DHCP 客户端需要更新其 DNS 数据。触发 DHCP 更新应该会更新数据。许多系统都有内部 DNS 缓存,因此更改可能不会立即可见。完成所有服务器配置后重新启动客户端应该会清除所有缓存并重新加载 DHCP 指定的配置。