一、环境
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
显示这样:
(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、测试结果
4、面板机侧获取地址为手动设置的地址:
5、有状态电脑端显示情况
6、
查看路由表 route -A inet6
设置网关(暂时不起作用) route add -A inet6 default gw