家宽和流量都有 IPV6 了,如何能像 IPV4 时代那样使用 DDNS 配合端口转发之类的东西实现公网访问家庭局域网主机上的服务?

2018-10-02 17:40:35 +08:00
 Maskeney

IPV4 时代只要家宽是公网 IP 就可以在路由防火墙上配置端口转发,配合搭建的 DDNS 服务就可以实现公网访问服务,部署一次以后就可以随便用,可以基本上说是一劳永逸。

例如:

使用动态域名 ddns.domain.com:13389 可以访问转发到内网 192.168.1.10:3389 实现 Windows RDP 远程控制;
使用动态域名 ddns.domain.com:10022 可以访问转发到内网 192.168.1.11:22 实现 SSH 的访问。

到了 IPV6 时代,家宽已经正常分配 PD,并且局域网内各个主机也有自己独立的 IPV6 地址,所以端口转发这一步就可以省掉了,实现路由器 Web 控制台访问很简单,OpenWrt 自带的 DDNS 即可方便的获取 WAN 口的 IPV6 地址。但是如何通过一个便捷的、类似于原来的动态域名的方式访问局域网主机上的服务?

目前我能想到的:

1.局域网内的需要被访问的每台主机各自运行脚本,以获取各个主机自己当前的 IPV6 地址,然后再通过 API 更新到域名上。
2.通过上面说的,进入路由器 Web 控制台查看局域网内主机设备当前的 IPV6 地址,然后再进行访问。

上面两种方式都各有优劣,并且由于家宽大部分都是动态 IP,体验上都是远不如 V4 时代 DDNS 配合端口转发来的方便,不知各位有何高见?

15787 次点击
所在节点    宽带症候群
33 条回复
Archeb
2018-10-02 18:06:12 +08:00
> 1.局域网内的需要被访问的每台主机各自运行脚本,以获取各个主机自己当前的 IPV6 地址,然后再通过 API 更新到域名上。

这一点可以由分配地址的路由器做到呀~
比如给 *.home.myhome.com 自动绑定主机名字和分配到的 IPv6 地址不就好了

当然,如果是使用 NDP Proxy 之类方式连接 IPv6 的话,貌似就不能简单的做到这一点了,需要魔改 relay 部分
如果是 DHCP-PD 分配前缀再分配下去的话就很简单

随着 ipv6 的发展,感觉以后会有一个进阶的 DDNS 服务,局域网主机 DDNS,不知道现在有人做了么
tia
2018-10-02 18:10:01 +08:00
ddns 目前阿里云的比较好用,不过阿里云的 openwrt 的脚本比较普遍,win 平台有个 py 版的脚本,但是不支持 v6,具体可以在 github 直接搜 aliddns
Archeb
2018-10-02 18:11:18 +08:00
简单地说就是

路由器根据 DHCPv6 分配列表,给局域网里的设备自动做 DDNS
renothing
2018-10-02 18:25:14 +08:00
局域网开 stateless 模式分配地址。这样,后半部分说固定的.openwrt 上只需要获取网络前缀,就能推算子网下主机得实际地址。
innoink
2018-10-02 20:50:14 +08:00
虽然没搞过路由器,我觉得运行一个 nc 就搞定了啊,不就是端口转发么
Maskeney
2018-10-02 21:05:48 +08:00
@Archeb emmm … openwrt 有这功能?或者 ipk ?
Maskeney
2018-10-02 21:08:28 +08:00
@tia 不用阿里谢谢 我 DNS 在 cloudflare 解析

@renothing 然而这样跟我是的方案 2 没啥区别还是需要手动推算 IP 地址,甚至从某些角度来看,方案 2 复制粘贴更方便


@innoink nc 在这种需求下怎么用?详细说说?
Archeb
2018-10-02 21:08:39 +08:00
@Maskeney 没有呢,所以我觉得这可能以后有人会做这样的脚本...
renothing
2018-10-02 21:22:04 +08:00
@Maskeney 你如果是 openwrt,那可以在 /etc/hotplug.d/下做脚本,前缀变更就自动执行脚本,拿前缀和局域网的地址做组合来动态更新 dns。如果设备很多,那可以看看 arp 表,iproute2 的 ip nei show 很强大,应该满足你的需求。
我目前也是用得 openwrt+cloudflare.
Maskeney
2018-10-02 21:23:26 +08:00
@Archeb 其实我有方案 3 没写…就是等有人造个这样的轮子出来
Maskeney
2018-10-02 21:24:46 +08:00
@renothing 对我来说…有点难 前缀的话应该是跟 wan 口的地址前缀相同吧…不太需要单独获取,至于 ARP 表…我歇菜了
renothing
2018-10-02 22:37:02 +08:00
@Maskeney 给你个参考,新版本可以用更加强大的 ubus 来做,老版本用 hotplug. 两者官方都有参考文档

https://wiki.openwrt.org/doc/techref/hotplug
https://wiki.openwrt.org/doc/techref/ubus

另外,wan 口和 lan 口的地址前缀不一样,wan 口是单独得一个 /64,默认给设备的 /64 在 lan 口上。
比如你要获取分配到 lan 口地址前缀
```
ubus call network.interface.lan status
```
ipv6 stateless 模式下,设备 ipv6 地址段是固定的,根据 mac 地址生成。你把网络段+地址段自己拼接,就是设备完整地址。
https://www.zhihu.com/question/20118076
cwbsw
2018-10-02 22:54:27 +08:00
@renothing
知识可以更新下了,EUI-64 已被建议不再部署。
Wenpo
2018-10-03 00:49:00 +08:00
没这么复杂,padavan 有现成的啦。点几下就可以了
ysc3839
2018-10-03 03:15:49 +08:00
@renothing 主流操作系统支持 SLAAC 的隐私保护功能,会在段里面随机选择一个 IP 来联网,不会通过 MAC 地址来生成地址。
Maskeney
2018-10-03 08:19:33 +08:00
@renothing DHCP v6 不是根据主机发送的 DUID 来分配 IP 后缀的么
Maskeney
2018-10-03 08:20:03 +08:00
@Wenpo 展开说说看?或者是没有仔细审题?
ifishman
2018-10-03 10:23:40 +08:00
v6 初丁问一下具体的 ipv6 配置,我现在终端可以获取到 v6 地址,也可以访问外网,但是外网没法访问到终端,DHCPv6 服务器模式,无状态
Maskeney
2018-10-03 18:11:04 +08:00
@ifishman 防火墙?
ifishman
2018-10-04 09:08:54 +08:00
@Maskeney openwrt 的默认防火墙不是允许 icmp 流量的吗

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

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

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

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

© 2021 V2EX