利用 Surge Snell 随时访问内网
利用 Surge Snell 随时访问内网
起因
公司的大部分服务,都部署在公司的内网上,如果需要远程访问需要连接公司提供的 VPN 服务,但是由于搭建的协议是 OpenVPN,而不是 Surge 支持的 WireGuard,因此每次连接内网都需要关闭 Surge,并开启公司的 VPN
再加上偶尔需要访问家里的内网服务,决定着手对此问题进行改造,这里主要围绕 DSM 搭建 Snell 服务进行介绍,公司的通道也是同理的
目标
首先需要明确一下最终期望实现什么效果,无论我人在哪里,无论连什么网络,都可以顺畅的访问家中内网服务,同时要做到,当我人在家里时,不走 Snell,而是直连
既然所有服务都可以通过内网访问,对于安全性上,也需要拒绝一切通过 DDNS 访问的请求
DSM 配置
这里我搭建的环境使用的是 primovist/snell-docker
的镜像,其他镜像可能会有细节不一致,但是大体上都是 Snell 的实现
- 端口设置
本地端口 | 容器端口 | 类型 |
---|---|---|
xxx | 12543 | tcp |
- 存储空间
文件/文件夹 | 装载路径 | 类型 |
---|---|---|
DSM 文件夹 | /etc/snell/ | rw |
- 环境变量
键 | 值 |
---|---|
PATH | 保持不变 |
LANG | 保持不变 |
PORT | 123543 |
PSK | 随机生成一串字符 |
OBFS | tls |
Surge 配置
[Proxy]
Home = snell, 你的域名, 你的端口, psk=Docker环境中的PSK, obfs=tls
[ProxyGroup]
# 这里配置的意思是,如果当前连接的 WiFi 名为 Home 或者 Home_5G,则直接连接
# 否则切换为 snell
Home Snell = ssid, default = Home, "Home" = DIRECT, "Home_5G" = DIRECT
[Rule]
# 在我的环境中,家里的网段属于 `192.168.31.x`,因此直接在 `Rule` 中这么填即可
IP-CIDR,192.168.31.0/24,Home Snell, no-resolve
路由设置
我的路由是小米的,如果和你的不同请自行查阅,最开始我为了方便,直接打开了小米的 DMZ
功能,但现在我希望可以手动控制部分服务不提供公网访问
此时需要使用 DSM 动态修改路由的 UPnp
映射表
当然路由中的配置我们并不需要手动添加具体配置,此处只需要打开即可,剩下的在 DSM 中进行配置
比如下图中的 snell 服务,填写对应的端口号保存即可,映射关系 DSM 会自动帮我们同步到路由上
参考
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果