IPv6项目开发测试记录

一、环境
1、网口

IPv6地址 fd00:0:0:1::15

子网前缀长度 64

网关地址(非必须) fd00:0:0:1::1

二、云环境、面板机连云测试
1、面板机设置IPv4地址后可以访问fd00::100这个地址

2、初始化时候服务器地址输入匹配正则式:IPv6地址匹配正则式

(1)无中括号

(??:http|https)/|//)(?:\S+(?::\S*)?@)?(???:[0-9a-z]*:{1,4}){1,7}[0-9a-z]{1,4})|localhost)(?::\d{2,5})?(?/|\?|#)[\s]*)?$
(2)带中括号(中括号内还需确认IPv6地址是否正确匹配,例如双冒号)

(??:http|https)/|//)(?:\S+(?::\S*)?@)?(??:\[{1})(??:[0-9a-z]*:{1,4}){1,7}[0-9a-z]{1,4})|localhost)(?:\]{1})(?::\d{2,5})?(?/|\?|#)[\s]*)?$
(3)单纯匹配IPv6地址

^\s*((([0-9A-Fa-f]{1,4}{7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}{6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}{5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}{4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}{3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}{2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}{1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))?\s*$

匹配方法:(2)(3)组合使用

先使用(2)匹配外部格式,再取中括号内部IPv6地址,使用(3)匹配IPv6地址是否是否符合8组4位16进制

在线正则表达式测试 (oschina.net)

三、使用busybox开启telnet服务测试MQTT 1883 端口
(1)su

输入密码,没有密码可找移动端面板机相关同学

(面板机目前room层有bug,先输入命令任意设置一个IPv4地址 ifconfig eth0 192.168.101.96 或者 ifconfig eth0 169.254.0.0都行)

(2)每次开启adb shell后都需要设置环境变量才能重启busybox服务

(没有安装busybox可以看 DHCPv6之GitHub项目Android侧验证)

export PATH=/data/busybox:$PATH

(3)通过busybox启用telnet服务

busybox telnet -l /system/bin/sh

显示这样:
IPv6项目开发测试记录_第1张图片
(4)通过telnet访问某IP的端口

busybox telnet IP地址 端口

例子:busybox telnet fd00::100 1883

(5)其余命令

终止telnet服务器:busybox ps

busybox kill -KILL pid(进程号)

jobs -l 查看当前运行的进程

四、设置静态Ipv6地址
1、代码里面执行shell命令,去执行“ifconfig eth0 inet6 add fd00:0:0:1::15/64”

抛异常:java.io.IOException: Cannot run program “su”: error=13, Permission denied

2、连接纯Ipv6网络设备可使用usb也可使用wifi adb,wifi adb连接命令,示例:

在这里插入图片描述

五、设置网关测试
IP route命令:https://www.runoob.com/linux/linux-comm-ip.html

ifconfig eth0 169.254.0.0 设置v4本地链路地址

ip -6 addr add fd00:0:0:1::15/64 dev eth0 添加Ipv6地址

ip -6 route add fd00:0:0:1::15/64 via fd00:0:0:1::1 dev eth0 设置网关

路由跟踪查看命令:

(1)先执行命令export PATH=/data/busybox:$PATH,启用busybox,没有安装busybox可以看 DHCPv6之GitHub项目Android侧验证

(2)再执行 busybox traceroute fd00::100,可查看访问到fd00::100经过的路由网关

在这里插入图片描述

(3)带源地址的路由跟踪:busybox traceroute -d fd00::100 -s fd00:0:0:1::15

六、有状态分配网络下,面板机设置静态地址

手动设置v6地址 ifconfig eth0 inet6 add 240e:3b0:302b:24dc:8000::2

手动设置v4地址 ifconfig eth0 169.254.0.0

ping网关 ping6 240E:3B0:302B:24DC:8000::1

ping另一网段的网关 ping6 fd00::1

ping另一网段v6地址 ping6 fd00::100

3、测试结果
IPv6项目开发测试记录_第2张图片
4、面板机侧获取地址为手动设置的地址:

5、有状态电脑端显示情况
IPv6项目开发测试记录_第3张图片
6、
查看路由表 route -A inet6

设置网关(暂时不起作用) route add -A inet6 default gw
IPv6项目开发测试记录_第4张图片

你可能感兴趣的:(android)