hostnamectl Komutu: Linux'te Hostname Ayarlama ve Sorgulama

Linux sistemlerinde hostnamectl komutunun kullanımı, hostname türleri (static/transient/pretty) ve sistem metadata yönetimi hakkında detaylı rehber.

L
Linuxize
0 görüntülenme
hostnamectl Komutu: Linux'te Hostname Ayarlama ve Sorgulama

Giriş

Linux sistemlerinde sunucu adını değiştirmek veya yeni bir makine kurarken hostname'un tutarlılığı büyük önem taşır. Log dosyalarında, izleme panellerinde ve ağ kayıtlarında aynı hostname kullanılması, yönetim sürecini kolaylaştırır ve karışıklıkları önler. systemd tabanlı Linux dağıtımlarında hostnamectl komutu, hostname ve ilgili sistem metadata'larını komut satırından yönetmek için standart araçtır. Bu komutla /etc/hostname dosyasını elle düzenlemeye gerek kalmadan hostname değişiklikleri gerçekleştirebilirsiniz.

Temel Bilgiler ve Hostname Türleri

hostnamectl komutu üç farklı hostname türünü yönetir:

  1. Static (Sabit) Hostname: Yönetici tarafından /etc/hostname dosyasına kaydedilen ve yeniden başlatmalar sonrasında bile kalıcı olan isimdir. Bu isim çekirdek ve ağ servisleri tarafından kullanılır.
  2. Transient (Geçici) Hostname: Ağ yapılandırmasından veya DHCP'den gelen geçici isimdir. Static hostname geçerli değilse kullanılır. Yeniden başlatma sonrasında kaybolur.
  3. Pretty (Güzel) Hostname: Kullanıcı dostu, boşluk ve özel karakterler içerebilen serbest formatlı isimdir. /etc/machine-info dosyasında saklanır ve masaüstü ortamları ile yönetim araçları tarafından kullanılır. Ağ servislerinde etkisi yoktur.

Önemli Not: Hostname'ler DNS etiketlerine uygun olmalıdır. Tek bir etiket (örneğin web-server) veya tam nitelikli alan adı (örneğin web-server.example.com) kullanılabilir. Linux çekirdeği hostname'leri 64 karakterle sınırlar.

Syntax ve Temel Kullanım

hostnamectl [SEÇENEKLER] KOMUT

Komut argümanı olmadan çalıştırıldığında, hostnamectl sistem durumu hakkında bilgi verir:

hostnamectl status

Bu komut, sistem hostname'ini, makine kimliğini (Machine ID), önyükleme kimliğini (Boot ID), sanalizasyon platformunu, işletim sistemini ve çekirdek sürümünü gösterir.

Hostname Sorgulama

  1. Tüm hostname bilgilerini görüntülemek:
    hostnamectl
  2. Sadece static hostname'i görüntülemek:
    hostnamectl --static
  3. Sadece transient hostname'i görüntülemek:
    hostnamectl --transient
  4. Sadece pretty hostname'i görüntülemek:
    hostnamectl --pretty
  5. Sadece hostname'i görüntülemek (alternatif yöntem):
    hostnamectl hostname

Hostname Türlerine Örnek

Çıktı aşağıdaki gibi olacaktır:

   Static hostname: web-server-01
         Icon name: computer-vm
           Chassis: vm
        Machine ID: a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
           Boot ID: f7e8d9c0b1a2f7e8d9c0b1a2f7e8d9c0
    Virtualization: kvm
  Operating System: Ubuntu 24.04 LTS
            Kernel: Linux 6.8.0-10-generic
      Architecture: x86-64
 Hardware Vendor: QEMU
  Hardware Model: Standard PC (Q35 + ICH9, 2009)

Static Hostname Değiştirme

Adım 1: Mevcut static hostname'i değiştirmek için aşağıdaki komutu kullanın:

sudo hostnamectl --static hostname yeni-hostname

Örnek:

sudo hostnamectl --static hostname web-server-01

Adım 2: Değişikliğin uygulandığını doğrulamak için:

hostnamectl --static

Not: Değişiklik anında uygulanır, ancak aynı terminal oturumunda eski hostname görüntülenmeye devam edebilir. Yeni bir terminal penceresi açarak değişikliği görebilirsiniz.

Tüm Hostname Türlerini Aynı Anda Ayarlama

Static, transient ve pretty hostname'leri birlikte ayarlamak için --static, --transient veya --pretty seçeneklerini kullanmayın:

sudo hostnamectl hostname yeni-hostname

Bu komut, static hostname olarak yeni-hostname değerini, transient hostname olarak da aynı değeri ayarlar. Pretty hostname ise boş kalır.

Pretty Hostname Ayarlama

Pretty hostname, kullanıcı dostu bir isimdir ve serbest formatta olabilir. Örneğin:

sudo hostnamectl --pretty hostname "Web Sunucusu 01 - Üretim Ortamı"

Static ve pretty hostname'ler birbirinden bağımsızdır. Örneğin:

sudo hostnamectl --static hostname web-server-01
sudo hostnamectl --pretty hostname "Web Sunucusu 01 (Üretim)"

Pretty hostname /etc/machine-info dosyasında saklanır ve masaüstü ortamlarında gösterilir.

Transient Hostname Ayarlama

Transient hostname, geçici bir isimdir ve genellikle ağdan gelir. Sadece geçerli oturum için kullanılır:

sudo hostnamectl --transient hostname temporary-node

Bu isim, sistem yeniden başlatıldığında kaybolur.

