我在 Ubuntu 14.04 服务器上安装了 Samba,在我的 smb.conf 中
interfaces = lo em1
bind interfaces only = yes
这应该使 Samba 仅绑定到环回和第一个嵌入式网卡,但实际上它只绑定到 lo
root@server:~# lsof -ni:139
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
smbd 830 root 29u IPv4 11311 0t0 TCP 127.0.0.1:netbios-ssn (LISTEN)
smbd 830 root 31u IPv6 11313 0t0 TCP [::1]:netbios-ssn (LISTEN)
如果我在 smb.conf 中注释掉这两行,它就会毫无问题地绑定到 em1。那里发生了什么?
答案1
这是因为 em1 使用 DHCP。如果 IP 是静态的,它就可以正常工作,如果使用 DHCP,则在我重新启动 Samba 后就可以正常工作。
Ubuntu 使用的是 upstart,而 samba 未设置为依赖于所有网络接口,启动时只会绑定到可用的接口。请参阅https://askubuntu.com/a/349142/332223