การเปลี่ยน Hostname บน Ubuntu

หมายเหตุ: ระบบที่ใช้ในโพสนี้คือ Ubuntu บน AWS EC2

Hostname คือชื่อเครื่องของคอมพิวเตอร์หรือเซิฟเวอร์ ซึ่งไม่ควรจะซ้ำกันในระบบเครือข่ายเดียวกัน โดยปกติเมื่อลงเครื่องครั้งแรก โฮสเนมจะเป็น localhost หรือหากลงผ่านระบบ Cloud ก็อาจจะมีโฮสเนมที่แตกต่างกันออกไป เช่น ใน EC2 โฮสเนมจะเป็น ip-หมายเลขไอพี

มีหลายสาเหตุที่ทำให้เราต้องเปลี่ยนโฮสเนม เช่น ต้องการให้จำได้ว่าชื่อนี้เป็นเครื่องไหน หรือเปลี่ยนเพื่อไม่ให้ซ้ำกับเครื่องอื่นในระบบเครือข่าย หรือใช้ในการติดต่อสื่อสารกับเครื่องหรือระบบอื่นๆ

คำสั่ง hostnamectl

วิธีเปลี่ยนโฮสเนมใน Ubuntu ที่ง่ายที่สุดคือใช้คำสั่ง hostnamectl โดยถ้าเราลองรันดูจะเห็นข้อมูลโฮสเนมเดิม ดังตัวอย่าง

[email protected]:~$ hostnamectl

   Static hostname: ip-xx-xx-xx-xx
         Icon name: computer-vm
           Chassis: vm
        Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
           Boot ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    Virtualization: xen
  Operating System: Ubuntu xxxxxx LTS
            Kernel: Linux xxxx
      Architecture: x86-64

จะเห็นว่าโฮสเนมตอนนี้คือ ip-xx-xx-xx-xx หรือเป็นค่าเริ่มต้นตั้งแต่ลงเครื่องที่ EC2 ตั้งให้นั่นเอง

หากไม่พบคำสั่ง hostnamectl

หากปรากฎข้อผิดพลาด command not found เมื่อรันคำสั่ง hostnamectl บน Ubuntu เวอร์ชั่นเก่า สามารถแก้ไขได้โดยการลง systemd ด้วยคำสั่ง sudo apt-get install systemd

ลงมือเปลี่ยนโฮสเนม

คำสั่ง hostnamectl นี้สามารถเปลี่ยนโฮสเนมได้อย่างถาวร ทันทีโดยไม่ต้องรีสตาร์ทเครื่อง ซึ่งโดยปกติแล้วโฮสเนมที่ดีควรจะตั้งเป็นชื่อโดเมนแบบเต็มรูป เช่น newhostname.domain.com

sudo hostnamectl set-hostname newhostname.domain.com

การเปลี่ยนโฮสเนมด้วยคำสั่ง hostname

เราสามารถเปลี่ยนโฮสเนม ด้วยคำสั่ง hostname ชื่อโฮสเนม ก็ได้ แต่การเปลี่ยนด้วยคำสั่งนี้จะเป็นการเปลี่ยนแค่ชั่วคราว เมื่อรีสตาร์เซิฟเวอร์โฮสเนมก็จะถูกเปลี่ยนกลับไปเป็นชื่อเดิม หากต้องการให้ถาวรจะต้องไปแก้ไขชื่อโฮสเนมในไฟล์ /etc/hostname ด้วย

เปลี่ยนไฟล์ hosts เพื่อให้โฮสเนมใหม่ชี้ไปมาที่เครื่อง

เมื่อเปลี่ยนโฮสเนมแล้ว จะต้องเปลี่ยนไฟล์ /etc/hosts เพื่อให้ระบบเครือข่ายของเครื่องชี้โฮสเนมใหม่กลับไปยัง loopback ip 127.0.0.1 ด้วยคำสั่ง

sudo vi /etc/hosts

แล้วเพิ่มบรรทัดชี้โดเมนใหม่ เช่น

127.0.0.1 localhost
127.0.0.1 newhostname.domain.com

# The following lines are desirable for IPv6 capable hosts
..

เท่านี้โฮสเนมก็ถูกเปลี่ยนเรียบร้อยแล้ว โดยสามารถทดสอบด้วยการพิมพ์คำสั่ง hostname หรือ hostnamectl และอาจจะลองรีสตาร์ทระบบดูว่าการเปลี่ยนโฮสเนมเป็นการถาวรแล้วจริงๆ