关于 IPV6 地址的使用问题

2020-05-08 22:52:18 +08:00
 vhus
抛个砖。
ipv6 地址有了,虽然是动态的……吐槽…省略…
好的地方:可以无视防火墙,透过内网,任意去访问每个网络设备,如远程桌面,文件服务器等。
不好的地方:
1.用这个 IPV6 地址是巨大的折磨。
如:在盒子里播放远程 NAS 里共享的电影:
\\240e-3a1-63F-9390-201-32ff-fe2c-a603.ipv6-literal.net\fies\media\XXX.m2ts 要写这么一长串的字母,快疯了呀。
2.不是每个设备都能支持 DDNS 做域名转换,但很难找到它的 IPV6 地址。就算设备支持 DDNS,一堆设备配置起来也很头痛。
3.IPV6 的网络安全问题,所有设备暴露在公网上,这个就不讨论了。
不知有什么新的或更好的解决方案,请大神们来交流一下。
8411 次点击
所在节点    宽带症候群
47 条回复
vhus
2020-05-09 01:48:19 +08:00
@Atomo 是的,这是相对理想状态,以后一定能实现,我们先回到现实,看看有什么经验可分享。
Atomo
2020-05-09 02:00:32 +08:00
@vhus 对于没有开启 SLAAC 功能的设备来说,64 位后缀是固定的静态的,你可以通过网关或者 nas 或者电脑 ddns 获取到 64 位动态前缀,然后拼凑完整的 128 位地址到域名解析
AoTmmy
2020-05-09 02:17:57 +08:00
感觉这种小的东西弄个专门的 ddns 像脱裤子放屁🐶
找一台机器做前端机 ddns 泛解析到 xx.com ,局域网内的机器如果是网页用 nginx 反代,如果是打印机端口转发 31 。感觉只是为了一两个端口的单独 ddns 真是没必要,你也不用输一堆字母了一个域名搞定而且更安全(除了公网打印机)
这种连脚本都跑不了的功能都简单,我感觉集合到一个 ddns 就可以
功能复杂的设备都能跑脚本就直接 ddns
leschans
2020-05-09 06:56:40 +08:00
0. 如果是家庭宽带分配动态 IP 蛮合理的啊。
1. 你写的这个就是域名啊,你不弄个这么长的不就是了。比如 nas.ipv6-literal.net
2. 一般的设备都能弄 DDNS 吧,curl -6 一下就好了,Google 一下很多免费的。要是说内网的手机这类设备 curl 不了,先看看访问手机的用处大不大。
3. 如果你不是真给内网全部设置了 IPv6,你暴露的顶多是 IPv6-PD 地址,要知道后面的得枚举了。实在有必要的可以绑定 MAC 访问。
CheekiBreeki
2020-05-09 08:01:18 +08:00
ddns,用 dynv6 這個支持 4/6 雙桟,跑個腳本 2 分鐘檢測上報就 ok 了
qingxi
2020-05-09 09:19:38 +08:00
支持 dhcpv6 可以指定分配后缀,像原生安卓只支持 slaac 后缀由网卡 mac 地址换算,这个后缀又长又难记
locoz
2020-05-09 10:58:11 +08:00
@vhus #12 有差异的,ipv6 下分配的是公网 ip,ipv4 下分配的是 nat 后的内网 ip...
Michaelssss
2020-05-09 11:16:36 +08:00
nas 看电影还要手输??地址超长就无视把,买个 10 块钱的.icu 域名,挂 AAAA,跑脚本 ddns 完全满足你的需求
wslzy007
2020-05-09 13:20:23 +08:00
保持防火墙打开,使用 sg 穿透防火墙访问即可。访问 url 使用 ipv4 ( ipv4 over ipv6 )
github.com/lazy-luo/smarGate
Atomo
2020-05-09 14:16:28 +08:00
@Atomo #22 我尝试完善了针对固定 ipv6 后缀并且不能跑 ddns 脚本的设备,可通过同一内网的任意设备替它跑 ddns,

1.获取自身 ipv6 外网地址
curl ( https) ipv6.ddnspod.com 返回:2001:1234:1234:1234:1:1:1:1

2.获取自身 ipv6 地址前缀
curl ( https) ipv6.ddnspod.com/prefix 返回:2001:1234:1234:1234::

