如何取消内网dns
公司内网DNS污染这事儿,消内我遇到过三次。消内最离谱的消内一次是测试环境死活解析不到内部Git仓库,折腾半天发现是消内IT部门把内网DNS推到了所有开发机上,而那个DNS服务器只认它自己那份hosts表。消内取消内网DNS不是消内点个按钮那么简单,得看你在什么环境里、消内用什么方式被“劫持”了。消内
先搞清楚谁在管你的消内DNS
Windows上打开cmd,敲ipconfig /all,消内看“DNS服务器”那一行。消内如果指向的消内是10.x、172.x、消内192.168.x这类私有地址,消内基本就是消内内网DNS。Mac或Linux用cat /etc/resolv.conf,或者scutil --dns看更细的配置。我见过有人直接改Wi-Fi设置里的DNS,结果重启后又被组策略刷回去——白忙活。
如果是公司发的电脑,大概率有MDM或组策略在背后控制。这时候手动改DNS没用,得先确认自己有没有管理员权限。没权限的话,后面几步都别想了,直接找IT。
Windows下怎么取消
控制面板 → 网络和共享中心 → 更改适配器设置 → 右键你的网卡 → 属性 → IPv4 → 属性。选“使用下面的DNS服务器地址”,填8.8.8.8和1.1.1.1。但注意:如果公司网络屏蔽了外网DNS的53端口,你填了也解析不了外网,反而连内部系统都上不去。
更彻底的做法是用netsh命令。管理员权限打开cmd:
netsh interface ip set dns "以太网" static 8.8.8.8 netsh interface ip add dns "以太网" 1.1.1.1 index=2 把“以太网”换成你实际的连接名。这招在Win10/11上有效,但域环境里重启后可能被覆盖。我一般会再写个计划任务,开机延迟30秒执行一次。
Mac和Linux的坑不太一样
Mac上如果装了公司描述文件,/etc/resolv.conf是只读的,改了也白改。得去“系统设置 → 隐私与安全性 → 描述文件”里删掉那个DNS配置描述文件。没有描述文件的话,networksetup -setdnsservers Wi-Fi 8.8.8.8就行。
Linux看发行版。Ubuntu 18.04之后用netplan,改/etc/netplan/*.yaml,把dhcp4-overrides里的use-dns: false加上,再手动指定nameservers。改完netplan apply。但如果是NetworkManager管的,还得nmcli con mod改。我见过有人改完resolv.conf,重启后systemd-resolved又给覆盖了——得先systemctl disable systemd-resolved。
别忽略VPN和容器
连上公司VPN后,VPN客户端通常会强制推送内网DNS。OpenVPN的话,在配置文件里加pull-filter ignore "dhcp-option DNS"。Cisco AnyConnect得在XML里改UseDefaultDNS。Docker容器默认继承宿主DNS,但docker run时加--dns 8.8.8.8可以覆盖。
还有一点:取消内网DNS后,访问公司内部系统(OA、Jira、GitLab)可能就废了。我的做法是保留内网DNS作为备用,只在需要外网解析时临时切换。或者用dnsmasq做分流,把*.corp.example.com指回内网DNS,其余走公共DNS。这个方案折腾一次,后面省心。
最后提醒:改DNS可能违反公司IT政策。我有个朋友因为私自改DNS被安全部门约谈过——虽然他只是想上外网查文档。动手前先看看员工手册,别为省事惹麻烦。
