Ubuntu 20.04下Firefox与Chrome浏览器无视gai.conf配置,如何设置优先使用IPv4?
Ubuntu 20.04下Firefox与Chrome浏览器无视gai.conf配置,如何设置优先使用IPv4?
我之前也碰到过一模一样的问题——终端里ping域名都是走IPv4,可浏览器偏偏固执地用IPv6,查了半天发现是因为现代浏览器大多自带独立的网络栈,根本不鸟系统的gai.conf配置。下面给你几个亲测有效的解决办法:
一、Chrome/Chromium 强制优先IPv4
Chrome系浏览器有专门的启动参数可以强制走IPv4,操作很简单:
- 找到Chrome的桌面快捷方式,右键点击「属性」
- 在「命令」输入框的末尾,加个空格后加上
--force-ipv4参数
比如原命令是/usr/bin/google-chrome-stable %U,修改后变成:/usr/bin/google-chrome-stable %U --force-ipv4 - 保存设置后重启Chrome,之后它就会优先使用IPv4访问所有网站了
二、Firefox 调整网络偏好设置
Firefox需要通过内置的配置页面修改:
- 打开Firefox,在地址栏输入
about:config,点击「接受风险并继续」 - 搜索
network.dns.ipv4OnlyDomains:- 如果找不到这个项,右键选择「新建」→「字符串」,名称就填
network.dns.ipv4OnlyDomains - 把值设置为
.(一个英文点),表示对所有域名优先使用IPv4;如果只想针对特定域名,就填逗号分隔的域名,比如google.com,github.com
- 如果找不到这个项,右键选择「新建」→「字符串」,名称就填
- 额外可以搜索
network.preferIPv6,把它的值设为false,进一步强化IPv4优先的策略 - 重启Firefox后生效
三、系统层面补充优化(可选)
如果上面的浏览器设置还不够保险,你可以调整系统的IPv6参数,让系统整体更倾向IPv4:
- 编辑
/etc/sysctl.conf文件,添加以下两行:
这里不建议直接禁用IPv6(设net.ipv6.conf.default.prefered_lft = 0 net.ipv6.conf.all.prefered_lft = 0net.ipv6.conf.all.disable_ipv6=1可能会导致部分依赖IPv6的服务异常),只是把IPv6的首选生存期设为0,让系统默认优先选IPv4 - 执行
sudo sysctl -p让配置立即生效
为啥gai.conf对浏览器没用?简单说就是Chrome、Firefox这类现代浏览器为了速度和隐私,都用了自己的DNS解析器和网络请求逻辑,不会调用系统的getaddrinfo()函数,所以系统层面的gai.conf自然就对它们失效啦。
备注:内容来源于stack exchange,提问作者OwN




