家庭物联网 篇二:基于群晖和IPv6的简陋外网访问方式
小朋友换学校,迁网络,同时也失去了公网IPv4。
IPv6折腾好了(本篇不赘述),就是DDNS比较麻烦。
对于绝大多数人来说,内网每台设备的IPv6有了,端口也是原端口(非拨号路由器上的映射),记住每台设备的短地址(后缀),如果再能获知前缀地址,基于TCP/IP的应用就都可以玩了。
家用网络设备上的DDNS并非不支持IPv6,比如华硕路由,在外网ping xxx.asuscomm.com,获得的是路由器的完整IPv6(这个地址对于我们访问内网的其他设备没有帮助);而群晖,ping xxx.synology.me,获得的是[前缀::后缀]形式的地址。
但在浏览器或一些客户端应用上,优先解析的是IPv4,https://xxx.synology.me:5001是无法访问的,只能手动填写https://[前缀::后缀]:5001的形式,当然这样访问,证书肯定是无法验证的。
其实每次获取IPv6,也不用先打开命令行ping群晖,再复制前缀地址,然后拼接URL,可以用脚本来实现,下面是AutoIt3的。
#include <AutoItConstants.au3>
#include <String.au3>
#include <Process.au3>
Local $sOutput = ""
Local $iPID = Run(@ComSpec & " /c " & "ping xxx.synology.me | findstr [.*]", "", @SW_HIDE, $STDOUT_CHILD)
While 1
$sOutput &= StdoutRead($iPID)
If @error Then ExitLoop
WEnd
Local $IPv6 = StringSplit($sOutput,"[]")
Local $sURL="start firefox https://[" & $IPv6[2] & "]:5001"
_RunDOS($sURL)
或者cmd/bat批处理更简单
@echo off
for /f "tokens=2 delims=[]" %%i in ('ping xxx.synology.me ^| findstr [.*]') do (
start firefox https://[%%i]:5001
)
如果应用本身不支持IPv6那就没办法了,比如目前没搞定Seafile的Windows客户端。
手机上我用笨办法Ping & Net应用获取IPv6,DS file能勉强用。
以上方法过于简陋,DS Photo等需要保持同步的应用,你们还是投奔Lucky或ddns-go吧。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
吹了一口西瓜
校验提示文案
无证水电工小青蛙
校验提示文案
Eleven哥
校验提示文案
zczc0417
校验提示文案
zczc0417
校验提示文案
Eleven哥
校验提示文案
吹了一口西瓜
校验提示文案
无证水电工小青蛙
校验提示文案