我在这里看到过类似的问题,但我仍然在设置 DHCP 服务器时遇到问题。我正尝试通过以太网直接连接到 Raspberry Pi,以便从运行 WSL 的笔记本电脑通过 SSH 进入。我已将 Pi 配置为本地 IP 地址 10.0.0.45,该地址在我的家庭网络上有效。我尝试在笔记本电脑上将其设置为 DHCP 服务器,这样当我不在家庭网络上时,我就可以 SSH 进入,但出现了错误。
以下是我的 dhcpd.conf 文件:
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 10.0.0.1;
option routers 10.0.0.1;
option domain-name-servers 8.8.8.8;
option domain-name "mydomain.example";
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.40 10.0.0.50;
}
当我尝试运行它时,我得到了
root@PLT:~# sudo service isc-dhcp-server start
Launching both IPv4 and IPv6 servers (please configure INTERFACES in /etc/default/isc-dhcp-server if you only want one or the other).
* Starting ISC DHCPv4 server dhcpd * check syslog for diagnostics.
[fail]
我用了这ubuntu 表单中的指南可以帮助进行设置。我怀疑我的 conf 文件有问题。我也不确定如何检查 syslog 进行诊断。
答案1
这可能是巧合,但我在过去几个小时里收到了一个点赞这个答案关于如何在 WSL 上设置 SSH 以允许从远程主机登录。所以我认为你可能已经找到了问题的答案。如果没有,请先查看该答案以了解一些背景知识。但是,如果你确实需要 WSL 中的 DHCP 服务器,那么下面我对 DHCP 的建议将休息至少在某种程度上,这是个答案。
在 WSL2 上通过 SSH 进入和设置 DHCP 服务器都存在同一个核心问题——WSL2 在 Windows 主机后面/内部进行 NAT 的虚拟网络中运行。它无法在您通常认为的“本地”网络(Windows 主机本身所在的网络)上访问。
据我所知,DHCP 无法进行转发,因为它依赖于广播流量,但是 WSL 即将推出一项新功能,可能运行 DCHP 服务器。
如果您正在:
- Windows 11
- Pro/Education 或更高版本
- 并愿意运行 WSL 的预览版
然后你现在可以安装“Windows 子系统 Linux 预览版”从 Microsoft Store 下载。您当前的 Ubuntu 发行版不需要重新安装。
此预览版具有一项功能,可让您选择备用 Hyper-V 网络交换机,并将该交换机设置为桥接。理论上,这将允许您在 WSL 上的 Ubuntu 中运行可从本地网络访问的 DHCP 服务器。
看这篇 Reddit 帖子以及相关博客文章以了解详细信息。总之,您将:
安装预览版本
在 Windows 中启用 Hyper-V 功能
更新或创建
.wslconfig
您的视窗用户配置文件目录如下:[wsl2] networkingMode = bridged vmSwitch = Bridge
开关本身可以随意命名,但需要符合以下内容...
使用上面使用的名称创建一个新的 Hyper-V 交换机。
设置为桥接
好的,考虑到这一点,预览版在 WSL 方面存在一个已知的错误/限制。您不能SSH 进入视窗并通过命令访问 WSL 实例wsl
。我之前关于 SSH 的回答依赖于此功能。出于这个原因,我个人不使用预览版。
但是,有了这个,您现在应该能够直接从本地网络访问 Ubuntu SSH 服务器,因此从 Windows OpenSSH 启动 WSL 的能力并不那么重要。
如果您选择这条路线,请注意行为的差异。
另外一个选择
我也没有测试过这个,但是你可能能够在 WSL1 下运行的 Ubuntu 上运行 DHCP 服务器,因为它已经在“桥接”模式下运行。
理论上,它可以工作,但有一个微小的变化是一些必要的功能将不会在 WSL1 中实现。