浏览器访问IPv6地址

目前现在的网络运营商基本都不支持基于IPv6地址访问解析,所以基本用IPv6地址公网是不好使的。
局域网想使用ipv6不同机器互相访问需要支持ipv6的路由器。

ipv6域名解析添加AAAA记录,可以和IPv4的A记录相同,需要有公网IPv6地址(本机的IPv6地址都是局域网的)。

  • http://[IPv6]:port/index.html
  • http://[3ffe:3201:1200:1::91]:8080/index.html

如何判断自己的网络环境是否支持ipv6

随着互联网的发展ipv6的优势不言而喻。很多人想用免费的ipv6,但不能确定自己的网络环境是否支持ipv6。下面介绍了几种比较简单的测试方法。

  1. 如果自己的电脑是win7/8系统,无需进行ipv6配置;xp用户需自己手动配置:
    开始–>运行,输入cmd回车,然后输入ipv6 install回车。

  2. 检查自己的电脑是否有网络连接,如连接正常进行下一步测试。
    检电脑查是否有网络连接说明

  3. 测试方法一:在浏览器地址栏输入网址http://test-ipv6.com/,在页面会给出您的ipv6网络测试结果。
    说明地址
    检测地址

  4. 测试方法二:在浏览器地址栏输入网址http://ipv6.jmu.edu.cn/,如页面右下方的小老虎一直在跳舞,那么恭喜啦,您的ipv6没问题。
    说明地址
    检测地址

  5. 测试方法三:在浏览器地址栏输入网址http://ipv6test.google.com/,如出现下面的界面,那么恭喜您,您的网络支持ipv6.
    说明地址
    检测地址

实现通过 IPv6 地址访问你的服务器

第一步:检查服务器是否开启了 IPv6 监听

首先要确保你的 Web 服务器(比如 Nginx 或 Apache)不仅在听 IPv4 的话,也在听 IPv6 的话。
连接到你的服务器终端。
输入以下命令查看端口状态:

1
2
3
netstat -lnpt | grep 80
# 或者
ss -tlnp | grep 80

看结果:
如果看到 0.0.0.0:80,说明只开了 IPv4。
如果看到 :::80 或者 [::]:80,说明 IPv6 已经开启了。

第二步:修改 Web 服务器配置 (以 Nginx 为例)

如果你发现没有监听 IPv6,需要修改配置文件。

  1. 打开 Nginx 配置文件(通常在 /etc/nginx/nginx.conf 或 /etc/nginx/sites-enabled/default):

    1
    sudo vi /etc/nginx/sites-enabled/default
  2. 找到 server 代码块,修改如下:

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80; # 监听 IPv4 的 80 端口
listen [::]:80; # 增加这一行,监听所有 IPv6 地址的 80 端口

# 如果是 HTTPS (443端口) 也要加:
listen 443 ssl;
listen [::]:443 ssl;

server_name _;
# ... 其他配置保持不变
}
  1. 保存并重启 Nginx:
1
2
sudo nginx -t          # 检查语法是否正确
sudo systemctl restart nginx

第三步:放行防火墙

统信/Linux 系统通常有防火墙,需要确保 IPv6 的流量可以进来。

  1. 如果你使用的是 ufw:
1
2
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
  1. 检查防火墙状态:
1
sudo ufw status

第四步:在浏览器中访问 (关键点)

IPv6 地址在浏览器中使用时,必须放在 方括号 [] 中,否则浏览器会把它当成搜索关键词。

  1. 正常情况(全球单播地址):
    如果是普通的 IPv6 地址,访问格式为:http://[你的IPv6地址]

  2. 你的特殊情况(链路本地地址 fe80):
    由于 fe80 开头的地址是链路本地地址,浏览器必须知道你是通过哪块网卡去连服务器的。

  • 在 Windows 电脑上访问:

    你需要在地址后面加上 % 和你的 本地网卡索引号

    1. 在你的 Windows 电脑(客户端)打开 CMD,输入 ipconfig
    2. 找到你正在连接网络的网卡,看它的 IPv6 地址后面有一个数字(比如 %12)。
    3. 在浏览器输入:http://[fe80::8de5:dc91:a59d:a9f5%12] (把 12 换成你查到的数字)。

第五步:进阶方案(小白推荐:配置一个“静态”IPv6)

fe80 地址太难记且访问麻烦。如果你是想在内网长期稳定使用,建议给服务器配置一个 ULA (唯一本地地址),比如 fd00::1。

  1. 给网卡添加一个更好记的 IPv6:

    1
    sudo ip -6 addr add fd00::1/64 dev eth0  # eth0 换成你的网卡名
  2. 浏览器直接访问:

    http://[fd00::1] (这种地址不需要加 %索引号,非常方便)。

总结

  1. 配置 Nginx:确保有 listen [::]:80;
  2. 方括号:浏览器输入地址必须带 []
  3. 【已废弃】链路本地地址限制:如果你一定要用 fe80 地址,必须在地址末尾加上客户端网卡的 %ID(例如 %12),否则 100% 无法访问。 但现在的浏览器都不支持,所以还是要配置好的ula地址

