异地组网并进行文件共享(使用密码保护)的一些踩坑分享

62 天前
 LeeReamond

算是做个总结吧。前情提要:https://v2ex.com/t/1082711

异地组网并进行文件共享(使用密码保护)的一些踩坑分享

总体框架

  1. 软件准备
  2. 组网
  3. 共享设置

软件准备

  1. 新系统请首先打开 [控制面板] - [程序和功能] - [启用或关闭 Windows 功能] ,选择启用 [ SMB 1.0/CIFS 文件共享支持] 和 [ SMB 直通] 两个选项,并重启系统。
  2. 访问https://www.wireguard.com/,下载并安装异地组网工具 WG 。

组网

使用 WG 进行组网, ** 典型比较适用的场景比如 ** :

  1. 主从双机同处于大型内网域内(例如校园网,办公网等),可以通过 IPv4 内网网段实现互通。
  2. 或者主机方具有 IPv6 公网地址可以实现某种程度上的不稳定直连。

在此场景下如果你希望多机进行私网域构建,使信息不暴露于公网或者公开内网,那么非常适合使用 WG 组网。

** 不适合的场景比如 ** :

  1. 无论如何没有公网地址,需要使用转发。此情况下应有大量其他方案优于本方案。

Wireguard 组网细节

组网需要进行的其他工作

  1. 尝试使用动态域名解析实现 WG 客户端对服务端 IP 变化的实时追踪。需要购买一个域名,并在服务器端部署网卡监测软件。笔者使用的项目是https://github.com/jeessy2/ddns-go,各位可以自行选择自己喜欢的。
  2. 对 WG 组成的网络进行属性设置,以实现公开网络和私有网络的区分。我们仅希望在私有网络上暴露文件共享服务,故应该将校园网等网络设置为公开网络,将 WG 组成的虚拟适配器设置为专用网络,具体操作如下:
# 在 windows 网络的图形设置界面可以将 wifi 本身设置为公开网络
# 然后在 powershell 中运行如下命令

Get-NetConnectionProfile # 查询当前网卡区域

# 例如我们的校园网络叫 University Free WIFI ,而私有网卡叫 WG_Client ,则通过以下命令将虚拟适配器设置为专用网络。

Set-NetConnectionProfile -Name "WG_Client" -NetworkCategory Private # 或 Public

共享设置

Windows 10 最新版进行基础文件共享需要进行以下几个方面的设置

  1. 账户设置:启用共享账户
  2. 高级共享设置:控制全局网络共享访问情况
  3. 组策略设置:控制具体共享账号情况
  4. 凭据管理:配置客户端登录凭证
  5. 共享文件夹设置:配置具体共享文件夹情况

1. 账户设置

首先我们为网络共享专门配置一个权限为普通用户组的用户,这在一定程度上是进行任何涉网络的权限敏感操作的通用处理办法。

2. 高级共享设置

此部分配置实现了在私有局域网中的文件共享,而不使共享暴露于公开网络

3. 组策略设置

此部分实现了私有网络下进行共享访问时,对访问来源的账号权限控制,以避免不小心连接到其他私有网络时暴露共享服务。

请与这台服务器的管理员联系以查明你是否有访问权限。

登录失败: 未授予用户在此计算机上的请求登录类型。

此时说明已经对登录账号进行限制,无法进行匿名访问。

4. 凭据管理

5. 共享文件夹设置

至此,您应该能够实现仅限于私有网络的基于用户名/密码安全性的文件共享系统。

讨论

本文实现了什么?

本方案安全性如何?

本文局限性

如觉得有帮助欢迎投喂货币,谢谢大家

2102 次点击
所在节点    程序员
16 条回复
tomczhen
62 天前
uncat
62 天前
> 从机之间无法互相访问。

这是你这套方案配置不完善导致的,并不是 WireGuard 不支持。

你配置完善的情况下,所有加入 WireGuard 网络内的所有设备之间可彼此互相通信的。不能互相访问实际上是因为:

1. 防火墙规则限制
2. 内核未开启封包转发
uncat
62 天前
你这套方案,实际上就是公司用来实现内部、外部服务认证和鉴权的方案。SMB 就是常见的内部服务的一种。

1. 只有经过 VPN 认证的开发者,才能访问内部用户。
2. 通过创建、注销 VPN 用户配置,实现入、离职流程控制。
3. 通过 VPN 实现内网(无公网 IP )服务的公网访问。(类似:内网穿透,原理:加入了 VPN 的任意设备可互相访问,即实现了内网穿透)。

一些跟高阶的需求:

基于 VPN 实现局域网互通。类似:物理专线,效果比如:

1. 办公区局域网 <-> 阿里云 VPC 。
2. 办公区局域网 <-> K8s SVC IP 互通。

即:

