RT
这里我们使用简单的 httpd 服务进行测试。
实验环境
序号 | IPv4地址 | IPv6地址 |
---|---|---|
1 | 10.144.91.124 | fd88:5110:a240::886:f250 |
2 | 10.144.91.125 | fd88:5110:a240::886:f251 |
3 | 10.144.85.73 | fd88:5110:a240::886:f252 |
测试IPv6访问
在机器 3 上安装 httpd,配置监听 IPv4 和 IPv6 的 80 端口。
文件:/etc/httpd/conf/httpd.conf
1 | Listen 10.144.85.73:80 |
在 1 上通过 curl 访问:
1 | curl 10.144.85.73:80 |
IPv4 可以正常访问,返回数据较长,这里不再展示。
1 | # curl -g [fd88:5110:a240::886:f252]:80 |
IPv6 地址无法访问到 httpd 服务。IPv6 访问不稳定,有时可以正常返回数据。
机器 1 上抓包来看,数据包发送出去了:
1 | 23:42:52.924028 IP6 epic1.52564 > fd88:5110:a240::886:f252.http: Flags [S], seq 480439591, win 28800, options [mss 1440,sackOK,TS val 17786404 ecr 0,nop,wscale 7], length 0 |
此时机器 3 上抓不到包。
HAproxy 代理测试
在机器 1 上安装 HAproxy。
IPv6 代理 IPv4
我们配置 机器 1 的 IPv6 地址来代理 机器 3 的 IPv4 地址,配置如下:
1 | listen httpd6 |
另外,配置了 HAproxy 的管理页面,这里不再赘述。
理论上,可以在浏览器中输入 http://[fd88:5110:a240::886:f250]:8080/
,来测试。
由于公司环境,VPN 没有代理 IPv6 地址,所以只能通过 curl 的方式测试。
在机器 3 上访问:
1 | curl -g [fd88:5110:a240::886:f250]:8080 |
数据可以正常返回,返回用时不稳定,大部分情况下返回结果用时很长,用时近 15s。也有访问无返回的情况。
通过 机器 2 访问时,一切正常!返回速度也很快!
IPv4 代理 IPv6
现在机器 3 的 httpd 服务无法通过 IPv6 正常访问,我们只能采用迂回的方式来做这个测试了。
既然,在机器 2 上可以通过 IPv6 访问 HAproxy 代理的服务,那我们在机器 2 上再做一层 HAproxy。
机器 2 的 HAproxy 配置:
1 | listen httpd4 |
这里的后端 http1 的地址使用的是机器 2 上的 HAproxy 的对外地址。
这里,可以通过浏览器访问 http://10.144.91.125:18080/
:
结论
1、通过 HAproxy 可以实现 IPv4 代理 IPv6,IPv6 代理 IPv4;
2、地址转换时感觉还是有些问题,不确定是否是 httpd 服务的问题还是机器;
3、下一步需要部署真实服务再进行验证;