如何在 smb.conf 中指定 IPv6 链路本地绑定地址?

如何在 smb.conf 中指定 IPv6 链路本地绑定地址?

使用 samba 4.1.17-Debian,我尝试了以下 smb.conf 条目将 samba 绑定到链路本地 ipv6 地址

interfaces = fe80::d270:36a5:ac03:37ea%br0 fe80::/10 ::1
bind interfaces only = yes

但使用 netstat 检查仅显示 smbd 在 ::1 上监听

手册指出除了接口名称之外,还可以指定地址或地址+掩码,所以我希望这两种方法都可以。


更新的配置:

# ip addr show dev br0 | grep -c fe80 
1

# smb.conf
bind interfaces only = yes
interfaces = 192.168.0.0/16 ::1 127.0.0.1 fe80::%br0/64

# smbd --version
Version 4.5.12-Debian

# netstat -lnp | grep smb
tcp        0      0 192.168.0.3:139         0.0.0.0:*               LISTEN      17048/smbd          
tcp        0      0 127.0.0.1:139           0.0.0.0:*               LISTEN      17048/smbd          
tcp        0      0 192.168.0.3:445         0.0.0.0:*               LISTEN      17048/smbd          
tcp        0      0 127.0.0.1:445           0.0.0.0:*               LISTEN      17048/smbd          
tcp6       0      0 ::1:139                 :::*                    LISTEN      17048/smbd          
tcp6       0      0 ::1:445                 :::*                    LISTEN      17048/smbd  

答案1

经过数小时的努力、尝试、错误和阅读源代码。

一切正常,但您必须正确指定。使用 IPv6 LinkLocal 地址时,您必须使用“%”符号指定接口,并在最后指定前缀长度。

Interfaces = {Full-IPv6-address}%{interface}/{prefix length}

smb.conf(示例):

interfaces = fe80::114%eth0/64

答案2

处理 IPv6 的最佳方法不是使用链接本地地址,而是使用唯一本地地址。

看起来“仅绑定接口”选项使得 IPv6 链接本地地址即使在 smb.conf 中正确写入也不会被监听

我已经成功测试了在 debian linux 和 windows 10 上使用 IPv6 唯一本地地址通过 samba 从 linux 服务器到 windows 工作站交换文件。

在我的配置中,唯一的本地地址已在 debian 和 windows 中手动配置,因此 SLAAC 仍在努力提供全局 IPv6 地址。无需使用 DHCPv6 即可使用此类地址。

相关内容