家里一条联通宽带可获得 60 长度且动态变化的 IPv6 前缀,同时具备公网 IPv4 地址。借助 DDNS 和端口转发,我在只支持 IPv4 的单位局域网中通过 wireguard 可以连回家中。现在我想让单位电脑这个 peer 获取到 IPv6 地址以访问 IPv6 站点,,应当怎么实现呢?
1
maybeonly 235 天前 2
分配 fd 开头的私网 v6 然后做 nat/snpt
|
2
terrancesiu 235 天前 1
|
3
xiaofami OP @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 |
4
rulagiti 235 天前 1
客户端和服务器都配置 ipv6 私有地址方法同 ipv4 ,然后服务器配置 nat6 。
|
6
xqzr 235 天前 1
另外,可以在 “wireguard1” 接口 RA 宣告,ISP 的前缀
|
7
cndns 235 天前 via Android
直接分配 ipv6 公网地址吗?
|
10
keyfunc 235 天前
```
/ipv6 dhcp-client add interface=pppoe-out1 pool-name=ipv6-pool-gua prefix-hint=240e:0:0::/56 request=prefix use-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 给的前缀。 |
12
xqzr 235 天前
wg 接口在 br-lan0 里吧...
”允许 IP“包含 fe80::/10,ff02::1 |
13
ranaanna 235 天前 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 哦 |
14
lovelylain 235 天前 via Android 1
@xiaofami 路由器上面:wg 配置+防火墙 nat+路由,peer 端:wg 配置(因为你 peer 端没有 ipv6 ,所以应该::/0 )
|
15
keyfunc 235 天前
@xqzr 网桥里好像不能添加 wireguard 的接口
/ipv6 address add address=::XXXX eui-64=yes from-pool=ipv6-pool-gua interface=wireguard1 好像还是没有效果 我有多个 peer ,通过 testipv6 检查时显示的 外网 ipv6 都是 添加给 wireguard1 接口的地址,都是同一个地址。 |
16
xqzr 234 天前
@keyfunc 可能缺少”Advertise“
另外,主机是 Linux 的话,也许需要开启内核的 accept_ra 功能(sysctl net.ipv6.conf.wg.accept_ra) |
17
terrancesiu 234 天前 1
|
19
xiaofami OP @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 就完全没问题,行为符合预期。 |
20
xiaofami OP @xiaofami windows 客户端有一个“拦截未经隧道的流量”的功能默认开启,关掉就正常了。关掉之后 AllowedIPs 中 ::/0 变成了 ::/1, 8000::/1
|
21
keyfunc 234 天前
@xiaofami wireguard 客户端设备 访问 testipv6.com 是网桥配置的 ipv6 吗?
|
22
supemaomao 234 天前 via Android
@xiaofami 在 peer 上 v6 的地址是手动分配,还是通过 ros 下发呢? ipv6-route 的路由是将 peer 的网段路由到 wg 的接口吗?还请 op 指点一下。
|
23
lovelylain 234 天前 via Android
@supemaomao 建议配置 fd 网段的固定地址,然后在路由器上 ipv6 nat ,省事,ra 下发到 wg peer 根本找不到教程。
|
24
supemaomao 234 天前 via Android
@lovelylain 明白了,就和 v4 一样,ros 和 peer 都配置 fd 的固定网址,然后路由上配置 ipv6 的 nat ,是这个意思吗?不过这个 ipv6 nat 要怎么弄,之前在 ros 的论坛尝试搜,没找到结果,电信 PPPoE 能拿到 v6 ,但是我想实现 内网设备都用 v4 ,ros 作为网关有 v4 v6 的出口,内网设备也能访问 v6 网站一样 ,要怎么做呢?能实现吗
|
25
xiaofami OP @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 就完事了 |
27
sokonboy 120 天前
请问楼主解决了吗?我也有同样的需求,之前搜到你的这个贴子,不过我的使用环境是在家里和公司用 openwrt 通过 wireguard 组的网,目前已顺利将家里运营商的 ipv6 分配到没有 ipv6 的公司网络。没有做 NAT ,是直接分配运营商 ipv6 。
|