หมายเหตุ: ระบบที่ใช้ในโพสนี้คือ Ubuntu บน AWS EC2
Hostname คือชื่อเครื่องของคอมพิวเตอร์หรือเซิฟเวอร์ ซึ่งไม่ควรจะซ้ำกันในระบบเครือข่ายเดียวกัน โดยปกติเมื่อลงเครื่องครั้งแรก โฮสเนมจะเป็น localhost หรือหากลงผ่านระบบ Cloud ก็อาจจะมีโฮสเนมที่แตกต่างกันออกไป เช่น ใน EC2 โฮสเนมจะเป็น ip-หมายเลขไอพี
มีหลายสาเหตุที่ทำให้เราต้องเปลี่ยนโฮสเนม เช่น ต้องการให้จำได้ว่าชื่อนี้เป็นเครื่องไหน หรือเปลี่ยนเพื่อไม่ให้ซ้ำกับเครื่องอื่นในระบบเครือข่าย หรือใช้ในการติดต่อสื่อสารกับเครื่องหรือระบบอื่นๆ
คำสั่ง hostnamectl
วิธีเปลี่ยนโฮสเนมใน Ubuntu ที่ง่ายที่สุดคือใช้คำสั่ง hostnamectl โดยถ้าเราลองรันดูจะเห็นข้อมูลโฮสเนมเดิม ดังตัวอย่าง
ubuntu@ip-xx-xx-xx-xx:~$ 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
และอาจจะลองรีสตาร์ทระบบดูว่าการเปลี่ยนโฮสเนมเป็นการถาวรแล้วจริงๆ