3.获取自身 ipv6 前缀+自定义后缀
curl ( https) ipv6.ddnspod.com/prefix/22 返回:2001:1234:1234:1234::22
curl ( https) ipv6.ddnspod.com/prefix/2:2:2:2 返回:2001:1234:1234:1234:2:2:2:2
vhus
2020-05-09 14:23:45 +08:00
@AoTmmy 兄弟,我们在说的是一种业务模式,别谈是否有意义。
vhus
2020-05-09 14:35:20 +08:00
@Atomo 我目前也只能通过获取路由器获取网段 ipv6 地址,再通过记录设备 EUI-64 地址,换算为设备公网 ipv6 地址。
地址长度过长这个梗,目前绕不开,如何把它分配个 DDNS 域名,就是最头痛的问题了。
vhus
2020-05-09 14:40:24 +08:00
@Atomo 用一个设备代替其他不能运行脚本的客户端去进行 DDNS 更新,是个解决方案,还需研究一下,争取能在网关上直接运行它。
Atomo
2020-05-09 15:08:45 +08:00
@vhus #33 我用的是这个 dnspod 的稍微修改了一下,加到定时任务就行了,
https://github.com/kkkgo/dnspod-ddns-with-bashshell
Atomo
2020-05-09 15:16:33 +08:00
针对 Only-ipv6

```
token="login_token=${API_ID},${API_Token}&format=json&domain=${domain}&record_type=AAAA&sub_domain=${host}"
Record=$(curl -s -k -X POST https://dnsapi.cn/Record.List -d "${token}")
iferr=$(echo ${Record#*code} | cut -d'"' -f3)
if [ "$iferr" == "1" ];then
record_ip=$(echo ${Record#*value} | cut -d'"' -f3)
echo "[API IP]:$record_ip"
if [ "$record_ip" == "$DEVIP" ];then
echo "IP SAME IN API,SKIP UPDATE."
exit
fi
record_id=$(echo ${Record#*\"records\"\:\[\{\"id\"} | cut -d'"' -f2)
record_line_id=$(echo ${Record#*line_id} | cut -d'"' -f3)
echo Start DDNS update...
ddns=$(curl -s -k -X POST https://dnsapi.cn/Record.Modify -d "${token}&record_type=AAAA&record_id=${record_id}&record_line_id=${record_line_id}&value=${DEVIP}")
ddns_result="$(echo ${ddns#*message\"} | cut -d'"' -f2)"
echo -n "DDNS upadte result:$ddns_result "
echo $ddns | grep -Eo "$IPREX" | tail -n 1
else echo -n Get $host.$domain error :
echo $(echo ${Record#*message\"}) | cut -d'"' -f2
fi
```
vhus
2020-05-09 15:33:29 +08:00
@Atomo 谢谢,脚本有参考意义,我想在 ROUTEROS 路由器上实现它,ddns 用的是 he.net 稍有不同。
Aoang
2020-05-09 16:50:16 +08:00
@vhus 不是我说…打印机、电饭煲这种设备是能直接暴露在公网上的吗?这和裸奔有啥区别???

至于 ddns,我就想知道你是怎么知道设备的 ip 地址的。你都有办法获取到设备的 ip 地址了,我不信脚本完成不了这个功能。
vhus
2020-05-09 17:43:08 +08:00
童鞋请给些有建设性的回复,
打印机,电饭煲只是个业务场景的例子……
如要回答你如何获得 IP 这样盖楼楼就歪了……
flyfishcn
2020-05-09 18:06:25 +08:00
@vhus #38 那些没有提供渠道的场景,怎么获取地址和 ddns 的需求我觉得很可能只是你这样小众人群的需求,而且获取不获取对设备本身功能使用没有什么影响的吧?既然如此,开发者没有留入口给你也是很正常的。
既然是自己的需求,也就别去怪别人把楼盖歪了。那么可以提供两个思路:
1 、用有状态分配地址,这样 dhcpv6 服务器就会维护分配给设备的地址,之间去取来传给 ddns api 更新。
2 、内网用固定的 ULA 地址,网关上做 1 对 1 的 nat,按后缀匹配,前缀从内网网关上取,合成完整的地址传给 ddns api 更新。
或者 VPN 拨进内网,就干脆用 ula 地址访问。
tia
2020-05-09 18:06:59 +08:00
所以静态 ip 才买那么贵啊。ddns 搞个阿里的支持 ipv6 短小好记

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/669819

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX