การเปลี่ยน IP Address ของ Samba PDC

บทความนี้จะอธิบายการแก้ไขปัญหาหลังจากเปลี่ยน 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

Leave a Reply

Your email address will not be published.