Samba 未侦听指定的wireguard/vpn 接口

Ale*_*nux 5 samba vpn

我在三台计算机之间设置了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

eth0 192.168.124.177

wg-buero-tunnel 线卫 IP 完全丢失

我真的没有想法了。

hyn*_*cer 4

如果未显式指定接口地址/掩码,但如果接口受 和 限制,Samba 将不会侦听 Wireguardinterfaces = ...接口bind interfaces only = yes

解决方案是指定 Wireguard 接口的 IP 地址/掩码。例如

interfaces = lo eth0 10.8.0.0/24
Run Code Online (Sandbox Code Playgroud)

Samba 文档 smb.conf也清楚地表明了这一点:接口

...默认情况下,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
Run Code Online (Sandbox Code Playgroud)