NetworkManager是一个现代的网络连接管理器,被广泛用于Linux桌面系统上。对于Linux服务器,往往采用的是netctl等其他主要基于配置文件的方式。但对于家用Linux软路由等民用场景,由于使用场景可能经常变化,使用配置文件的方式就会显得很繁琐,不过其实我们完全可以也使用NetworkManager来配置网络,NetworkManager的nmtui
工具能够在终端中提供交互式的配置界面,十分方便,比如假设一个简单的软路由,基本可以“一键”完成。(需要安装dnsmasq)

当在NetworkManager中将连接模式选择为Shared
后,NetworkManager就会自动为你设置好nat,并启动dnsmasq作为DHCP server和DNS服务器。
一般情况下,NetworkManager的这番操作自然不会有任何问题,但如果我们使用了ss-tproxy来实现全局自动翻墙,会再启动一个dnsmasq
,和原来的产生冲突。
ss-tproxy的dnsmasq会运行DNS服务,并通过ChinaDNS之类的程序来实现DNS抗污染,所以我们只需要关掉NetworkManager的那个dnsmasq的DNS功能就可以让他们两个同时允许,互不干扰。
创建/etc/NetworkManager/dnsmasq-shared.d/disable-dns.conf
文件并加入以下内容即可安全的禁用其DNS功能:
port=0
dhcp-option=6,192.168.10.1
但同时运行两个dnsmasq还会有另一个问题:ss-tproxy在stop或者restart时,会kill掉所有的dnsmasq进程,包括NetworkManager的那个,而NetworkManager并不会自动重启它的dnsmasq,遇到这种情况时,最简单的方法就是重启一下机器,或者重启一下NetworkManager服务。
大佬这文章权重还不低啊,我搜“networkmanager 软路由”出来的第一篇文章就是这篇