使用 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 即可使用此类地址。