V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
adrianzhang
V2EX  ›  宽带症候群

如果家宽用 IPv6,域名是怎么对应的?

  •  
  •   adrianzhang · 137 天前 · 2169 次点击
    这是一个创建于 137 天前的主题,其中的信息可能已经有所发展或是发生改变。
    查了一些资料,家宽如果用 IPv6 的话,前缀每次拨号都不同,虽然后缀可以固定,但域名对应的是全地址,你们是怎么解决这个问题的?用 DDNS ?
    37 条回复    2024-08-29 17:32:36 +08:00
    Earsum
        1
    Earsum  
       137 天前   ❤️ 7
    恭喜你,会自问自答了
    adrianzhang
        2
    adrianzhang  
    OP
       137 天前
    @Earsum 好吧,谢谢!
    bao3
        3
    bao3  
       137 天前   ❤️ 1
    先在家里放一台固定的服务器,它成为中转,然后在路由器的 ipv6 里把它的 EUI-64 地址放通,也就是你说得后缀。
然后它有上面跑 ddns ,把域名注册为自己的 ipv6 。这样你家里其他的 ipv6 设备,也通过这台服务器来反代,最终达到通过域名,访问家里所有的 ipv6 设备。又省去了配置 ipv6 防火墙的麻烦。
    mrl1996
        4
    mrl1996  
       137 天前
    我记忆中路由器可以指定前缀拨号,设备可以指定 ipv6 拨号。这样问题是不是迎刃而解
    adrianzhang
        5
    adrianzhang  
    OP
       137 天前
    @mrl1996
    @bao3

    我在想,v4 时代,家庭内网和企业内网(如云 vps ),使用私段,配置成固定私段 IP ,都是一样的。v6 时代,却有挺大不同。可能企业如 @mrl1996 所说指定前缀,家宽内却得如 @bao3 所说这样。不知道我理解对不对。如果是对的话,云上主机的域名就很好解决,家宽内设备虽然有公网,域名却成为了大问题。
    adrianzhang
        6
    adrianzhang  
    OP
       137 天前
    @mrl1996
    @bao3

    v4 时代,家宽内或企业内建立个服务,可以建内网 DNS 来指向它们。虽然 v6 也有私网,但如何设置内网 DNS 才能够利用 v6 公网 IP 这个性质呢?最佳实践应该是怎样的呢?
    HughRyu
        7
    HughRyu  
       137 天前
    PPPOE 拨号,光猫要改成双栈或者桥接之后,路由器拨号,防火墙开放 IPV6 。
    DDNS 域名 更新 AAAA 记录,外部访问域名通过 IPV6 解析。
    adrianzhang
        8
    adrianzhang  
    OP
       137 天前
    @HughRyu

    PPPoE 拨号,内网多台设备。这种情况,我查资料是说 DHCPv6 不太合适,因为它有个租约问题,推荐是用 SLAAC ,主动下发前缀,设备可以固定后缀。那么 DDNS 也是存在租约,该如何解决呢?

    而且我上面提到的内网服务问题。举例:内部建立一个 web ,v4 时代可以建立内网 DNS ,指向私网地址,假设外部端口啥的都放开了,在外部是公网地址,外部 DNS 上用 DDNS 对应公网 IP ,这样无论从内外都可以用同样的域名去访问这个 web 。v6 的话,怎么做呢?内网一个 DNS 指向该设备的 v6 私网地址,外网 DNS 指向它的 v6 公网地址?也就是上一段的 DDNS 租约问题又是怎么解决的?
    vibbow
        9
    vibbow  
       136 天前
    @adrianzhang 内网用私有 ipv6 地址,固定不变
    路由器拿公网 V6 ,做 NAT6

    就和 IPV4 一样,路由器上做端口映射就行
    duduke
        10
    duduke  
       136 天前 via iPhone   ❤️ 1
    ddns 会有问题,比如刚重启的那段时间会失联,我会在 ddns 之外生成一个小火箭订阅,用 argo tunnel 开放出来
    titanium98118
        11
    titanium98118  
       136 天前
    wireguard 回去,继续用 ipv4 访问
    Hhehepei
        12
    Hhehepei  
       136 天前 via Android   ❤️ 1
    @adrianzhang 根据 rfc4193 4.6 节中的规定,对于一个既可以在站点内部也可以在站点外部访问节点,它的 dns 应该指向这个节点的公网地址。对于本地 dns ,在指向它的公网地址之余可以同时指向它的私网地址。

    我猜这应该就是最佳实践了?
    cwek
        13
    cwek  
       136 天前
    固定后缀的话,可以查 ip -6 addr 查出带 dynamic mngtmpaddr noprefixroute 那个地址出来,然后域名直接用 DDNS 更新就好了
    luny
        14
    luny  
       136 天前
    宽带移机,公网 IPV4 被回收了,只能研究了一下 ddns+ipv6 ,凑合也能用。
    dynv6.com
    987N
        15
    987N  
       136 天前
    ddns v6 到 wireguard 上,继续 v4
    adrianzhang
        16
    adrianzhang  
    OP
       136 天前
    @vibbow 嗯,这种方式就如同 v4 一样了。
    adrianzhang
        17
    adrianzhang  
    OP
       136 天前
    @Hhehepei 但是这样的话,配置 DNS 服务器时就有个问题,使用不使用 SLAAC 。例如 Pi-hole ,如果开启 SLAAC ,都指向公网地址,没问题。可是私网地址并不存在动态指定。如果同时指向公网和私网地址,那这个 SLAAC 开不开?或者,得等待 DNS 服务器软件更新功能/给它打补丁/换更灵活支持的 DNS 软件?
    adrianzhang
        18
    adrianzhang  
    OP
       136 天前
    @cwek 查资料指的就是这个 dynamic mngtmpaddr noprefixroute ,它会随着每次拨号变化。实践中变不变?
    adrianzhang
        19
    adrianzhang  
    OP
       136 天前
    @luny 看了一下它的实现方式是客户端定期上报,TTL 可设定在 30sec ,传统的 DDNS 方式。可能 SLAAC 变化不是很剧烈,大概我多虑了……还得做点实验看看。
    Internet0User
        20
    Internet0User  
       136 天前 via Android
    推荐 GitHub 上的开源 DDNS 的项目 ddns-go
    项目地址: https://github.com/jeessy2/ddns-go#%E7%B3%BB%E7%BB%9F%E4%B8%AD%E4%BD%BF%E7%94%A8
    cwek
        21
    cwek  
       136 天前   ❤️ 1
    @adrianzhang
    肯定会变,只是这个帮你从一堆 v6 中找到那个固定后缀的地址。

    如果有配置 ULA 的话,或者可以考虑 NPT ,允许路由将外网的网络段平行 NAT 到 ULA 地址段,这样内网机器 ULA 地址完全固定。
    adrianzhang
        22
    adrianzhang  
    OP
       136 天前
    @cwek 好的,我先按你给的这些线索查查看。
    Hhehepei
        23
    Hhehepei  
       136 天前 via Android
    @adrianzhang 开啊,开了无状态 ipv6 之后,设备的后缀是固定的,对于私网地址,你下发一个固定的前缀就好,这样私网地址就是固定的了,对于公网地址的话,就像楼上说的那样定期检查然后上报就好,反正对于家宽来说下发的前缀一般就是一两周才变一次
    adrianzhang
        24
    adrianzhang  
    OP
       136 天前
    @Hhehepei 好的,谢谢!
    charley008
        25
    charley008  
       136 天前
    ddns-go 不就很完美解决你的问题了吗?
    要么通过命令要么通过网卡。
    ip addr | grep 'inet6 240[89e].*/64' |grep -m1 '' | awk -F '[ \t]+|/' '{print $3}'
    ip addr show ovs_eth0 | grep "inet6.*global"| awk -F '[ \t]+|/' '{print $3}' | grep -m1 ''|awk -F ':' '{print $1":"$2":"$3":"$4":f6a9:97ff:fed1:7897"}'
    adrianzhang
        26
    adrianzhang  
    OP
       136 天前
    @charley008 目前我的 LAN 里有几十个机器,并有内网 DNS ,访问这些机器全靠域名,一部分域名跟外网域名相同。改成 v6 ,用 DDNS ,就很头疼。每个机器安装 ddns 客户端,建立多个条目不说,最重要的是 IP 变化。
    charley008
        27
    charley008  
       135 天前
    @adrianzhang ddns-go 不是可以多建很多个配置吗?我就是 6-7 个域名使用同一个 ddns-go 来配置.只要后缀不变就好办
    adrianzhang
        28
    adrianzhang  
    OP
       135 天前
    @charley008 #27 我理解 ddns-go 建多个配置跟我这个问题无关啊。

    举例来说:IPv4 情况下,30 台 Linux 服务器,通过内网 DNS ,指定 server1.domain.com~server30.domain.com ,然后电脑就用域名访问它们。这种情况下,服务器用固定的私网地址( 192.168.x.x ),在内网 DNS 上建立对应的映射就好了。其中 server30.domain.com 在外网也要用,那么外网上设立的权威 DNS 就把 server30.domain.com 指定为公网 IP 。

    好了,现在 IPv6 了,这 30 个服务器的地址都是动态更新的,如果用 DDNS ,30 台电脑上都得安装 DDNS 客户端,这样内网电脑访问它们才能用域名,当然外网访问也用同样的域名就可以了。DDNS 有个 TTL 对吧,当 IPv6 发生变化的时候,DDNS 可能存在更新不及时问题,那么此时内网的电脑用域名去访问这些内网服务器,就会出现连接故障。

    所以这个问题,上面有回复说用小火箭的,有说设置私网地址 v6 的,有说通过 xxx 能够把私网地址固定的。终究就是要解决一个问题,私网内域名和地址的及时对应。
    adrianzhang
        29
    adrianzhang  
    OP
       135 天前
    @charley008 #27 补充一下,你给出的代码相当于一个 DDNS 客户端的作用。那么在我给出的这个例子中,每台服务器都要这么设置一下对吧。
    lxcopenwrt
        30
    lxcopenwrt  
       135 天前
    我是直接在跑 NGINX 的虚拟机上用 DDNS-GO 更新不用 op 自带的 ddns
    adrianzhang
        31
    adrianzhang  
    OP
       135 天前
    @lxcopenwrt #30 嗯,一个的话还算可以考虑这么干,如果有几十个 nginx, db, redis, k8s, webdav..... DDNS 会痛苦死的,尤其是还存在更新不及时的问题,单独一个服务更新不及时问题不大,内网要全用域名来访问服务的话,就乱了。
    lxcopenwrt
        32
    lxcopenwrt  
       135 天前
    @adrianzhang 可以考虑使用 nginx 的 tcp/udp 转发,外网只访问一台机器的 nginx 就够了,其他机器通过访问这台机器的 IPv6 不同端口然后通过 nginx 转发到其他机器的内网 IPv4 端口即可,http 内容就更简单了直接反代一下不就行了
    adrianzhang
        33
    adrianzhang  
    OP
       135 天前
    @lxcopenwrt #32

    我的场景是内网也用域名联络。Nginx 一台机器,MySQL 另一台机器,这两个机器用域名互相访问,如 web.doamin.comdb.domain.com
    lxcopenwrt
        34
    lxcopenwrt  
       135 天前
    @adrianzhang 内网直接用静态 IPv4 不就行了,实在想用域名 ddns 那边也可以设置指向一个内网 IP ,如果非要指向公网 IPv6 这种非主流那确实没什么好的方案
    charley008
        35
    charley008  
       135 天前 via iPhone
    @adrianzhang 就一台,不需要每一台。这 ipv6 动态变化 基本没办法符合你的要求。话说你都有自己域名了,真内网的话多加一个子域名不就行了。比如 web.domain.com 用 ipv4 内网,web6.domain.com 只用 ipv6 。无非多设置一次而已
    LnTrx
        36
    LnTrx  
       135 天前   ❤️ 1
    先确认一下家宽 IPv6 前缀的变动频率,部分地区很长时间才更新,DDNS 空档期就不是大问题。

    如果各设备后缀不随前缀变化,可以在公网地址的同时解析一个链路本地地址或者唯一区域地址,这样前缀变化不影响局域网连接。
    Atomo
        37
    Atomo  
       95 天前
    内网 30 台设备 v6 后缀固定的话,可以在某一台设备上用
    http://ipv6.ddnspod.com/prefix/:1
    http://ipv6.ddnspod.com/prefix/:2
    http://ipv6.ddnspod.com/prefix/:3
    http://ipv6.ddnspod.com/prefix/:4
    来批量更新 ip 地址,详情
    www.ddnspod.com
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6051 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:35 · PVG 10:35 · LAX 18:35 · JFK 21:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.