我已经在三台计算机之间设置了一个wireguard vpn 网络。
- A) 我的家用 PC 正在运行一个wireguard 客户端,并想在我的办公室服务器上连接到我的 sambashare C)。
- B)我的家庭服务器充当我的线卫服务器/端点。A) 和 C) 连接到这个。
- C) 我的 Office-Server 具有我想通过 wireguard 访问的 samba 共享。
转发似乎工作正常,因为:
- 我可以从 A) ping 到 C) 和从 C) 到 A)。使用C)的wireguard接口ip时。
- 我也可以从 A) SSH 到 C)。使用C)的wireguard接口ip时。
我认为问题在于我的 smb.conf 或 smbd.service 如何绑定到我在 smb.conf 中指定的接口,因为:
- 使用wireguard ip 地址时,我无法在C) 访问我的Samba-Share。
- 指定 eth0 ip 地址时,我可以在 C) 访问我的 Samba-Share。
这就是我的 smb.conf 文件的样子:
#### 联网 #### # 要绑定的特定接口/网络集 # 这可以是接口名称或 IP 地址/网络掩码; # 接口名称通常是首选 ; 接口 = 127.0.0.0/8 eth0 接口 = lo eth0 wg-buero-tunnel # 只绑定到指定的接口和/或网络;你必须使用 # 上面的“interfaces”选项来使用它。 # 如果您的 Samba 机器是 # 不受防火墙保护或本身就是防火墙。然而,这 # 选项无法正确处理动态或非广播接口。 ; 仅绑定接口 = 是 仅绑定接口 = 是
这是输出netstat -tulpen | grep smbd
tcp 0 0 127.0.0.1:139 0.0.0.0:* 听 0 17353 1023/smbd tcp 0 0 192.168.124.177:139 0.0.0.0:* LISTEN 0 17349 1023/smbd tcp 0 0 127.0.0.1:445 0.0.0.0:* LISTEN 0 17352 1023/smbd tcp 0 0 192.168.124.177:445 0.0.0.0:* LISTEN 0 17348 1023/smbd
这里的 IP 应该与我在 smb.conf 中指定的设备相对应,但仍然缺少一个 IP/设备。
127.0.0.1 _
eth0 192.168.124.177
wg-buero-tunnel完全丢失了wireguard ip
我真的没有想法了。
如果未明确指定接口地址/掩码,但如果接口受
interfaces = ...
和限制,Samba 将不会侦听 Wireguard 接口bind interfaces only = yes
。解决方案是为 Wireguard 接口指定 IP 地址/掩码。例如
这在 Samba 文档smb.conf中也很清楚 :接口
众所周知,Wireguard 不支持广播,为什么不支持。这些是 Samba 的后果:不可能使用其他三种替代方法来指定其中描述的接口,例如 2) 接口名称或 3) 仅 IP 地址或 4) 广播地址/掩码,因为 Wireguard 不支持广播。
ip link
您也可以通过命令验证它:这里提出的解决方案对我不起作用,在我的情况下,解决方案是设置
在
/etc/samba/smb.conf.template
文件中。这样 Samba 将监听所有接口,无论是否广播。这可能会产生一点缺点,samba 共享必须通过 IP 访问,而不是通过名称访问,例如
但不是什么大问题。
要使 Samba(或需要 bcast 的类似东西)在wireguard 隧道上工作,您可以在wireguard 之上使用vxlan 隧道。
这种封装(vxlan)或多或少像一个“真正的”网络接口,至少在我的场景中,brordcasts/multicasts/etc 完全工作。
我已经设置了其中的一些隧道,它们的性能非常好,即使有两个封装的性能损失。通过“ip link add”命令进行配置也相当简单,你可以在网上找到很多例子,我从这篇(非常有趣的)文章中得到了灵感(已删除,我将链接留给 IA):
https://web.archive.org/web/20200708181943/https://insom.github.io/journal/2017/04/02/
https://gist.github.com/pamolloy/f464c2b54af03c436491f42abf0bbff9
我认为那是因为 samba 只能在支持广播的接口上侦听
它没有说明非默认会发生什么,但我猜是这样。
有趣的是,已经有详细而具体的答案来解决手头的问题,而在我的情况下 - 与 OP 几乎相同的设置 - 将 VPN 子网简单添加到
hosts allow
(/etc/samba/smb.conf
拱形)部分已经成功了:在这里,
192.168.2.
是我的 LAN 子网,192.168.10.
也是我的 wireguard VPN 子网。我可以通过 VPN 从 WAN 上的设备连接到 SMB 服务器,而无需更改任何其他内容。我可以以正常速度读/写数据。所以我不确定wireguard不支持广播对此有什么影响,尽管发现可能不起作用。给我这些症状的另一个因素是我的 ufw 防火墙。需要打开wireguard接口。我可以 ping 和 ssh 但当然 ssh 已经通过防火墙打开了。