关于 Wireguard 设置 Address /24 /33 疑问

54 天前
 Getting
Openwrt 设置
[Interface]
Address = 172.22.192.1/24
ListenPort = 51820

[Peer]
AllowedIPs = 172.22.192.2/32


Iphone 设置
[Interface]
Address = 172.22.192.2/32

[Peer]
Endpoint = op:51820
AllowedIPs = 0.0.0.0/0, ::/0


这样可以正常访问外网和局域网内设备,如果把 op 的 Address 改成 172.22.192.1/32 就只能访问局域网内设备不能访问外网了 这是什么原因,我没有设置其他 peer 理论上不用写网段应该也是可以访问的呀?

还有就是客户端写/24 和 32 到底有啥区别呀 好懵逼(如果是路由器和路由器组网是不是没公网那方 ip 也得写/24 )


查阅资料
本地节点是客户端,只路由自身的流量,只暴露一个 IP

本地节点是中继服务器,它可以将流量转发到其他对等节点( peer ),并公开整个 VPN 子网的路由
513 次点击
所在节点   WireGuard
8 条回复
jasonyang9
54 天前
因为 wg-quick 脚本会根据这个地址/24 与否自动加一条路由,用这些关键字搜搜
Jimmyisme
54 天前
你不要把 WireGuard 想成一个中心化的结构。事实上他是可以去中心化的。

op 里面的 Address 是定义了 WireGuard 的网段,处于这个网段的设备都走 WireGuard 。而 peer 里面的 allowips 则是定义这个 peer (实际上就是公钥)允许使用哪些 ip 接入。

你看起来/32 和 /24 很乱。但实际上只是一种“批量设置”的意思
Jimmyisme
54 天前
Getting
54 天前
@Jimmyisme #2 但是为什么我把 op 里面的 Address 的写成单 ip 不写成网段咋就不能访问外网了 很奇怪 内网却能访问 说明还是走 WireGuard 接口了😂
Getting
54 天前
@Jimmyisme #3 我看老湿基写的也是/32 但是/32 就访问不了外网😂 只能内网之间访问
Jimmyisme
54 天前
@Getting #4 如果是是说要像类似翻墙工具的话可能要自己写 iptable 了吧?也有可能是 DNS 设置的问题
tavimori
53 天前
Wireguard 在系统路由表建立路由其实有两个阶段。

第一个阶段是在系统加载虚拟网卡并设置网卡地址时。这时会读取 [Interface] 下的 Address ,设立相应的 IP 地址,如果是/24 的话,系统会自动对/24 增加一个路由,使得相关流量从该虚拟网卡走。

第二个阶段是使用类似 wg-quick 等工具时,这些工具会在基本操作之外读取你 [Peer] 下各个 peer 的 AllowedIPs 字段,并且将对应的段加到路由表,使得相关流量从该虚拟网卡走。


所以如果你是用 wg-quick (通常也包括 iPhone 客户端这类功能完整的 wireguard 前端),只要相应的 peer 下面的 AllowedIPs 包含需要的段的话,[Interface] 下面的地址设置成 /32 应该也是没有关系的。

与此相对的,在一些路由器上配置的 wireguard 并不会自动加载 AllowedIPs 路由(例如 RouterOS 就是这样),这种时候就需要通过设置虚拟网卡的 IP 地址和正确的前缀,或者手动增加路由条目来确保相应地址会走虚拟网卡。
Getting
53 天前
@tavimori 我查看 op 路由看到了自动加载 AllowedIPs 路由了 但是手机连上后只能访问局域网内所有设备 很奇怪 除非把 op 的 Interface 改回/24 重启 op 的 wg 接口

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1024916

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX