Sambaサーバに名前でアクセスできない問題解決

状況としては、LAN内の別のマシンからSamba名でアクセスすることができない。IPアドレスを指定するとブラウジングできる。日本Sambaユーザ会 - Sambaが動作しないときの診断方法に従って調べてみると、どうもnmblookupしたときのブロードキャストに反応がないようだ。

# nmblookup -d 5 knzm
...
querying knzm on 192.168.0.255
Sending a packet of len 50 to (192.168.0.255) on port 137
Sending a packet of len 50 to (192.168.0.255) on port 137
Sending a packet of len 50 to (192.168.0.255) on port 137
name_query failed to find name knzm

そう思って調べてみると、

# iptables -nL INPUT | grep 192.168.0.255
DROP       0    --  0.0.0.0/0            192.168.0.255     

これじゃダメじゃん。

# iptables -D INPUT -d 192.168.0.255 -j DROP

としたら、

# nmblookup -d 5 knzm
...
querying knzm on 192.168.0.255
Sending a packet of len 50 to (192.168.0.255) on port 137
Received a packet of len 62 from (192.168.0.2) port 137
nmb packet from 192.168.0.2(137) header: id=20281 opcode=Query(0) response=Yes
    header: flags: bcast=No rec_avail=Yes rec_des=Yes trunc=No auth=Yes
    header: rcode=0 qdcount=0 ancount=1 nscount=0 arcount=0
    answers: nmb_name=KNZM<00> rr_type=32 rr_class=1 ttl=259200
    answers   0 char ......   hex 0000C0A80002
Got a positive name query response from 192.168.0.2 ( 192.168.0.2 )
192.168.0.2 knzm<00>

となって、名前解決ができるようになった。

ちなみに、iptablesの設定を変更した場合は

# /etc/rc.d/init.d/iptables save

とすると設定が/etc/sysconfig/iptablesに保存される。