บทความนี้จะอธิบายการแก้ไขปัญหาหลังจากเปลี่ยน IP Address ของเครื่องเซิร์ฟเวอร์ที่รัน Samba ทำหน้าที่เป็น Domain Controller หรือ PDC บนลีนุกซ์
ตัวอย่างในบทความนี้จะเป็นการแก้ไขหลังจากเปลี่ยน IP ของเครื่องเซิร์ฟเวอร์จาก 10.1.0.1 ไปเป็น IP ใหม่คือ 192.168.1.1 ของโดเมน SMBLDAP
ก่อนการแก้ไข
หลังจากที่เปลี่ยน IP Addres ของลีนุกซ์แล้ว โดยอาจใช้คำสั่ง system-config-network หรือใช้คำสั่ง ifconfig โดยตรง ทดลองรัน Samba เพื่อทำหน้าที่ PDC ขึ้นมาใหม่ เครื่องไคลเอนต์จะไม่สามารถ join เข้าโดเมนได้
ปัญหาที่เกิดขึ้น เนื่องมาจาก มีการเก็บข้อมูล IP เก่าว่าเป็น Domain Controller อยู่ ซึ่งสามารถตรวจสอบได้จากไฟล์ /var/log/samba/log.nbmd จะขึ้นข้อความว่า Domain Controller ยังผูกกับ IP เก่าอยู่
ตัวอย่างการรัน Samba หลังจากเปลี่ยน IP Adddress
[root@samba-server ~]# service smb start Starting SMB services: [ OK ] [root@samba-server ~]# service nmb start Starting NMB services: [ OK ]
ตัวอย่างไฟล์ log.nmbd ที่มีปัญหา
[root@samba-server ~]# tail -f /var/log/samba/log.nmbd
[2008/10/25 16:41:02, 0] nmbd/nmbd.c:main(849)
nmbd version 3.2.3-0.20.fc9 started.
Copyright Andrew Tridgell and the Samba Team 1992-2008
[2008/10/25 16:41:02, 0] nmbd/asyncdns.c:start_async_dns(155)
started asyncdns process 2161
[2008/10/25 16:41:02, 0] nmbd/nmbd_logonnames.c:add_logon_names(160)
add_domain_logon_names:
Attempting to become logon server for workgroup SMBLDAP on subnet 192.168.1.1
[2008/10/25 16:41:02, 0] nmbd/nmbd_logonnames.c:add_logon_names(160)
add_domain_logon_names:
Attempting to become logon server for workgroup SMBLDAP on subnet UNICAST_SUBNET
[2008/10/25 16:41:02, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(336)
become_domain_master_browser_wins:
Attempting to become domain master browser on workgroup SMBLDAP, subnet UNICAST_SUBNET.
[2008/10/25 16:41:02, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(350)
become_domain_master_browser_wins: querying WINS server from IP 192.168.1.1 for domain master browser name SMBLDAP<1b> on workgroup SMBLDAP
[2008/10/25 16:41:02, 0] nmbd/nmbd_become_dmb.c:become_domain_master_query_success(234)
become_domain_master_query_success:
There is already a domain master browser at IP 10.1.0.1 for workgroup SMBLDAP registered on subnet UNICAST_SUBNET.
[2008/10/25 16:41:02, 0] nmbd/nmbd_logonnames.c:become_logon_server_success(121)
become_logon_server_success: Samba is now a logon server for workgroup SMBLDAP on subnet UNICAST_SUBNET
[2008/10/25 16:41:06, 0] nmbd/nmbd_logonnames.c:become_logon_server_success(121)
become_logon_server_success: Samba is now a logon server for workgroup SMBLDAP on subnet 192.168.1.1
[2008/10/25 16:41:24, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(395)
*****
Samba name server SAMBA-SERVER is now a local master browser for workgroup SMBLDAP on subnet 192.168.1.1
***** [2008/10/25 16:41:24, 0] libsmb/nmblib.c:send_udp(839) Packet send failed to 10.1.0.1(137) ERRNO=Network is unreachable [2008/10/25 16:41:24, 0] nmbd/nmbd_packets.c:send_netbios_packet(160) send_netbios_packet: send_packet() to IP 10.1.0.1 port 137 failed [2008/10/25 16:41:24, 0] nmbd/nmbd_nodestatus.c:node_status(87) node_status: Failed to send packet trying to get node status for name SMBLDAP<1b>, IP address 10.1.0.1
ใน Samba จะมีการเก็บข้อมูลของโดเมนว่า เครื่องใดทำหน้าที่อะไรบ้างในเน็ตเวิร์ก จะเก็บไว้ในหลายๆ ไฟล์ ไฟล์หนึ่งที่สามารถดูได้อย่างง่ายคือไฟล์ wins.dat
ตัวอย่างไฟล์ wins.dat
[root@samba-server ~]# cat /var/lib/samba/wins.dat VERSION 1 0 "SMBLDAP#1e" 1225185500 0.0.0.0 e4R "SAMBA-SERVER#00" 1225185500 10.1.0.1 192.168.1.1 66R "SAMBA-SERVER#03" 1225185500 10.1.0.1 192.168.1.1 66R "SMBLDAP#1b" 1225184635 10.1.0.1 64R "SAMBA-SERVER#20" 1225185500 10.1.0.1 192.168.1.1 66R "SMBLDAP#00" 1225185500 0.0.0.0 e4R "SMBLDAP#1c" 1225185500 10.1.0.1 192.168.1.1 e4R
จะเห็นได้ว่าไฟล์นี้ยังเก็บข้อมูล IP เก่าอยู่ ทำให้ Samba ทำงานได้ไม่ถูกต้อง
การแก้ไข Samba หลังจากเปลี่ยน IP Address ของเครื่องเซิร์ฟเวอร์
ขั้นตอนแรกต้อง stop เซอร์วิส Samba ก่อน ทั้ง smb และ nmb
ตัวอย่างการ stop เซอร์วิส Samba
[root@samba-server ~]# service smb stop Shutting down SMB services: [ OK ] [root@samba-server ~]# service nmb stop Shutting down NMB services: [ OK ]
ลบไฟล์ที่เก็บข้อมูลของโดเมน โดยไฟล์เหล่านี้จะถูกสร้างขึ้นมาใหม่โดยอัตโนมัติหลังจากรันเซอร์วิส Samba อีกครั้ง
[root@samba-server ~]# rm -f /var/lib/samba/wins.dat [root@samba-server ~]# rm -f /var/lib/samba/browse.dat [root@samba-server ~]# rm -f /var/lib/samba/gencache.tdb
รันเซอร์วิส Samba อีกครั้ง
[root@samba-server ~]# service smb start Starting SMB services: [ OK ] [root@samba-server ~]# service nmb start Starting NMB services: [ OK ]
ตรวจสอบไฟล์ log.nmbd หลังการแก้ไข
[root@samba-server ~]# tail -f /var/log/samba/log.nmbd [2008/10/25 16:46:05, 0] nmbd/nmbd.c:main(849) nmbd version 3.2.3-0.20.fc9 started. Copyright Andrew Tridgell and the Samba Team 1992-2008 [2008/10/25 16:46:05, 0] nmbd/asyncdns.c:start_async_dns(155) started asyncdns process 2269 [2008/10/25 16:46:05, 0] nmbd/nmbd_logonnames.c:add_logon_names(160) add_domain_logon_names: Attempting to become logon server for workgroup SMBLDAP on subnet 192.168.1.1 [2008/10/25 16:46:05, 0] nmbd/nmbd_logonnames.c:add_logon_names(160) add_domain_logon_names: Attempting to become logon server for workgroup SMBLDAP on subnet UNICAST_SUBNET [2008/10/25 16:46:05, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(336) become_domain_master_browser_wins: Attempting to become domain master browser on workgroup SMBLDAP, subnet UNICAST_SUBNET. [2008/10/25 16:46:05, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_wins(350) become_domain_master_browser_wins: querying WINS server from IP 192.168.1.1 for domain master browser name SMBLDAP<1b> on workgroup SMBLDAP [2008/10/25 16:46:05, 0] nmbd/nmbd_logonnames.c:become_logon_server_success(121) become_logon_server_success: Samba is now a logon server for workgroup SMBLDAP on subnet UNICAST_SUBNET [2008/10/25 16:46:05, 0] nmbd/nmbd_become_dmb.c:become_domain_master_stage2(110) *****
Samba server SAMBA-SERVER is now a domain master browser for workgroup SMBLDAP on subnet UNICAST_SUBNET
***** [2008/10/25 16:46:05, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(291) become_domain_master_browser_bcast: Attempting to become domain master browser on workgroup SMBLDAP on subnet 192.168.1.1 [2008/10/25 16:46:05, 0] nmbd/nmbd_become_dmb.c:become_domain_master_browser_bcast(304) become_domain_master_browser_bcast: querying subnet 192.168.1.1 for domain master browser on workgroup SMBLDAP [2008/10/25 16:46:09, 0] nmbd/nmbd_logonnames.c:become_logon_server_success(121) become_logon_server_success: Samba is now a logon server for workgroup SMBLDAP on subnet 192.168.1.1 [2008/10/25 16:46:13, 0] nmbd/nmbd_become_dmb.c:become_domain_master_stage2(110) *****
Samba server SAMBA-SERVER is now a domain master browser for workgroup SMBLDAP on subnet 192.168.1.1
***** [2008/10/25 16:46:27, 0] nmbd/nmbd_become_lmb.c:become_local_master_stage2(395) *****
Samba name server SAMBA-SERVER is now a local master browser for workgroup SMBLDAP on subnet 192.168.1.1
*****
ตรวจสอบไฟล์ wins.dat หลังการแก้ไข
[root@samba-server ~]# cat /var/lib/samba/wins.dat VERSION 1 0 "SMBLDAP#1e" 1225187165 0.0.0.0 e4R "SAMBA-SERVER#00" 1225187165 192.168.1.1 66R "SAMBA-SERVER#03" 1225187165 192.168.1.1 66R "SMBLDAP#1b" 1225187165 192.168.1.1 64R "SAMBA-SERVER#20" 1225187165 192.168.1.1 66R "SMBLDAP#00" 1225187165 0.0.0.0 e4R "SMBLDAP#1c" 1225187165 192.168.1.1 e4R