关于 IPV6 地址的使用问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vhus
V2EX    宽带症候群

关于 IPV6 地址的使用问题

  •  
  •   vhus 2020-05-08 22:52:18 +08:00 8831 次点击
    这是一个创建于 2052 天前的主题,其中的信息可能已经有所发展或是发生改变。
    抛个砖。
    ipv6 地址有了,虽然是动态的……吐槽…省略…
    好的地方:可以无视防火墙,透过内网,任意去访问每个网络设备,如远程桌面,文件服务器等。
    不好的地方:
    1.用这个 IPV6 地址是巨大的折磨。
    如:在盒子里播放远程 NAS 里共享的电影:
    \\240e-3a1-63F-9390-201-32ff-fe2c-a603.ipv6-literal.net\fies\media\XXX.m2ts 要写这么一长串的字母,快疯了呀。
    2.不是每个设备都能支持 DDS 做域名转换,但很难找到它的 IPV6 地址。就算设备支持 DDNS,一堆设备配置起来也很头痛。
    3.IPV6 的网络安全问题,所有设备暴露在公网上,这个就不讨论了。
    不知有什么新的或更好的解决方案,请大神们来交流一下。
    第 1 条附言    2020-05-09 01:42:06 +08:00
    最近在家办公,通过 IPV6 公网 ip 访问公司的服务器、打印机等应用场景还是挺方便,不用去弄什么 VPN,穿墙等设置。
    IPV6 还是挺好玩儿的,希望大家多给些使用经验和建议。
    47 条回复    2020-07-03 16:08:14 +08:00
    Aoang
        1
    Aoang  
       2020-05-08 23:20:53 +08:00 via Android
    不支持 ddns 做域名转换是什么意思?这个链接用的不是域名吗?

    关于多设备配置 ddns,弄个脚本丢在设备上跑就好了啊。

    安全问题,开防火墙,不用弱口令,定期更换。

    还有动态 ip 的问题,真给你一个静态的,某天被什么网站、服务 ban 了 ip,你怎么整?准备找运营商投诉?

    凡事都有多面性,有利必有弊,根据个人做取舍
    cwbsw
        2
    cwbsw  
       2020-05-08 23:24:13 +08:00
    1. 远程地址,你 v4 也得用域名啊。本地局域网,可以用 ULA 地址,比如 fd::1 。
    2. DDNS 一行 curl 命令的事,能有多复杂。
    3. 我的方案,wireguard 连回家里,allowedip 为家里内网网段,在外面可以一直开着,不访问家里内网时不会占用资源。
    wazon
        3
    wazon  
       2020-05-08 23:44:08 +08:00
    不知道你用的是什么 NAS,群晖里带 IPv6 的 DDNS 配置起来应该不麻烦
    如果想用一台机器自编脚本集中处理 DDNS,那么局域网内的其他设备可以用邻居发现协议( NDP )找到( t/646082#r_8596830
    SLAAC 分配的 IP 地址你会暴露给 ISP 和你主动访问的对象。如果想进一步加强安全性可以配 IPv6 的防火墙( t/669225?p=1#r_8930837


    IPv4 下因为内网的 NAT,所有的外部访问都由路由器集中转发,客观上方便了 DDNS
    IPv6 下不再有 NAT,为用户提供了更大的自由度(比如可以有多台 NAS 用同一套端口方案),同时配置的方式也出现了改变。在这种情况下,可以每台设备各自做 DDNS,可以选择一台中枢设备转发流量(模仿 NAT 的模式),也可以选择一台设备根据 NDP 的信息按 MAC 分别配置 DDNS
    wazon
        4
    wazon  
       2020-05-08 23:46:56 +08:00
    补充:
    群晖里的 DDNS 是图形界面
    SLAAC 分配的 IP 地址除了 本地设备、ISP 和 该设备主动访问的对象,不容易被外人所知,且极难被暴力扫到,因此天生具有一定的安全性
    wjswxp
        5
    wjswxp  
       2020-05-09 00:34:14 +08:00
    你甚至可以强制使用 IPv6 NAT 以增加安全性,只要网关是公网可访问的,你就可以外部接入啊。
    vhus
        6
    vhus  
    OP
       2020-05-09 00:46:57 +08:00
    @Aoang @cwbsw @wazon
    谢谢各位,要给设备个分配个域名,但是设备不一定支持,不是所有的设备都能跑脚本,比如我的小米电饭煲。
    @Aoang 这个链接用的不是域名吗?---不是域名,那就是 ipv6 的地址。
    locoz
        7
    locoz  
       2020-05-09 00:54:42 +08:00 via Android
    1 、内网 dns 解决,路由器上配一下就好了
    2 、ipv6 ddns 可以在路由器上做的,这个问题也不大,获取一下 dhcp 表就好了
    3 、安全问题也好解决,路由器有防火墙,即使内部设备是公网 ipv6 也仍然能被路由器的防火墙阻断特定端口的通信,你仍然可以只开放特定端口
    vhus
        8
    vhus  
    OP
       2020-05-09 00:55:02 +08:00
    ipv6 的好处之一就是网关透明的,不用去考虑 NAT 、端口等问题。
    亟待解决的就是如何给每个设备分配个域名,而不是每次敲一长串地址,况且那地址总是在变。
    AoTmmy
        9
    AoTmmy  
       2020-05-09 00:55:04 +08:00 via Android
    不支持脚本的可以用端口转发,在内网设备上转发指定端口
    vhus
        10
    vhus  
    OP
       2020-05-09 00:59:08 +08:00
    @AoTmmy 那又几乎退回到 IPV4 的配置方式了呀。
    zro
        11
    zro  
       2020-05-09 01:00:43 +08:00
    3.有公网 IP 不代表就暴露了,要取决网关帮不帮你路由进来的,默认只允许路由出去的。。

    @cwbsw #2 你是在 OpenWRT 搭的 WireGuard Server 吗?
    vhus
        12
    vhus  
    OP
       2020-05-09 01:04:03 +08:00
    @locoz 如果用 ipv6 dhcp 分配地址,那就跟 ipv4 没有多大差异,也就没必要说这个问题了。
    比较容易的是 ND 方式自动分配。
    AoTmmy
        13
    AoTmmy  
       2020-05-09 01:08:49 +08:00 via Android
    @vhus 你设备连 curl 或者脚本都不支持的话用 IPv6 也没有什么意义吧,内网走 IPv4 也比 v6 方便。你这个输入的 v6 地址也不知道意义何在,ddns 到 a.ipv6-literal.net 或者 xx.ipb6-literal.net 不就行了
    vhus
        14
    vhus  
    OP
       2020-05-09 01:12:06 +08:00
    @zro 常用的家用级路由器,只要获取了公网 ipv6 地址,如果没开防火墙每个设备就都暴露在公网上。
    网络安全不是我目前想解决的重点,重点是 ipv6 ddns 。
    Atomo
        15
    Atomo  
       2020-05-09 01:15:35 +08:00
    不能跑脚本的设备,根本就没打算让你主动访问,都是被动的,你主动访问小米电饭煲有啥用?

    如果该设备有跑服务程序,并且让你主动访问,肯定有设置 ip 的方式

    获取 ipv6 地址可以从互联网取得 ( https://)ipv6.ddnspod.com
    vhus
        16
    vhus  
    OP
       2020-05-09 01:23:31 +08:00
    @AoTmmy 我的问题是在 ipv6 的使用方面,意义还是有的,ipv6 方便的地方也就是可以 IP 到 IP 的直接连接,不用通过 NAT 、端口转发。问题主要就是----如何不写那么长的字符,转换成固定的域名。
    vhus
        17
    vhus  
    OP
       2020-05-09 01:29:40 +08:00
    @Atomo
    访问电饭煲当然是做饭,而且设定环境为远程访问,常规方法的是路由器器上做端口映射或架 VPN 这个不用讨论了,我们说的是在 IPV6 环境下的应用。
    设备已有 ipv6 地址了。
    vhus
        18
    vhus  
    OP
       2020-05-09 01:33:56 +08:00
    统一感谢楼上回复的兄弟们,可能做饭意义不大,我把电饭煲的例子换为打印机吧。^_^
    Atomo
        19
    Atomo  
       2020-05-09 01:37:39 +08:00 via Android
    从我的角度考虑,物联网设备最好有一个云平台,设备发心跳包告知平台状态和 ip,控制终端(手机或者电脑)通过认证接入平台,进而控制相应的设备
    Atomo
        20
    Atomo  
       2020-05-09 01:43:04 +08:00 via Android
    想把设备的当前 ipv6 地址和域名做绑定,还是要设备主动告知,不管是告知云平台,还是告知 ddns,否则比较难实现,因为 v6 地址是动态的,这也是 v6 的安全之处
    vhus
        21
    vhus  
    OP
       2020-05-09 01:48:19 +08:00
    @Atomo 是的,这是相对理想状态,以后一定能实现,我们先回到现实,看看有什么经验可分享。
    Atomo
        22
    Atomo  
       2020-05-09 02:00:32 +08:00 via Android
    @vhus 对于没有开启 SLAAC 功能的设备来说,64 位后缀是固定的静态的,你可以通过网关或者 nas 或者电脑 ddns 获取到 64 位动态前缀,然后拼凑完整的 128 位地址到域名解析
    AoTmmy
        23
    AoTmmy  
       2020-05-09 02:17:57 +08:00 via Android
    感觉这种小的东西弄个专门的 ddns 像脱裤子放屁
    找一台机器做前端机 ddns 泛解析到 xx.com ,局域网内的机器如果是网页用 nginx 反代,如果是打印机端口转发 31 。感觉只是为了一两个端口的单独 ddns 真是没必要,你也不用输一堆字母了一个域名搞定而且更安全(除了公网打印机)
    这种连脚本都跑不了的功能都简单,我感觉集合到一个 ddns 就可以
    功能复杂的设备都能跑脚本就直接 ddns
    scsb
        24
    scsb  
       2020-05-09 06:56:40 +08:00 via iPhone
    0. 如果是家庭宽带分配动态 IP 蛮合理的啊。
    1. 你写的这个就是域名啊,你不弄个这么长的不就是了。比如 nas.ipv6-literal.net
    2. 一般的设备都能弄 DDNS 吧,curl -6 一下就好了,Google 一下很多免费的。要是说内网的手机这类设备 curl 不了,先看看访问手机的用处大不大。
    3. 如果你不是真给内网全部设置了 IPv6,你暴露的顶多是 IPv6-PD 地址,要知道后面的得枚举了。实在有必要的可以绑定 MAC 访问。
    CheekiBreeki
        25
    CheekiBreeki  
       2020-05-09 08:01:18 +08:00 via Android
    ddns,用 dynv6 支持 4/6 ,跑本 2 分上就 ok 了
    qingxi
        26
    qingxi  
       2020-05-09 09:19:38 +08:00 via Android
    支持 dhcpv6 可以指定分配后缀,像原生安卓只支持 slaac 后缀由网卡 mac 地址换算,这个后缀又长又难记
    locoz
        27
    locoz  
       2020-05-09 10:58:11 +08:00
    @vhus #12 有差异的,ipv6 下分配的是公网 ip,ipv4 下分配的是 nat 后的内网 ip...
    Michaelssss
        28
    Michaelssss  
       2020-05-09 11:16:36 +08:00
    nas 看电影还要手输??地址超长就无视把,买个 10 块钱的.icu 域名,挂 AAAA,跑脚本 ddns 完全满足你的需求
    wslzy007
        29
    wslzy007  
       2020-05-09 13:20:23 +08:00
    保持防火墙打开,使用 sg 穿透防火墙访问即可。访问 url 使用 ipv4 ( ipv4 over ipv6 )
    github.com/lazy-luo/smarGate
    Atomo
        30
    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
        31
    vhus  
    OP
       2020-05-09 14:23:45 +08:00
    @AoTmmy 兄弟,我们在说的是一种业务模式,别谈是否有意义。
    vhus
        32
    vhus  
    OP
       2020-05-09 14:35:20 +08:00
    @Atomo 我目前也只能通过获取路由器获取网段 ipv6 地址,再通过记录设备 EUI-64 地址,换算为设备公网 ipv6 地址。
    地址长度过长这个梗,目前绕不开,如何把它分配个 DDNS 域名,就是最头痛的问题了。
    vhus
        33
    vhus  
    OP
       2020-05-09 14:40:24 +08:00
    @Atomo 用一个设备代替其他不能运行脚本的客户端去进行 DDNS 更新,是个解决方案,还需研究一下,争取能在网关上直接运行它。
    Atomo
        34
    Atomo  
       2020-05-09 15:08:45 +08:00
    @vhus #33 我用的是这个 dnspod 的稍微修改了一下,加到定时任务就行了,
    https://github.com/kkkgo/dnspod-ddns-with-bashshell
    Atomo
        35
    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
        36
    vhus  
    OP
       2020-05-09 15:33:29 +08:00
    @Atomo 谢谢,脚本有参考意义,我想在 ROUTEROS 路由器上实现它,ddns 用的是 he.net 稍有不同。
    Aoang
        37
    Aoang  
       2020-05-09 16:50:16 +08:00 via Android
    @vhus 不是我说…打印机、电饭煲这种设备是能直接暴露在公网上的吗?这和裸奔有啥区别???

    至于 ddns,我就想知道你是怎么知道设备的 ip 地址的。你都有办法获取到设备的 ip 地址了,我不信脚本完成不了这个功能。
    vhus
        38
    vhus  
    OP
       2020-05-09 17:43:08 +08:00
    童鞋请给些有建设性的回复,
    打印机,电饭煲只是个业务场景的例子……
    如要回答你如何获得 IP 这样盖楼楼就歪了……
    flyfishcn
        39
    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
        40
    tia  
       2020-05-09 18:06:59 +08:00
    所以静态 ip 才买那么贵啊。ddns 搞个阿里的支持 ipv6 短小好记
    tia
        41
    tia  
       2020-05-09 18:09:51 +08:00
    @Aoang #37 想太多。现在基本找不到能自己获取并且通过外网 p2p 管理的智能家居,就算等到那时候配套的安全措施也有了
    wazon
        42
    wazon  
       2020-05-09 18:42:53 +08:00
    再总结一下,对于无法配置 DDNS 的物联网设备,可以在(旁)路由集中处理。
    理论可行的有以下方案:
    1. 仿照 IPv4 下的现状 做端口转发(利用相对稳定的本地链路地址)
    2. 后缀不变的设备,在路由器拼接动态前缀+固定后缀 做 DDNS
    3. 后缀会变的设备,在 NDP 的结果里照着 MAC 地址找到新的公网 IP 做 DDNS
    qbqbqbqb
        43
    qbqbqbqb  
       2020-05-10 11:49:31 +08:00
    @vhus 大部分家用路由器都自带 IPv6 防火墙默认开启,有的还不提供关闭防火墙的设置(比如 NETGEAR )。但凡是路由器拨号用户基本都不用考虑这个安全问题。
    有问题的反而是光猫自动拨号用户,光猫超级管理员页面有一个防火墙设置,设为高则默认阻断,设为低则默认暴露,这个设置都是运营商自动推送的,而且用户不破解超密也没法修改。
    myzincx
        44
    myzincx  
       2020-05-11 11:01:03 +08:00
    对于只是想个人访问的设备的话,我倾向于是自己搭建一个 vpn,类似于 wireguard 甚至 v2ray,然后在 vpn 服务器上跑 ddns 。
    这样既避免了直接暴露诸如物联网设备暴露在公网(虽然如果获取到了公网 ipv6 就是变相暴露,但是首先 ipv6 现阶段基本没可能暴力扫描出来,其次也可以配置路由器防火墙,只对外开放 vpn 服务器的对应端口),又解决了你此类设备不好跑 ddns 脚本的难题。
    个人使用的就是 v2ray 架设在 n1 上,然后关闭其他所有设备的 ipv6 入网。
    lentrody
        45
    lentrody  
       2020-07-03 10:31:21 +08:00
    @wazon 支持 IPv6 的设备应该都可以通过 SLACC 生成固定后缀地址吧,隐私地址才是可选项。

    固定后缀也不需要在路由器里拼接,运营商一次只会给你分配一个前缀,只需要把一台设备的完整地址发给 DDNS 服务端就行,再把某个设备的固定后缀提供给服务端一次就行。

    我现在就在用 dynv6,在刷了 padavan 的主路由上挂 dynv6 提供的脚本来提供外网 IPv6 地址,然后把内网一台主机的固定地址后缀在添加上去就行了。

    wazon
        46
    wazon  
       2020-07-03 15:55:22 +08:00
    @lentrody
    现代操作系统的隐私扩展一般是默认打开的,固定后缀通常需要额外设置,有的设备不方便改,如果重装也要重新设定

    我给的拼接思路是为了兼容隐私扩展,尽可能减少自动化脚本以外的配置

    你不需要拼接看起来是因为 dynv6 替你完成了拼接,一般 DNS 的每条记录都需要提供完整的 IPv6,拼接只能在本地完成
    wazon
        47
    wazon  
       2020-07-03 16:08:14 +08:00
    @lentrody
    你的方案适用于这样的特定场景:
    1.需要 DDNS 的设备都能保持固定后缀,且在同一个网段下
    2.不一定每个设备都方便配置脚本,但至少有一个可以
    3.选择如 dynv6 这样可以自动修改整个 zone 前缀的特定 DNS 服务
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2513 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 15:07 PVG 23:07 LAX 07:07 JFK 10:07
    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