从纯 IPv4 的内网访问一个支持 IPv6 的网站(如 baidu.com),返回 IPv6 地址是完全符合标准的现代网络行为。要强制其返回 IPv4 地址,并非在浏览器里点点鼠标就能达成,而是需要从系统、浏览器或网络层面进行调整。
这主要取决于两个环节:
域名解析策略:你的 DNS 服务器在收到 baidu.com 的解析请求时,会根据请求类型同时返回 IPv4 (A记录) 和 IPv6 (AAAA记录) 地址-。在双栈环境下,为了推广 IPv6 的应用,服务器通常会优先返回 IPv6 地址-45。
操作系统/浏览器优先级:现代操作系统(如 Windows 及各类 Linux 发行版)在同时拿到 IPv4 和 IPv6 地址后,会首先尝试与 IPv6 地址建立连接。对于大多数现代浏览器来说,这同样是默认行为,它们会优先尝试使用 IPv6 地址进行连接。
导致 IPv6 访问出现问题的原因通常是网络运营商提供的 IPv6 体验不佳(如速度慢或不稳定)。这里有几个不同深度的解决方法,你可以循序渐进地尝试:
如果你只是偶尔遇到问题,或在调试时希望临时禁用 IPv6,通过浏览器自身的设置就能很快搞定。
Chrome/Edge/Brave 等 Chromium 内核浏览器
方法 A:在浏览器桌面的 chrome.exe 快捷方式上右键,选择“属性”,在“目标”栏的最后面空一格,输入以下参数,保存后使用此快捷方式重启浏览器即可。
方法 B:在地址栏输入 chrome://flags/ 并回车,搜索 "IPv6",如果找到相关条目,可尝试将其设置为 "Disabled"。需要注意的是,部分 Chromium 版本可能已经移除了这个选项。
Firefox
在地址栏输入 about:config 并回车,点击“接受风险并继续”。
搜索 network.dns.disableIPv6,将其值双击改为 true 即可。
如果不想为每个浏览器都单独设置,或网络层面的调整无法下手,那么通过微调操作系统的网络策略,可以一劳永逸地在全局层面解决问题。
方法 A:修改注册表(推荐)
按 Win + R,输入 regedit,然后点击“确定”以打开注册表编辑器。
在注册表编辑器的地址栏输入或粘贴以下路径,然后按 Enter 键快速跳转。
在右侧的空白处,右键点击,选择“新建” -> “DWORD (32位)值”,并将其命名为 DisabledComponents。
双击新建的 DisabledComponents 项,在“数值数据”框中输入 32,并确保“基数”选择的是“十进制”。
32的含义是“优先使用 IPv4 而非 IPv6”,这是微软官方推荐的做法,既能保证系统组件的稳定性,又能让你首选 IPv4。
点击“确定”,然后重启电脑以使更改生效。
验证方法:重启后,打开命令提示符(cmd),输入 ping bing.com,如果 ping 命令返回的是 IPv4 地址(如 20.x.x.x),则说明设置已成功。
方法 B:直接禁用网卡的 IPv6 协议(不推荐)
在“网络和共享中心” -> “更改适配器设置”中,右键你的网络适配器,选择“属性”,然后在列表里取消勾选“Internet 协议版本 6 (TCP/IPv6)”,点击“确定”即可。
微软官方及不少技术建议,除非排查问题的需要,否则不建议彻底禁用它。这不仅影响你的使用体验,还可能影响某些系统组件的正常运行。
方法 A:调整地址选择策略(推荐)
编辑 /etc/gai.conf 文件:打开终端,输入 sudo nano /etc/gai.conf。
在文件末尾添加一行:
保存文件,这个修改会立即生效。
验证方法:在终端输入 getent ahosts ***.***,如果列表中 IPv4 地址 (::ffff:...) 排在所有 IPv6 地址之前,就表示设置成功了。
方法 B:彻底禁用 IPv6 协议(不推荐)
编辑文件 /etc/sysctl.conf,在末尾添加以下两行:
sudo sysctl -p 使配置生效。同样,彻底禁用 IPv6 也可能导致某些依赖它的应用程序工作异常。
如果你希望为局域网内所有设备一次性解决问题,可以从网络根源入手。这通常涉及更换一个只返回 IPv4 地址的 DNS 服务器,或者在本地部署一个可以过滤掉 IPv6 地址的 DNS 代理。
在路由器上修改 DNS 服务器:登录你的路由器管理后台(通常是 192.168.0.1 或 192.168.1.1),在网络设置或 DHCP 服务器设置中,找到 DNS 服务器的设置项。将原本由 ISP 提供的 DNS 地址,改为一些仅提供 IPv4 解析服务的第三方 DNS 服务器地址。
配置 Linux 的 DNS 解析器:如果使用 systemd-resolved,可以在 /etc/systemd/resolved.conf 中设置 DisableAAAAQuery=yes,这会让本地的 DNS 解析器停止查询 IPv6 地址,从而从根本上阻止获取到 IPv6 地址。
修改 resolv.conf (已过时):在 /etc/resolv.conf 文件中添加 options no-aaaa,也可以使系统的 DNS 解析器不查询 AAAA 记录,但这一方法在现代 Linux 发行版中已很少依赖
暂无评论
baidu.com 时,返回 IPv4 地址而不是 IPv6 地址,核心是:关闭 DNS64 的 AAAA 强制转换,让防火墙透传原始 DNS 响应,或强制 DNS 只请求 A 记录。下面按 H3C 防火墙 AFT(NAT64/DNS64)场景给你结论 + 配置。system-view
# 关闭 DNS64 的 ALG 处理,不再强制改 A 为 AAAA
undo aft dns64 alg enable
nslookup baidu.com 只出 39.156.66.10 这类 IPv4baidu.com 只请求 A 记录,不请求 AAAAdns proxy
domain baidu.com query-type a
aft prefix-dns64 64:ff9b:: 96
aft v4tov6 source acl 2000 prefix-dns64 64:ff9b:: 96
undo aft v4tov6 source acl 2000 prefix-dns64 64:ff9b:: 96
# 改用普通 v4tov6 动态转换(不带 DNS64)
aft v4tov6 source acl 2000 address-group 1
system-view
# 1. 放行内网网段(示例 192.168.1.0/24)
acl basic 2000
rule permit source 192.168.1.0 0.0.0.255
rule deny
quit
# 2. 关闭 DNS64 ALG(关键!)
undo aft dns64 alg enable
# 3. 配置 v4tov6 动态转换(用地址池/出接口)
aft address-group 1
address 1.1.1.1 1.1.1.10 # 你的公网 IPv4 地址段
quit
aft v4tov6 source acl 2000 address-group 1
# 4. 确保安全策略放行 DNS(UDP 53)和流量
security-policy
rule name trust-to-untrust
source-zone trust
destination-zone untrust
source-address 192.168.1.0/24
action permit
quit
nslookup baidu.com2400:da00::xxx 这类 IPv6display aft session
aft dns64 alg enable,让防火墙不篡改 DNS 响应,内网就能拿到 IPv4 地址。暂无评论
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
暂无评论