在 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确认解析是否正确。