1. 办公网中的设备可以直接通过云服务器的内网 IP 访问到对应的云服务器。
2. 办公网中的设备可以直接通过 K8s SVC IP 访问到阿里云 K8s 集群中的 SVC 。
uncat
62 天前
上一条消息有一些错别字。修正一下:

你这套方案,实际上就是公司用来实现内部、外部服务认证和鉴权的方案。SMB 就是常见的内部服务的一种。目的是:

1. 只有经过 VPN 认证的开发者,才能访问内部服务。
2. 通过创建、注销 VPN 用户配置,实现入、离职人员对内部服务的访问控制。
3. 通过 VPN 实现内网(无公网 IP )服务的公网访问。(类似:内网穿透。原理:加入了 VPN 的任意设备可互相访问)。

一些更高阶的功能:

基于 VPN 实现局域网互通。

类似物理专线。效果比如:

1. 办公区局域网 <-> 阿里云 VPC 。
2. 办公区局域网 <-> K8s SVC IP 互通。

即:

1. 办公网中的设备可以直接通过云服务器的内网 IP 访问到对应的云服务器。
2. 办公网中的设备可以直接通过 K8s SVC IP 访问到阿里云 K8s 集群中的 SVC 。
songpengf117
62 天前
建议使用 openssh ,将 smb 替换为 sftp
fyq
62 天前
关于 SMB 到底应该如何设置分享,有一篇来自《什么值得买》上的文章是我见过的所有教程里面最清晰详尽的:
https://post.smzdm.com/p/akxwkxqk/
《 Windows 10/ 11 下安全并正确地使用 SMB 共享》
dode
62 天前
@uncat 有公网 IP ,wg 所有节点都可以点对点通信,记得 AllowedIPs 配置 192.168.x.xxx/32
flynaj
62 天前
SMB 1.0/CIFS 这个是 winxp 用的,win7 以上都不需要。玩不来 你还是装个 Zerotier 简单方便,还更安全。
dalaoshu25
62 天前
看到 192.168.1.1/8 ,笑了。
这都洋洋洒洒写了些啥啊,基本的网络基础知识都没搞明白。
lxh1983
62 天前
@dalaoshu25 确实
LeeReamond
62 天前
@dalaoshu25 查了一下是写错了,那我也配错了,照 255 子网配应该是/24
一般是/16 也就无所谓哪边,我感觉用不到那么大就缩了 8 位,方向错了
LeeReamond
61 天前
@fyq 仔细看了一下文章,好像和我说的大差不差,但讲解顺序是反过来的,我是从头到尾他是从尾到头。
看了一下他建议的几个和我写的不同的选项
1. 关闭 SMB1.0 协议
2. 关闭网络发现
3. 在 Lanman 工作站中禁用不安全的来宾登录
4. 为 smb 用户配置禁止通过本地或远程共享访问
LeeReamond
61 天前
@uncat WG 显然是强大工具,只是因为我是刚接触所以查了查资料,只配出了一主一从。如果想配小型网络的话不知道怎么配。
fyq
61 天前
@LeeReamond 我转发这篇教程的目的是为了让看到本帖的朋友能够安全访问他们的共享文件夹,在暴露于公网的机器中尤其重要。因为你的教程里如其他朋友所提到的那样,第一步就启用了不安全的 SMBv1 .
dalaoshu25
61 天前
@LeeReamond 简单地说,你除了会写 markdown 以外其他的都是错的。

自己基本概念不清技术细节不懂(比如搞不清网络地址掩码和 smb 协议版本),也不懂 wireguard 的设置(内部 IP 地址和路由),还不知道合适发帖的板块(为啥不去宽带症候群板块而在程序员板块)。

你这样的初学者,何必要在论坛上装模作样写这些帖子,浪费大家时间和金钱。
LeeReamond
60 天前
@dalaoshu25 笑出声,v2 现在的攻击性了不起。

术业有专攻,我一个搞开发的又不是学网安的,我分享我遇到的问题是怎么解决的,后面有人看到帖子了照我写的和后面 v 友补充的能配明白,我列了详细步骤,原因和修正方案,这就是做贡献了,你除了喷做了什么贡献?

掩码方向记错了这就叫不懂掩码了,照你这逻辑我直接 255.255.0.0 是不是就又懂掩码了?就这么肤浅? smb 协议我除了用它和 linux 交互,我是做协议相关开发的吗?版本细节不了解也就是一篇文章的事,就这么点内容轮得到你在这高谈阔论,可见你的内容量也就这么点。

你不爱看就不看,我自认比论坛里吹水的帖子多做了那么点工作,就这你还嫌浪费时间金钱,其他贴子里怎么没见你做道德卫士?笑出声了。程序员分区遇不到组网的事对吧,好了我懂了,是我不配在大佬面前自称程序员,我工作都是假的,幻想出来的。

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

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

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

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

© 2021 V2EX