1、使用lsof命令查看占用53端口的进程:sudo lsof -i :53
2、找到进程id对应的执行程序:sudo lsof -p 1640
3、停掉dnsmasq:sudo brew services stop dnsmasq
扩展:
1、寻找与打开的文件相关联的进程:lsof /var/log/messages
2、用lsof解除阻塞:lsof mountpoint // mountpoint是挂载点
3、搜索打开的网络连接:lsof [email protected]
netstat和lsof可以配合使用lsof [email protected]可以得到和远程主机192.168.0.100进行连接的进程
4、搜索被程序打开的所有文件ps -aux后找到进程id,使用lsof -p 53查看
5、如果想要找到一条命令的所有实例及每个实例所打开的文件,可以使用参数c,如:lsof -c dnsmasq
6、DNSmqsq是方便的用于配置DNS和DHCP的工具,开发时会经常配置域名映射到本地,由于/etc/hosts不支持各种高级配置,比如泛域名解析,想把*.hello.me映射到本地,必须在hosts文件中一个一个写,mac下直接使用brew安装即可:brew install dnsmasq,配置文件路径/usr/local/etc/dnsmasq.conf,sudo brew services start dnsmasq启动DNSmqsq
# 配置上行DNS,对应no-resolv
resolv-file=/etc/resolv.conf
# resolv.conf内的DNS寻址严格按照从上到下顺序执行,直到成功为止
strict-order
# DNS解析hosts时对应的hosts文件,对应no-hosts
addn-hosts=/etc/hosts
cache-size=1024
# 多个IP用逗号分隔,192.168.x.x表示本机的ip地址,只有127.0.0.1的时候表示只有本机可以访问。
# 通过这个设置就可以实现同一局域网内的设备,通过把网络DNS设置为本机IP从而实现局域网范围内的DNS泛解析(注:无效IP有可能导至服务无法启动)
listen-address=192.168.x.x,127.0.0.1
# 重要!!这一行就是你想要泛解析的域名配置.
address=/hello.me/127.0.0.1
以上几乎是最简配置.
reolve-file=/etc/resolv.conf
配置上行DNS,假设 /etc/resolv.conf
内容如下:
nameserver 183.44.22.19
那就是说如果你访问域名abc.com没有被dnsmasq解析,它会尝试访问 183.44.22.19
去解析
注意需要使用 sudo 来启动,因为权限要求较高。
# 启动
sudo brew services start dnsmasq
# 重启
sudo brew services restart dnsmasq
# 停止
sudo brew services stop dnsmasq
如果改动了泛解析规则,重启 dnsmasq 不会立即看到效果,因为有缓存,可以稍等便可或清除一下缓存再试
sudo killall -HUP mDNSResponder