Windows网络共享的时候,一般会自动启动DHCP服务,这样同一网络内的其他客户端都可以自动获取IP地址并连接internet。要想共享internet又不让其他机器自动获取IP地址,可以采用以下方法。
打开 Windows Defender 防火墙
-
在 "运行"(Win + R)中输入
wf.msc
,打开 Windows Defender 防火墙。
创建入站规则,阻止 DHCP 服务器
-
在 "高级安全 Windows Defender 防火墙" 中,点击左侧 "入站规则"。
-
选择
"新建规则"
,然后:
-
规则类型:选择 "自定义"。
-
程序:选择 "所有程序"。
-
协议和端口:
-
选择 UDP。
-
本地端口:67(DHCP 服务器端口)。
-
远程端口:68(DHCP 客户端端口)。
-
-
作用域:选择 "任何 IP 地址"。
-
操作:选择 "阻止连接"。
-
配置文件:全部勾选(域、专用、公用)。
-
名称:如 "禁用 DHCP 服务器"。
-
重启网络适配器
-
关闭并重新启用被共享的网络适配器。
===================================================
附录1:为什么 netsh dhcp server stop
可能无效?
netsh dhcp server stop
这条命令在 Windows Server 版本中适用于 DHCP 服务器角色,但在 Windows 10/11 或普通的 Windows 版本中并不会起作用,因为它们没有独立的 DHCP 服务器服务。
-
Windows 共享网络(ICS)的 DHCP 服务器是内置的
- ICS(Internet Connection Sharing)自己管理 DHCP,并不依赖 Windows DHCP 服务器角色。
- 在 Windows 10/11 或非服务器版本的 Windows 上,这个命令通常会报错,提示找不到 DHCP 服务器。
-
只有 Windows Server 才能使用
netsh dhcp
来管理 DHCP 服务- 在 Windows Server 上,你可以使用:
net stop dhcpserver
netsh dhcp server stop
- 但在 Windows 10/11 上,你查
services.msc
也会发现根本没有DHCP Server
这个服务。
- 在 Windows Server 上,你可以使用:
===================================================
附录2:Ubuntu使用 dhclient
检查 DHCP 是否有效
步骤:
-
连接 Ubuntu 机器到 Windows 共享网络的接口(有线或无线)。
-
在终端运行以下命令:
sudo dhclient -v eth0
(
eth0
替换为你的网络接口名称,可能是ens33
、wlan0
等,使用ip a
查询)。
可能的结果:
-
如果 Windows 仍在提供 DHCP,你会看到类似:
nginx复制编辑DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 DHCPOFFER from 192.168.137.1 DHCPREQUEST for 192.168.137.100 DHCPACK from 192.168.137.1
说明 Windows 仍在作为 DHCP 服务器运行,Ubuntu 获得了 IP(如
192.168.137.100
)。 -
如果 Windows DHCP 被禁用,你会看到:
pgsql复制编辑DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3 No DHCPOFFERS received. No working leases in persistent database - sleeping.
说明 Ubuntu 没有收到来自 Windows 的 DHCP 服务器响应。