在 macOS 上通过命令行配置特定域名和 IP 地址的 DNS 映射,通常涉及修改 /etc/hosts
文件或配置本地 DNS 服务器(如 dnsmasq
)。以下是两种常见方法的详细步骤:
方法 1:通过修改 /etc/hosts
文件
/etc/hosts
文件用于将域名直接映射到 IP 地址,适合简单的本地 DNS 解析需求。
打开终端。
编辑
/etc/hosts
文件: 使用nano
或vim
等编辑器以管理员权限打开文件:sudo nano /etc/hosts
输入管理员密码以继续。
添加域名和 IP 映射: 在文件末尾添加一行,格式为
IP地址 域名
。例如,将example.com
映射到192.168.1.100
:192.168.1.100 example.com
如果需要映射多个域名到同一 IP,可以在同一行添加多个域名,用空格分隔:
192.168.1.100 example.com www.example.com
保存并退出:
- 在
nano
中,按Ctrl+O
保存,Ctrl+X
退出。 - 在
vim
中,按:wq
保存并退出。
- 在
刷新 DNS 缓存: 修改
/etc/hosts
后,清除 DNS 缓存以确保生效:sudo dscacheutil -flushcache sudo killall -HUP mDNSResponder
验证配置: 使用
ping
或nslookup
检查域名是否解析到指定 IP:ping example.com
确认返回的 IP 是你设置的
192.168.1.100
。
注意:
/etc/hosts
适用于本地静态映射,适合开发或测试环境。- 修改
/etc/hosts
仅对当前设备有效,且不支持复杂的 DNS 功能(如通配符解析)。 - 如果 macOS 自动覆盖
/etc/hosts
,请确保以管理员权限操作。
方法 2:使用 dnsmasq
配置 DNS(高级)
如果需要更灵活的 DNS 配置(例如通配符域名或多个域名映射),可以安装并配置 dnsmasq
。
安装
dnsmasq
: 使用 Homebrew 安装(若未安装 Homebrew,先运行/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
):brew install dnsmasq
配置
dnsmasq
:- 创建或编辑配置文件:
mkdir -p /usr/local/etc/dnsmasq.d nano /usr/local/etc/dnsmasq.conf
- 在配置文件中添加域名和 IP 映射。例如,为
example.com
映射到192.168.1.100
:支持通配符,例如address=/example.com/192.168.1.100
*.example.com
:address=/example.com/192.168.1.100 address=/.example.com/192.168.1.100
- 创建或编辑配置文件:
启动
dnsmasq
:sudo brew services start dnsmasq
配置系统 DNS: 将本地回环地址(127.0.0.1)设置为 DNS 服务器,优先使用
dnsmasq
:sudo networksetup -setdnsservers Wi-Fi 127.0.0.1 8.8.8.8
这里将
Wi-Fi
的 DNS 设置为本地dnsmasq
(127.0.0.1),并以 Google DNS(8.8.8.8)作为备用。验证配置: 测试域名解析:
nslookup example.com
确认返回的 IP 是
192.168.1.100
。确保
dnsmasq
开机启动:sudo brew services restart dnsmasq
注意:
dnsmasq
适合需要复杂 DNS 配置的场景,如开发环境或本地服务器。- 确保
dnsmasq
监听端口(默认 53)未被其他服务占用。 - 如果遇到权限问题,检查
/usr/local/etc/dnsmasq.conf
的配置。
方法 3:临时测试(使用 scutil
)
如果只想临时测试域名和 IP 映射,可以使用 scutil
命令:
sudo scutil --dns
然后手动添加解析(需要结合 dnsmasq
或其他工具实现持久化)。
总结
- 简单需求:使用
/etc/hosts
,适合快速映射单个域名。 - 复杂需求:使用
dnsmasq
,支持通配符和大规模配置。 - 验证:总是通过
ping
或nslookup
确认解析是否正确。