Пропустить навигацию.
Главная

Samba против Network-managera

Установил samba на своем ноутбуке с ubuntu 8.10. Настроил smb.conf:

interfaces = 127.0.0.0/8 eth0
bind interfaces only = yes

Перезапустил, вроде все работает. Потом заметил, что после загрузки samba не биндится на eth0:

max@max-laptop:~$ sudo netstat -pnlt | grep smbd
tcp 0 0 127.0.0.1:139 0.0.0.0:* LISTEN 5999/smbd
tcp 0 0 127.0.0.1:445 0.0.0.0:* LISTEN 5999/smbd

Беглый просмотр порядка выполнения скриптов при загрузке показал, что network-manager запускается позже samba. Естественно, samba не может слушать интерфейс, который еще не поднялся.
Поразмыслив, создал два скрипта /etc/network/if-up.d/up-eth0-smbd-restart и /etc/network/if-down.d/down-eth0-smbd-restart. Эти скрипты будут выполняться при подключении и отключении сетевого интерфейса eth0. Скрипты одинаковые, вот листинг:

#!/bin/bash
[ "$IFACE" = "eth0" ] || exit 0
/etc/init.d/samba restart
exit 0

Теперь все работает так, как нужно:

max@max-laptop:~$ sudo netstat -pnlt | grep smbd
tcp 0 0 127.0.0.1:139 0.0.0.0:* LISTEN 7081/smbd
tcp 0 0 10.1.35.30:139 0.0.0.0:* LISTEN 7081/smbd
tcp 0 0 127.0.0.1:445 0.0.0.0:* LISTEN 7081/smbd
tcp 0 0 10.1.35.30:445 0.0.0.0:* LISTEN 7081/smbd

Если же описать сетевой интерфейс в /etc/network/interfaces, никаких манипуляций со скриптами не требуется.