我在三台计算机之间设置了wireguard vpn 网络。
- A) 我的家庭 PC 正在运行wireguard 客户端并想要连接到我的办公室服务器上的 sambashare C)。
- B) 我的家庭服务器充当我的wireguard 服务器/端点。 A) 和 C) 连接到这个。
- C) 我的 Office 服务器具有我想通过wireguard 访问的 samba 共享。
转发似乎工作正常,因为:
- 我可以从 A) ping 到 C),也可以从 C) ping 到 A)。当使用C)的wireguard接口ip时。
- 我还可以通过 SSH 从 A) 到 C)。当使用C)的wireguard接口ip时。
我认为问题在于我的 smb.conf 或 smbd.service 如何绑定到我在 smb.conf 中指定的接口,因为:
- 我不能使用wireguard IP 地址时,可以在C) 访问我的Samba 共享。
- 我能指定 eth0 IP 地址时,在 C) 处访问我的 Samba 共享。
这是我的 smb.conf 文件的样子:
#### 联网 #### # 要绑定到的特定接口/网络集 # 这可以是接口名称或 IP 地址/网络掩码; # 接口名称通常是首选 ;接口 = 127.0.0.0/8 eth0 接口 = lo eth0 wg-buero-隧道 # 仅绑定到指定的接口和/或网络;你必须使用 # 上面的“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:* 监听 0 17349 1023/smbd tcp 0 0 127.0.0.1:445 0.0.0.0:* 监听 0 17352 1023/smbd tcp 0 0 192.168.124.177:445 0.0.0.0:* 监听 0 17348 1023/smbd
这里的 IP 应与我在 smb.conf 中指定的设备相对应,但仍然缺少一个 IP/设备。
罗127.0.0.1
以太网0192.168.124.177
WG-布埃罗隧道Wireguard ip完全丢失
我真的没有想法了。
答案1
如果未显式指定接口地址/掩码,但如果接口受interfaces = ...
和限制bind interfaces only = yes
, Samba 将不会侦听 Wireguard 接口。
解决办法是指定 Wireguard 接口的 IP 地址/掩码。例如
interfaces = lo eth0 10.8.0.0/24
Samba 文档也清楚地表明了这一点 smb配置文件:接口
...默认情况下,Samba 将查询内核以获取所有活动接口的列表,并使用除 127.0.0.1 之外的具有广播功能的任何接口。 ...
...“掩码”参数可以是位长度(例如,C 类网络为 24),也可以是点分十进制形式的完整网络掩码。
众所周知,Wireguard 不支持广播,为什么不支持。这些是 Samba 的后果:不可能使用其他三种替代方法来指定其中描述的接口,例如 2) 接口名称或 3) 仅 IP 地址或 4) 广播地址/掩码,因为 Wireguard 不支持广播。
也可以通过ip link
命令验证:
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
link/ether ...
wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> ... # without "BROADCAST"
link/none
答案2
这里提出的解决方案对我来说不起作用,就我而言,解决方案是设置
bind interfaces only = no
在/etc/samba/smb.conf.template
文件中。这样,Samba 将监听所有接口,无论是否广播。
这可能会产生一点缺点,samba 共享必须通过 IP 访问,而不是通过名称访问,例如
\\192.168.1.1 - works
\\SAMBA_SHARE - does not work
但这不是一个大问题。
答案3
要使 Samba(或需要广播的类似内容)等功能在wireguard 隧道上运行,您可以在wireguard 之上使用vxlan 隧道。
这种封装(vxlan)或多或少就像一个“真正的”网络接口,至少在我的场景中,广播/多播等完全正常工作。
我已经设置了其中一些隧道,它们的性能非常好,即使有两种封装的性能损失。通过命令“ip link add”配置也相当容易,你可以在网上找到很多例子,我从这篇(非常有趣)文章中得到了灵感(删除了,我留下了IA的链接):
https://web.archive.org/web/20200708181943/https://insom.github.io/journal/2017/04/02/
https://gist.github.com/pamolloy/f464c2b54af03c436491f42abf0bbff9
答案4
我想那是因为桑巴只能在支持广播的接口上监听
- 参数:接口
- 类型:字符串
- 描述:Samba 将响应的网络接口。允许更改默认值。
- 默认值:所有能够广播的可用接口
它没有说明非默认情况下会发生什么,但我猜是这样。