怎样通过 wireguard 给 peer 分配 IPv6 地址呢 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiaofami
0.16D
V2EX    宽带症候群

怎样通过 wireguard 给 peer 分配 IPv6 地址呢

  •  
  •   xiaofami 2024-03-18 14:13:43 +08:00 5143 次点击
    这是一个创建于 573 天前的主题,其中的信息可能已经有所发展或是发生改变。

    家里一条联通宽带可获得 60 长度且动态变化的 IPv6 前缀,同时具备公网 IPv4 地址。借助 DDNS 和端口转发,我在只支持 IPv4 的单位局域网中通过 wireguard 可以连回家中。现在我想让单位电脑这个 peer 获取到 IPv6 地址以访问 IPv6 站点,,应当怎么实现呢?

    29 条回复    2024-07-12 10:28:37 +08:00
    maybeonly
        1
    maybeonly  
       2024-03-18 14:18:56 +08:00   2
    分配 fd 开头的私网 v6 然后做 nat/snpt
    terrancesiu
        2
    terrancesiu  
       2024-03-18 15:02:01 +08:00   1

    使用 routeros 的 netmap 方式
    自动翻译 ipv6 地址,还能走策略路由
    xiaofami
        3
    xiaofami  
    OP
       2024-03-18 15:44:29 +08:00
    @terrancesiu 我也在用 routeros ,目前尝试的 IPv6 设置如下:

    在 IPv6 Addess List 中,为 wireguard 接口分配了 fd00:172:31:1::100/128 地址,在 IPv6 Firewall 的 NAT 表中,新建了 Action:netmap ,Chain:srcnat ,Src.Address:fd00::/8 规则,Peer 的设置也进行了更新。但是 peer 端 ping 这个 IPv6 地址并不通,应当怎样修改呢,恳请指点一二:

    https://img.duan.ee/z/2024/03/18/65f7f00aceba7.png

    https://img.duan.ee/z/2024/03/18/65f7f00adeffb.png

    https://img.duan.ee/z/2024/03/18/65f7f00aee63e.png

    https://img.duan.ee/z/2024/03/18/65f7f00b091d6.png

    https://img.duan.ee/z/2024/03/18/65f7f0cf693b7.png
    rulagiti
        4
    rulagiti  
       2024-03-18 17:03:33 +08:00   1
    客户端和服务器都配置 ipv6 私有地址方法同 ipv4 ,然后服务器配置 nat6 。
    xqzr
        5
    xqzr  
       2024-03-18 17:29:57 +08:00   1
    @xiaofami 最后一张图,“公钥”是 Windows “Routeros”接口所显示的“公钥”、“允许 IP”最后一位是 3
    xqzr
        6
    xqzr  
       2024-03-18 17:32:07 +08:00   1
    另外,可以在 “wireguard1” 接口 RA 宣告,ISP 的前缀
    cndns
        7
    cndns  
       2024-03-18 18:25:15 +08:00 via Android
    直接分配 ipv6 公网地址吗?
    keyfunc
        8
    keyfunc  
       2024-03-18 18:35:34 +08:00
    @xqzr 这个怎么做?我通过 Wireguard 连接进来的设备,ipv6 出口 ip 都只有一个
    xqzr
        9
    xqzr  
       2024-03-18 19:25:06 +08:00
    @keyfunc 和 LAN 接口一样
    keyfunc
        10
    keyfunc  
       2024-03-18 20:06:51 +08:00
    ```
    /ipv6 dhcp-client
    add interface=pppoe-out1 pool-name=ipv6-pool-gua prefix-hint=240e:0:0::/56 request=prefixuse-peer-dns=no
    /ipv6 address
    add address=::XXXX eui-64=yes from-pool=ipv6-pool-gua interface=br-lan0
    /ipv6 nd
    set [ find default=yes ] advertise-dns=no interface=br-lan0 mtu=1442 ra-interval=30s-10m
    ```

    ```
    /ipv6 route
    add disabled=no dst-address=fc86:XXXX::/64 gateway=wireguard1 routing-table=main
    ```

    我的配置是这样的,lan 口上做了以上配置,wireguard 只是加了条路由,但无法 wg 的客户端拿不到 ra 给的前缀。
    xqzr
        11
    xqzr  
       2024-03-18 20:18:51 +08:00
    @keyfunc 对 wg 接口,执行第 2 条命令
    xqzr
        12
    xqzr  
       2024-03-18 20:27:52 +08:00
    wg 接口在 br-lan0 里吧...
    ”允许 IP“包含 fe80::/10,ff02::1
    ranaanna
        13
    ranaanna  
       2024-03-18 20:32:48 +08:00   1
    首先是这个问题,可能是出在没有搞清楚 address 后面的/32, /128 是什么意思。wireguard 的说明文档中说得还是比较清楚的,就是子网掩膜的意思,所以为什么不是/24, /64 呢?
    其次是题外话,运营商给了你一个/60 前缀而不仅仅是一个地址,就是为了给你划分多个子网的自由,让你最多 16 个 sites 的设备都有公网 ipv6 地址,运营商负责路由这个/60 网段的所有流量。所以只用其中一个子网中的其中的一个地址,然后像 ipv4 那样 nat ,是不是有点...浪费?
    其实很简单,两边都选择一个在这个/60 之内,且在同一子网的 ipv6 地址即可,例如如果前缀是 xxxx:xxxx:xxxx:xxx0::/60 ,那么可以选 xxxx:xxxx:xxxx:xxx1::2/64 和 xxxx:xxxx:xxxx:xxx1::3/64 。其中 1 处可以有 16 种选择,而 2 和 3 的选择就无穷无尽啦。至于动态前缀,理论上似乎也只要相应地动态更新这两个地址即可。更进一步地,可以在一边的 peer 运行 router advertisement, wireguard 的 allowed IPs 设为::/0 ,那么这边的所有设备就都可以连到另外一边,还可以愉快地上网哦,而且,还是纯纯的完全 native 的公网 ip 哦
    lovelylain
        14
    lovelylain  
       2024-03-18 22:28:25 +08:00 via Android   1
    @xiaofami 路由器上面:wg 配置+防火墙 nat+路由,peer 端:wg 配置(因为你 peer 端没有 ipv6 ,所以应该::/0 )
    keyfunc
        15
    keyfunc  
       2024-03-19 00:15:56 +08:00
    @xqzr 网桥里好像不能添加 wireguard 的接口

    /ipv6 address
    add address=::XXXX eui-64=yes from-pool=ipv6-pool-gua interface=wireguard1

    好像还是没有效果

    我有多个 peer ,通过 testipv6 检查时显示的 外网 ipv6 都是 添加给 wireguard1 接口的地址,都是同一个地址。
    xqzr
        16
    xqzr  
       2024-03-19 02:38:47 +08:00
    @keyfunc 可能缺少”Advertise“
    另外,主机是 Linux 的话,也许需要开启内核的 accept_ra 功能(sysctl net.ipv6.conf.wg.accept_ra)
    terrancesiu
        17
    terrancesiu  
       2024-03-19 09:27:43 +08:00   1
    @xiaofami 你需要参考下 13 楼
    @ranaanna 的回复,他非常细心的讲解了原理,不是配置方面有多大问题,是你对网络地址规划上存在问题。导致 netmap 失败了。
    keyfunc
        18
    keyfunc  
       2024-03-19 09:50:59 +08:00
    @xqzr 这个地址开启了 Advertise ,默认是 true ,客户端是官方的 app store 下的,大佬方便加个 tg 吗,tg:daiyeqi
    xiaofami
        19
    xiaofami  
    OP
       2024-03-19 10:28:15 +08:00
    @maybeonly
    @terrancesiu
    @rulagiti
    @xqzr
    @lovelylain
    感谢大家指点,已配置成功。大致过程和配置 ipv4 地址时差不多,routeros 中给 wireguard 接口手动分配一个 fd 开头 ipv6 地址,然后 ipv6-route 中新建一条路由规则指向 wireguard 接口,最后 ipv6 防火墙中添加一条 masquerade 规则完成 NAT 。只是在配置 windows 客户端时遇到一点小小的问题:

    Windows 客户端中,我将 AllowedIPs 设置为 10.89.1.0/24(LAN), 192.168.2.0/24(光猫), 192.168.10.0/24 ( wireguard ), ::/0 ,发现无法访问 ipv4 站点,只能设置成 0.0.0.0/0, ::/0 转发全部流量。在 Android 客户端上,AllowedIPs = 10.89.1.0/24, 192.168.2.0/24, 192.168.10.0/24, ::/0 就完全没问题,行为符合预期。
    xiaofami
        20
    xiaofami  
    OP
       2024-03-19 10:45:59 +08:00
    @xiaofami windows 客户端有一个“拦截未经隧道的流量”的功能默认开启,关掉就正常了。关掉之后 AllowedIPs 中 ::/0 变成了 ::/1, 8000::/1
    keyfunc
        21
    keyfunc  
       2024-03-19 10:52:28 +08:00
    @xiaofami wireguard 客户端设备 访问 testipv6.com 是网桥配置的 ipv6 吗?
    supemaomao
        22
    supemaomao  
       2024-03-19 10:53:15 +08:00 via Android
    @xiaofami 在 peer 上 v6 的地址是手动分配,还是通过 ros 下发呢? ipv6-route 的路由是将 peer 的网段路由到 wg 的接口吗?还请 op 指点一下。
    lovelylain
        23
    ovelylain  
       2024-03-19 12:17:19 +08:00 via Android
    @supemaomao 建议配置 fd 网段的固定地址,然后在路由器上 ipv6 nat ,省事,ra 下发到 wg peer 根本找不到教程。
    supemaomao
        24
    supemaomao  
       2024-03-19 12:36:18 +08:00 via Android
    @lovelylain 明白了,就和 v4 一样,ros 和 peer 都配置 fd 的固定网址,然后路由上配置 ipv6 的 nat ,是这个意思吗?不过这个 ipv6 nat 要怎么弄,之前在 ros 的论坛尝试搜,没找到结果,电信 PPPoE 能拿到 v6 ,但是我想实现 内网设备都用 v4 ,ros 作为网关有 v4 v6 的出口,内网设备也能访问 v6 网站一样 ,要怎么做呢?能实现吗
    xiaofami
        25
    xiaofami  
    OP
       2024-03-19 13:24:42 +08:00
    @keyfunc 是网桥配置的,所有 peer 共享一个出口 IPv6 地址。

    @supemaomao 我这个配置说白了就是用 ipv4 的方式配置 ipv6 ,routeros 配置详细过程供参考:

    1. IPv6 - Addresses 菜单,添加 fd00:172:31:1::100/128 ,interface 为 wireguard1 ;
    2. IPv6 - Routes 菜单,添加一条记录。Dst.Address 填 fd00:172:31:1::/64 ,Gateway 填 wireguard1 ;
    3. IPv6 - Firewall 菜单,NAT 表中新建一条规则。Chain:srcnat ,Src.Address:fd00:172:31:1::/64 ,Action:masquerade ;
    4. 进入 Wireguard Peer 菜单配置 peer 。Allowed Address 中新建一行,填写 fd00:172:31:1::103/128 ,其余不变;

    最后客户端把 fd00:172:31:1::103/128 加入配置文件,AllowedIPs 追加一条 ::/0 就完事了
    keyfunc
        26
    keyfunc  
       2024-03-19 15:40:01 +08:00
    @xiaofami 你能 ping 通 内网 fd80 的 IP 吗?我设置好发现 ping 不通
    sokonboy
        27
    sokonboy  
       2024-07-11 17:19:18 +08:00
    请问楼主解决了吗?我也有同样的需求,之前搜到你的这个贴子,不过我的使用环境是在家里和公司用 openwrt 通过 wireguard 组的网,目前已顺利将家里运营商的 ipv6 分配到没有 ipv6 的公司网络。没有做 NAT ,是直接分配运营商 ipv6 。
    xiaofami
        28
    xiaofami  
    OP
       2024-07-12 00:30:25 +08:00 via Android
    @sokonboy 我是用 nat 方式解决的
    sokonboy
        29
    sokonboy  
       2024-07-12 10:28:37 +08:00
    @xiaofami 谢谢,
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2736 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 09:10 PVG 17:10 LAX 02:10 JFK 05:10
    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