Chassis Türü Ayarlama

Chassis türü, sistemin donanım türünü tanımlar. Bu bilgi masaüstü ortamları ve sistem araçları tarafından kullanılır. Geçerli chassis türleri şunlardır:

  • desktop - Masaüstü bilgisayar
  • laptop - Dizüstü bilgisayar
  • convertible - Dönüştürülebilir cihaz
  • server - Sunucu
  • tablet - Tablet
  • handset - Akıllı telefon
  • watch - Akıllı saat
  • embedded - Gömülü sistem
  • vm - Sanal makine
  • container - Konteyner

Chassis türünü ayarlamak için:

sudo hostnamectl chassis server

Örnek: Sanal makine için:

sudo hostnamectl chassis vm

Chassis türü /etc/machine-info dosyasında saklanır.

Dağıtım Ortamı ve Konum Bilgisi Ayarlama

Büyük ölçekli ortamlarda makineleri tanımlamak için ek metadata'lar kullanılabilir. Bu bilgiler /etc/machine-info dosyasında saklanır ve hostnamectl çıktısında görüntülenir, ancak sistem davranışını etkilemez.

Dağıtım ortamı ayarlama:

sudo hostnamectl deployment production

Konum bilgisi ayarlama:

sudo hostnamectl location "Rack-3 / Veri Merkezi-Ankara"

Bu bilgiler izleme ve envanter araçları tarafından kullanılabilir.

Uzak Makine veya Konteyner Yönetimi

hostnamectl komutu, uzak makinelerde SSH üzerinden kullanılabilir. Bu özellik, -H seçeneğiyle etkinleştirilir.

Uzak makine sorgulama:

hostnamectl -H kullanıcı@uzak-makine.example.com status

Konteyner yönetimi: Yerel systemd makine veya konteyner üzerinde işlem yapmak için -M seçeneği kullanılır:

hostnamectl -M konteyner-ismi status

Not: Uzak makineye erişim için gerekli izinlere sahip olmanız gerekir. SSH anahtarları veya parola doğrulaması gerekebilir.

Hostname ve Ağ Yapılandırması

Önemli Uyarı: Hostname değişikliği DNS kayıtlarını otomatik olarak güncellemez. Diğer sistemlerin yeni hostname ile erişebilmesi için DNS kayıtlarının manuel olarak güncellenmesi gerekir.

/etc/hosts dosyası da hostname değişikliklerinden etkilenebilir. Eski hostname için bir giriş varsa, bu girişin yeni hostname ile güncellenmesi yerel isim çözümlemesi sorunlarını önler. Örneğin:

127.0.1.1   eski-hostname
127.0.1.1   yeni-hostname

Bulut ortamlarında, cloud-init veya sağlayıcı metadata'si yeniden başlatma sırasında hostname'i eski haline döndürebilir. Bu durumda /etc/cloud/cloud.cfg dosyasındaki preserve_hostname: true seçeneğini kontrol edin.

Sorun Giderme

hostnamectl: komut bulunamadı

Çözüm: Bu komut yalnızca systemd tabanlı Linux dağıtımlarında mevcuttur. systemd kullanmayan sistemlerde hostname komutunu kullanın ve platformun hostname yapılandırma dosyasını manuel olarak düzenleyin.

Could not set property: Erişim reddedildi

Çözüm: Hostname değişikliği ve sistem metadata'larının güncellenmesi için yönetici ayrıcalıkları gerekir. Komutu sudo ile çalıştırın ve hesabınızın yetkili olduğunu doğrulayın.

Hostname yeniden başlatma sonrasında eski haline dönüyor

Çözüm: cloud-init, DHCP veya başka bir sağlayıcı servis hostname'i sıfırlıyor olabilir. Sistemdeki bulut ve ağ yapılandırmasını kontrol edin ve hostname'i tekrar tekrar değiştirmek yerine temel sorunu çözün.

Hızlı Referans Tablosu

Görev Komut
Sistem hostname detaylarını göster hostnamectl
Mevcut hostname'i yazdır hostnamectl hostname
Static hostname'i yazdır hostnamectl --static
Sadece static hostname'i ayarla sudo hostnamectl --static hostname web-server-01
Tüm hostname türlerini ayarla sudo hostnamectl hostname web-server-01
Pretty hostname ayarla sudo hostnamectl --pretty hostname "Web Sunucusu 01"
Transient hostname ayarla sudo hostnamectl --transient hostname temporary-node
Chassis türünü ayarla sudo hostnamectl chassis server
Dağıtım ortamını ayarla sudo hostnamectl deployment production
Konumu ayarla sudo hostnamectl location "Rack-3 / Veri Merkezi-Ankara"
Uzak makine sorgula hostnamectl -H kullanıcı@uzak-makine.example.com status
Konteyner sorgula hostnamectl -M konteyner-ismi status

Sonuç

hostnamectl komutu, systemd tabanlı Linux sistemlerinde hostname ve ilgili sistem metadata'larını yeniden başlatmaya gerek kalmadan yönetmenizi sağlar. Bu komutla hostname değişikliklerini hızlı ve güvenilir bir şekilde gerçekleştirebilir, sisteminizi daha iyi organize edebilirsiniz. Hostname yönetiminin yanı sıra DNS kayıtları ve /etc/hosts dosyası gibi ağ yapılandırmalarını da dikkate almayı unutmayın.

Daha geniş bir hostname yönetimi rehberi için Linux'te hostname değiştirme makalesini inceleyebilirsiniz.

Kaynak

Linuxize