家宽和流量都有 IPV6 了,如何能像 IPV4 时代那样使用 DDNS 配合端口转发之类的东西实现公网访问家庭局域网主机上的服务? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Maskeney
V2EX    宽带症候群

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

  •  
  •   Maskeney 2018-10-02 17:40:35 +08:00 16643 次点击
    这是一个创建于 2624 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 配合端口转发来的方便,不知各位有何高见?

    第 1 条附言    2019-07-12 16:46:05 +08:00
    似乎 slaac 方式得到的 IPV6 地址只有主机自己知道,对于网关似乎是完全透明的,除非使用 DHCPv6 模式才能配合 DHCP 服务知道哪个 IP 分配给了哪个主机,但是 Android 不支持 DHCPv6,这一条就足以弃用 DHCPv6。
    综上所述,slaac 方式的 IPV6 网络似乎是无法像 V4 时代一样通过网关上的 DHCP 服务获知局域网主机的 IP。
    33 条回复    2020-12-14 16:50:43 +08:00
    Archeb
        1
    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
        2
    tia  
       2018-10-02 18:10:01 +08:00 via Android
    ddns 目前阿里云的比较好用,不过阿里云的 openwrt 的脚本比较普遍,win 平台有个 py 版的脚本,但是不支持 v6,具体可以在 github 直接搜 aliddns
    Archeb
        3
    Archeb  
       2018-10-02 18:11:18 +08:00
    简单地说就是

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

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


    @innoink nc 在这种需求下怎么用?详细说说?
    Archeb
        8
    Archeb  
       2018-10-02 21:08:39 +08:00
    @Maskeney 没有呢,所以我觉得这可能以后有人会做这样的脚本...
    renothing
        9
    renothing  
       2018-10-02 21:22:04 +08:00   1
    @Maskeney 你如果是 openwrt,那可以在 /etc/hotplug.d/下做脚本,前缀变更就自动执行脚本,拿前缀和局域网的地址做组合来动态更新 dns。如果设备很多,那可以看看 arp 表,iproute2 的 ip nei show 很强大,应该满足你的需求。
    我目前也是用得 openwrt+cloudflare.
    Maskeney
        10
    Maskeney  
    OP
       2018-10-02 21:23:26 +08:00 via Android
    @Archeb 其实我有方案 3 没写…就是等有人造个这样的轮子出来
    Maskeney
        11
    Maskeney  
    OP
       2018-10-02 21:24:46 +08:00 via Android
    @renothing 对我来说…有点难 前缀的话应该是跟 wan 口的地址前缀相同吧…不太需要单独获取,至于 ARP 表…我歇菜了
    renothing
        12
    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
        13
    cwbsw  
       2018-10-02 22:54:27 +08:00
    @renothing
    知识可以更新下了,EUI-64 已被建议不再部署。
    Wenpo
        14
    Wenpo  
       2018-10-03 00:49:00 +08:00 via Android
    没这么复杂,padavan 有现成的啦。点几下就可以了
    ysc3839
        15
    ysc3839  
       2018-10-03 03:15:49 +08:00 via Android
    @renothing 主流操作系统支持 SLAAC 的隐私保护功能,会在段里面随机选择一个 IP 来联网,不会通过 MAC 地址来生成地址。
    Maskeney
        16
    Maskeney  
    OP
       2018-10-03 08:19:33 +08:00 via Android
    @renothing DHCP v6 不是根据主机发送的 DUID 来分配 IP 后缀的么
    Maskeney
        17
    Maskeney  
    OP
       2018-10-03 08:20:03 +08:00 via Android
    @Wenpo 展开说说看?或者是没有仔细审题?
    ifishman
        18
    ifishman  
       2018-10-03 10:23:40 +08:00 via Android
    v6 初丁问一下具体的 ipv6 配置,我现在终端可以获取到 v6 地址,也可以访问外网,但是外网没法访问到终端,DHCPv6 服务器模式,无状态
    Maskeney
        19
    Maskeney  
    OP
       2018-10-03 18:11:04 +08:00
    @ifishman 防火墙?
    ifishman
        20
    ifishman  
       2018-10-04 09:08:54 +08:00 via Android
    @Maskeney openwrt 的默认防火墙不是允许 icmp 流量的吗
    ShareDuck
        21
    ShareDuck  
       2018-10-04 12:13:04 +08:00 via Android
    @ifishman 简单,你把路由器的防火墙关掉测试一下就知道是不是防火墙的问题了。
    zhouyut001
        22
    zhouyut001  
       2018-10-04 23:12:15 +08:00 via Android
    於 ipv6 家用置目前比 ipv4 ,有 ipv4 公的是用 4 吧
    liuxyon
        23
    liuxyon  
       2018-10-05 13:04:35 +08:00
    我可以提供公网 IP 不就行了。
    ifishman
        24
    ifishman  
       2018-10-05 19:23:48 +08:00 via Android
    ipv6 的 ddns 昨晚解决了,另外端口转发我觉得没必要,直接新添流量转发规则就好了
    jim9606
        25
    jim9606  
       2018-10-05 22:56:11 +08:00
    openwrt 的防火墙默认阻止流入 LAN 的 IPV6 流量(部分 ICMPv6 可以),记得加防火墙规则或者禁用 ipv6 防火墙(不安全)。
    如果不介意一些隐私问题可以关掉终端的 slaac 隐私保护,强制使用 eui-64 的接口 id,这样路由器那边可以根据路由自身的 IPV6 地址推算主机 IP
    xinglp
        26
    xinglp  
       2018-10-05 23:15:31 +08:00 via Android
    @jim9606 有类似 upnp 的东西么? 不是映射端口而是放行某个端口的方案。
    BOGU
        27
    BOGU  
       2018-10-29 14:45:39 +08:00
    就等一个轮子了,给内网所有的公网 ipv6 主机分配一个自定义的 DDSN 域名。
    meibu
        28
    meibu  
       2019-07-12 16:34:03 +08:00
    www.meibu.com 提供了 IPV6 的动态域名解析服务,申请个域名绑定 IPV6 地址即可,很简单
    Maskeney
        29
    Maskeney  
    OP
       2019-07-12 16:39:58 +08:00
    @meibu #28 好好读题 难题是在网关这里 如何获取局域网每个设备的 slaac 出来的 IPV6 而不是用什么动态域名服务 就算要用我也没理由放弃 CF 不用去选择这种看起来蛮野鸡的服务
    liuli
        30
    liuli  
       2019-08-25 00:41:59 +08:00
    @Maskeney 现在有好办法了吗,我遇到与你同样的问题,移动宽带只有 IPV6 可以直通,但 nas 的 v6 地址与路由器不同,群晖似乎不支持 v6 地址的 ddns。
    heartrick
        31
    heartrick  
       2020-07-03 18:12:36 +08:00
    @liuli 今天刚装完移动宽带,面临同样的问题。
    lentrody
        32
    lentrody  
       2020-12-14 16:47:38 +08:00
    @cwbsw 如果是需要 DDNS 解析的场景那就还是应该部署啊,如果要解析到域名还有必要使用隐私地址吗?
    lentrody
        33
    lentrody  
       2020-12-14 16:50:43 +08:00
    @ysc3839 隐私地址和 EUI-64 生成地址是可以同时存在的,Windows 里就是这样,访问外部网站时优先使用隐私地址,同时也可以用固定后缀地址访问进来。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2674 人在线最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:55 PVG 22:55 LAX 06:55 JFK 09:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86