家里弄了个 vm 开 wireguard server,办公室 v4 over v6 获得 v6 能力, 1 年多才搞定 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
yyysuo
V2EX    宽带症候群

家里弄了个 vm 开 wireguard server,办公室 v4 over v6 获得 v6 能力, 1 年多才搞定

  •  
  •   yyysuo 2024-05-30 16:10:04 +08:00 2984 次点击
    这是一个创建于 498 天前的主题,其中的信息可能已经有所发展或是发生改变。
    想起来就折腾折腾,感觉很简单,一直不成功,最近终于搞定了,搜索了一下,网上没人写过相关的,记录一下需要避的坑。

    1:因为 wireguard server 没开在主路由上,是在 esxi 里面新建了个 alpine ,本身有 v6 能力。
    2:alpine 本身需要开 nt.ipv6.conf.all.forwarding=1 这个参数,单独加这个参数会导致 alpine 分配不到公网 ipv6 地址,完整的参数如下
    net.ipv4.ip_forward=1
    net.ipv6.conf.all.forwarding=1
    net.ipv6.conf.default.autocOnf=1
    net.ipv6.conf.eth0.autocOnf=1
    net.ipv6.conf.all.accept_ra=2
    net.ipv6.conf.default.accept_ra=2
    net.ipv6.conf.eth0.accept_ra=2

    3:wireguard 配置中,v6 地址子网掩码要写 128
    Address = 10.7.0.1/24, fd86::1/128

    防火墙也要添加 v6 规则
    PostUp = ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = ip6tables -t nat -D POSTROUTING 1; iptables -t nat -D POSTROUTING 1
    第 1 条附言    2024-05-30 16:49:43 +08:00
    抱歉,才发现题目写倒了,是 v6 over v4 。
    第 2 条附言    2024-05-31 10:11:39 +08:00
    感谢 ranaanna 大佬,确实只需要如下参数即可:
    net.ipv4.ip_forward=1
    net.ipv6.conf.all.forwarding=2
    net.ipv6.conf.eth0.accept_ra=2
    22 条回复    2024-06-01 04:33:22 +08:00
    cJ8SxGOWRH0LSelC
        1
    cJ8SxGOWRH0LSelC  
       2024-05-30 16:14:15 +08:00
    都说 wireguard 简单, 确实简单, 但是配置成想要的效果太难了, 我也想打通两个局域网的所有设备, 但是折腾好久都没成功, 最后还是用 openvpn 了, 也好用的很。
    yyysuo
        2
    yyysuo  
    OP
       2024-05-30 16:20:03 +08:00
    @StinkyTofus 基础知识到位,啥都简单,不到位,啥都难,都是个学习的过程。
    strobber16
        3
    strobber16  
       2024-05-30 16:34:07 +08:00 via Android
    好奇用的哪种 6to4 隧道。按理说国内没有哪家提供这种服务了,用哪种都跑不了会有巨大延迟
    yyysuo
        4
    yyysuo  
    OP
       2024-05-30 16:49:19 +08:00
    @strobber16 抱歉,才发现题目写倒了,是 v6 over v4 。
    zhutianjingtu
        5
    zhutianjingtu  
       2024-05-30 17:23:40 +08:00
    cloudflare warp 是不是轻松解决?
    mortal
        6
    mortal  
       2024-05-30 17:38:39 +08:00
    之前用 softether 单得很
    busier
        7
    busier  
       2024-05-30 17:47:54 +08:00
    @yyysuo 1 年~~~~
    ranaanna
        8
    ranaanna  
       2024-05-30 22:14:28 +08:00
    1.OP 说得对这确实是 alpine linux 需要避的坑,但是 net.ipv6.conf.all.forwarding=2 net.ipv6.conf.eth0.accept_ra=2 即可,不需要其他。
    2. 128 是可以的,但是子网掩码/64 也未尝不可,而且是更符合常理的值,另外很多人用/112 ,都不会影响到成功
    3. 怎么会“没人写过相关的”,一搜一堆的,而且是各种 wireguard-install 脚本的常规操作
    4. 给到的只是一个私网地址,聊胜于无而已。其实比较有挑战性的是从家里的 ipv6 地址池中(一般是/60 或/56 )通过隧道分配一个公网 ipv6 网络给办公室,让办公室希望有 ipv6 的都有公网 ip ,这样也就没有 ip6tables 什么事了。这对于静态 ip 是容易的,但似乎对于家宽这种动态 ip 的,还真“没人写过相关的”。
    lcy630409
        9
    lcy630409  
       2024-05-30 22:19:22 +08:00
    我也觉得奇怪,目前一键部署的 wg 脚本 基本都能 v6 over v4....落地机有 v6 就行了

    落地机有多个 v6 怎么分发给 client 是难点
    yyzh
        10
    yyzh  
       2024-05-30 22:27:41 +08:00 via Android
    @mortal +1 softether 贼简单而且很多第三方 openwrt 都给你配好了,连上去之后 openwrt 负责 v4 和 v6 的地址分配就像直接用网线连着的一样
    qsnow6
        11
    qsnow6  
       2024-05-30 22:39:24 +08:00
    tailscale 更简单
    emUi998
        12
    emUi998  
       2024-05-31 08:43:05 +08:00
    没想到这个是难点啊,分享下我的做法:
    1. 家庭 openwrt 作为主路由,pppoe 拨号,wan 获取到了/60 的 ipv6 pd
    2. openwrt 上启动个 wireguard 隧道,在接口 advanced 里设置下,IPv6 assignment length=64 ,hint 自己挑个没用过的(其他接口也可以按照这个模式调整下),然后 IPv6 prefix filter 选择 wan6 ,这样 wg 接口就能获取到 IPv6 了
    3. wireguard allowIP 里挨个终端分配下公网 IP 地址
    这样操作完电脑、手机都是能通的,测 IP 也是公网 IP

    还有种操作,是远程路由器上直接获得家里的 ipv6 PD ,也是差不多,只不过手动写个/64 的 ipv6 段到 allowIP 里,然后把这个段配置到远程路由器的 lan 接口的 ipv6 上,通过 slaac 就能给所有子网设备分配 IPv6 地址了。


    关于家宽动态 IP 的问题,路由器上可以写个小服务自己刷新(需要自备一台公网服务器同步数据).但是手机 App 不会写,就手动改改了,一般也就改个 endpoint 和 IPv6 地址。
    user100saysth
        13
    user100saysth  
       2024-05-31 08:58:00 +08:00
    @emUi998 动态 ip 问题,可否直接用本地脚本 dingding 推送
    yyysuo
        14
    yyysuo  
    OP
       2024-05-31 09:22:22 +08:00
    @ranaanna 还是基础知识太差了,如果仅搜索 wireguard 回家、v6 之类的关键词,我确实没见到有提到的,我是问了 chatgpt.......; 64 好像确实可以,我看都是服务端配 64 ,客户端配 128 ?需求比较简单就干脆都 128 了;至于把家里的公网 IP 分给办公室的电脑,确实没有相关的,一般都是搞 vps 的 v6 来分,毕竟是静态,等有需求再搞吧。
    yyysuo
        15
    yyysuo  
    OP
       2024-05-31 10:10:50 +08:00
    @ranaanna 试了一下,确实是这样的,感谢。
    net.ipv4.ip_forward=1
    net.ipv6.conf.all.forwarding=2
    net.ipv6.conf.eth0.accept_ra=2
    flynaj
        16
    flynaj  
       2024-05-31 11:17:02 +08:00 via Android
    为啥用 alpine ,用 openwrt 啊,配置简单
    ranaanna
        17
    ranaanna  
       2024-05-31 11:27:07 +08:00
    @yyysuo 客户端也可以是/64 。实际上写成/128 也可以用,是有点造成使用者困惑的的地方。为此在哪里看到过作者还专门做过解释,address=中指定的/24, /64 ,只是地址的子网掩码和前缀长度的意思。通常 ipv6 地址的前缀长度,都应该是 64
    ranaanna
        18
    ranaanna  
       2024-05-31 11:47:49 +08:00
    @flynaj 感觉 OP 选择 alpine 是有他的理由的。两者没有可比性,或者说不一定能互相替代。openwrt 很小,它可以很好地完成一些与网络控制/路由/应用相关的事,因为它是一个嵌入式系统。另一方面,apline 也很小,但它可以完成更多的事,因为它是一个极简的 linux 发行版,与大量应用程序相兼容。
    petercui
        19
    petercui  
       2024-05-31 18:21:40 +08:00
    @ranaanna 目前运营商宽带通告的基本是 /60 ,也就是说家庭内部还可以再分 4 个子网。
    ranaanna
        20
    ranaanna  
       2024-05-31 22:39:13 +08:00
    @petercui /60 的前缀长度可以分 16 个/64 子网
    flynaj
        21
    flynaj  
       2024-06-01 01:05:25 +08:00
    @ranaanna #18 你可能只用过 国内这些修改版,op 原版有 7000 多个软件包。alpine 有 5000 多个。像国人的开源软件 natmap 在 op 就有,alpine 没有。
    ranaanna
        22
    ranaanna  
       2024-06-01 04:33:22 +08:00 via iPhone
    @flynaj 并没有在比较软件包的多少呀。当然如果算上 community repo ,alpine 目前是 24000 多个。只是说虽然两者都是 Linux ,但是定位完全不同,一个是可定制的嵌入式设备操作系统(是定制不是修改版,也没有国内国外之分),另一个是 Linux 发行版。每个人的喜好和熟悉角度不同,本人似乎是后者更喜欢和觉得简单一些
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2678 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 15:06 PVG 23:06 LAX 08:06 JFK 11:06
    Do have faith in what you're doing.
    ubao 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