mac 上 dhcp 与静态 ip 设置互斥,手动设静态 ip 后 ipconfig set en0 dhcp 会失效;需先用 networksetup -setdhcp 切回 dhcp 模式,且静态 ip 必须同步配置 dns 和匹配路由器子网。

Mac 上 DHCP 租约续期失败和静态 IP 设置是两套互斥机制,不能混用;手动设置静态 IP 后,ipconfig set en0 DHCP 会直接覆盖并失效。
为什么 ipconfig set en0 DHCP 有时不生效
这个命令只对当前启用 DHCP 的接口起作用。如果 Wi-Fi 或以太网服务已手动配置为静态 IP(即“配置 IPv4”设为“手动”),系统底层不会响应 DHCP 请求,ipconfig 命令会被静默忽略——终端无报错,但 Wi-Fi 图标不闪烁、ifconfig en0 显示的仍是旧地址。
- 执行前先确认当前模式:
networksetup -getinfo "Wi-Fi",输出中若含IP address: 192.168.x.x且无DHCP字样,说明不是 DHCP 模式 - 接口名不一定是
en0:M1/M2 Mac 的 Wi-Fi 接口可能是en0,但 USB-C 以太网适配器常为en7或en9,需用ifconfig | grep "en[0-9]"实时确认 - macOS Sequoia(15.x)起,部分机型对
ipconfig权限更敏感,需配合sudo networksetup -setdhcp "Wi-Fi"先切回 DHCP 模式再执行
手动设置静态 IP 必须同步补 DNS,否则上不了网
图形界面里把“配置 IPv4”改成“手动”后,DNS 列表会自动清空——这不是 bug,是 macOS 的设计逻辑。只填 IP/子网掩码/路由器,不重填 DNS,ping baidu.com 会通,但 curl https://example.com 直接超时。
- 务必在“DNS”标签页里点击“+”,逐条添加 DNS(如
8.8.8.8、114.114.114.114),不能依赖之前缓存 - 命令行设置更稳妥:
networksetup -setmanual "Wi-Fi" 192.168.1.100 255.255.255.0 192.168.1.1+networksetup -setdnsservers "Wi-Fi" 8.8.8.8 1.1.1.1 - 验证是否生效:
networksetup -getinfo "Wi-Fi"输出里必须同时出现正确 IP 和 DNS 行,缺一不可
切换 DHCP 和静态 IP 时,网络位置别乱用
新建一个“位置”(比如叫“Static-Office”)来存静态 IP 配置,听起来很干净,但容易踩两个坑:
- 切换位置后,Wi-Fi 不会自动重连——你得手动点开 Wi-Fi 菜单,选同一个 SSID 再输一次密码
- 如果原位置里 Wi-Fi 是“自动加入”,新位置没勾选,下次重启 Mac 就直接断网,连不上任何 Wi-Fi
- 更可靠的做法:保留默认位置,在“网络”设置里直接改当前服务的 IPv4 模式,改完点“应用”。需要多套配置再建位置,别为单次设置折腾
最易被忽略的一点:静态 IP 的子网掩码和网关必须与路由器实际分配段一致。比如路由器 LAN 口是 192.168.0.1/24,你设 192.168.1.100/24 看似合理,实则跨子网,连网关都 ping 不通。










