当前位置:首页 > 技术 > WireGuard做中转服务器时默认路由0.0.0.0的坑

WireGuard做中转服务器时默认路由0.0.0.0的坑

土叔4年前 (2022-01-10)技术2560

背景简介

场景拓扑是这样的,C和S通过AB两台机器组成一个局域网。

C ---》A ---》B --- S


C是Client,手机、电脑等终端
A是入口主机,这里以云上VPS为例
B是出口主机,也是以云上VPS为例

S是真正的服务器


AB之前是通过WireGuard来进行数据中继。

眼尖的朋友,可能已经看出来了,这是一个典型的游戏加速网络的结构,没错,确实有很多游戏加速器的网络是这样的。

初步尝试

由于偷懒,就直接参考网上很多现成的配置,拿来直接用了,一开始都很顺利,接口、公钥私钥、IP什么的都能够配置好了,但是只要启动wg-quick up wg0的时候,VPS的网络就中断了,SSH卡住动不了,没法控制机器了,只能去控制台重启机器,无语。
image.png


问题解决

出现问题的时候,一头雾水,不知道是怎么搞,无助啊...

冷静下来,仔细一看wg-quick命令的输出,才发现,原来他写了条0.0.0.0/0的默认,就是说所有的IP数据包全部走wg0接口出去,当然SSH就卡了,没错,就是他搞的鬼了。


再看下WireGuard的配置文件,有一个allowed-ips配置项目,配置的就是0.0.0.0/0,虽然找到了配置问题,但是还是不知道为什么会这样,又看很多博客,大家都说,为了让所有流量全部进到WireGuard的隧道中,建议把路由配置为 0.0.0.0/0,经过仔细分析,发现他们的使用场景和我的这个场景完全不同,他们都在客户端上配置的0.0.0.0/0,所以没有问题,但是我这种场景,就不能这么配置了。


到这里,终于明白是为什么了,但是这个问题要怎么解决呢,一方面我要让中转过来的所有流量都进入WireGuard隧道,一方面又不能写这个默认路由,于是去看了下wg-quick这个工具帮助,还真有这个配置。
image.png


追根问底

顺手又看了一下wg-quick的源代码,发现他只是一个shell脚本,简单的看了一个,确实很简单,只需要通过wg-quick命令把Table配置成off或者其它有用值,就可以默认不添加0.0.0.0/0了。

image.png

所以呀,在自己的项目中,不能完全照搬网上的教程和帖子,还需要结合实际情况,多做实验验证,遇到问题,多想办法才能解决,当然最好的办法就是看帮助和源码。


参考资料:wireguard-tools/linux.bash at master · WireGuard/wireguard-tools (github.com)




版权声明:本文由土叔分享发布,如需转载请注明出处。

本文链接:http://old.tushushare.com/?id=72

标签: 网络技术
分享给朋友:
返回列表

没有更早的文章了...

没有最新的文章了...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。