注意

Windows访问ipconfig 没有ipv6显示,说明 Windows 默认关闭了 IPv6,或者网卡设置里没勾选

1. 按快捷键 `Win + R`,输入 `ncpa.cpl` 并回车,打开“`网络连接`”。
2. 找到你正在使用的这个**“`以太网`”,右键点击它,选择“`属性`”**。
3. 在弹出的窗口中,找到 “Internet 协议版本 6 (TCP/IPv6)”。
4. 一定要勾选它,然后点击确定。
5. 等待 10 秒钟,再次在 CMD 窗口输入 `ipconfig`。

重新运行 ipconfig 后,你应当看到类似下面的内容:

1
2
3
4
以太网适配器 以太网:
...
本地链接 IPv6 地址 . . . . . . . . : fe80::xxxx:xxxx:xxxx:xxxx%15 <-- 注意这个 % 后面的数字
IPv4 地址 . . . . . . . . . . . . : 172.16.19.142

为什么必须加那个 % 后的数字?

因为 fe80 开头的地址叫“链路本地地址”。简单来说,你的电脑可能有多个网卡(有线、无线、虚拟网卡),由于 fe80 这种地址在每个网卡上都可能存在,电脑必须知道你想从 哪块具体的物理网卡 把数据发给服务器。如果不加 %ID,浏览器不知道该从哪条线发数据,访问就会失败。

常见问题排查(如果还是打不开):

  1. Ping 测试:
    在 Windows CMD 输入:ping -6 fe80::8de5:dc91:a59d:a9f5%你的数字。如果 Ping 不通,说明网络物理层可能不支持 IPv6 流量,或者服务器防火墙没开。
  2. 服务器 Nginx 确认:
    确保你服务器上的 Nginx 已经按照我上一个回答的步骤加入了 listen [::]:80;。
  3. 内网防火墙:
    如果 Ping 通了但网页打不开,请在服务器(统信)上运行 sudo ufw disable 临时关闭防火墙试一下。

为什么 ping 可以但浏览器不行?

核心原因: 现代浏览器(Chrome、Edge、Firefox)出于安全原因,大多已经不再支持在地址栏手动输入带有 % 符号的 IPv6 链路本地地址。即使你输入了正确的 %10,浏览器也可能无法正确解析它。

为了解决这个问题并实现稳定访问,请按以下步骤操作(建议跳过 fe80,改用 ULA 地址):

步骤一:给服务器配置一个“好记”的 ULA 地址 (最推荐)

fe80 地址必须带 %才能用,而 fd00 开头的地址(唯一本地地址)不需要带 %
我们将给服务器增加一个地址:fd00::1

  1. 在服务器(统信)终端执行: [临时配置(即时生效,重启消失)]

    1
    2
    3
    4
    5
    6
    #查看ip地址
    ip addr

    # 假设你的网卡名叫 eth0(如果不知道,输入 ip addr 查看)
    # 给网卡添加一个自定义的 IPv6 地址
    sudo ip -6 addr add fd00::1/64 dev enp0s25
  2. 永久配置(重启也还在)
    统信通常使用 NetworkManager。你可以直接用命令行设置:

1
2
3
# 这里的 "enp0s25" 是网卡名,通常连接名也叫这个,如果不确定可以执行 nmcli con show 查看
sudo nmcli connection modify enp0s25 +ipv6.addresses fd00::1/64
sudo nmcli connection up enp0s25

第二步:客户端配置 (Windows 电脑)

非常重要: 因为这是自定义的局域网 IPv6 地址,你的 Windows 电脑也必须有一个同网段的地址(比如 fd00::2),它们才能通话。

  1. 在 Windows 电脑上,右键点击“开始” -> 终端管理员 (或 PowerShell 管理员)。
  2. 输入以下命令给你的 Windows 网卡也加一个地址(假设你的 Windows 网卡名称也叫“以太网”):
    1
    netsh interface ipv6 add address "以太网" fd00::2

(如果不成功,请通过“控制中心->网络连接->属性->IPv6->属性”手动设置:地址 fd00::2,子网前缀长度 64)

第三步:验证连通性

Windows 电脑上打开 CMD,输入:

1
ping fd00::1

如果能看到“来自 fd00::1 的回复”,说明链路已经彻底打通,且不再需要那个烦人的 %10 符号。

第四步:浏览器访问

现在,你可以在浏览器地址栏直接输入这个“好记”的地址了:

http://[fd00::1]

进阶:如果不想背 IP,想用“域名”访问?

在 Windows 电脑上:

  1. 以管理员身份打开 C:\Windows\System32\drivers\etc\hosts 文件。

  2. 在最后添加一行:

    1
    fd00::1  my.uos.server
  3. 以后直接在浏览器输入:http://my.uos.server 即可。