WESERVER / BİLGİ BANKASI

Ubuntu sunucuda IPv6 adresi nasıl yapılandırılır? (netplan)

Ubuntu’da statik IPv6 adresi netplan dosyasına adres, prefix ve ::/0 rotasıyla yazılır, netplan try ile denenip netplan apply ile kalıcı yapılır. Dosya örneği, on-link ayarı ve sık hatalar.

Kısa cevap

Ubuntu’da kalıcı IPv6 adresi /etc/netplan/ klasöründeki YAML dosyasıyla tanımlanır: ağ arayüzünün altına addresses satırıyla adresi ve prefix uzunluğunu, routes bölümüne ::/0 hedefiyle ağ geçidini yazar, değişikliği önce netplan try ile dener, sonra netplan apply ile kalıcı hale getirirsiniz. Ardından ip -6 addr ve ping -6 ile adresin geldiğini ve dışarıya çıkışın çalıştığını doğrularsınız.

Komutlar Ubuntu 20.04, 22.04 ve 24.04 sunucu sürümlerinde aynıdır; üçü de ağ ayarlarını netplan ile yönetir. Örneklerde belgeleme için ayrılmış 2001:db8::/32 bloğu (RFC 3849) kullanıldı: sunucu adresi 2001:db8:1234:5678::10/64, ağ geçidi 2001:db8:1234:5678::1, arayüz adı eth0. Kendi sunucunuzda bunların yerine sağlayıcının verdiği adres, prefix ve ağ geçidini yazın.

Başlamadan önce hangi bilgiler gerekir?

Üç bilgiye ihtiyacınız var: size atanan IPv6 adresi ya da blok, prefix uzunluğu ve ağ geçidi adresi. WeServer VDS’ler IPv4 ve IPv6 ile gelir; IPv6 Subnet VDS’te ilk üç pakette /64, üst paketlerde /48 veya /64 blok tanımlıdır. Teslimat bilgilerinde ağ geçidini göremiyorsanız tahmin etmeyin, destek ekibinden isteyin. Yanlış ağ geçidiyle adres arayüzde görünür ama sunucu dışarıya çıkamaz.

Sunucuya SSH ile root ya da sudo yetkili kullanıcıyla bağlanın. Mümkünse IPv4 üzerinden bağlanın; IPv6 ayarını değiştirirken IPv6 oturumunuz kopabilir. Sağlayıcınızın konsol erişimi varsa nerede olduğunu önceden bilin, hatalı bir ağ ayarında sunucuya oradan girersiniz.

Netplan dosyası nerede, arayüz adı nasıl bulunur?

ls /etc/netplan/ komutu yapılandırma dosyalarını listeler. Bulut imajlarıyla kurulan sunucularda bu genellikle 50-cloud-init.yaml olur; elle kurulanlarda 00-installer-config.yaml ya da 01-netcfg.yaml görebilirsiniz. Arayüz adını ip -br link ile bulun: çıktıda lo dışında kalan ve UP durumundaki satır, örneğin eth0, ens3 veya enp1s0, dış ağa bağlı arayüzdür.

Dosya 50-cloud-init.yaml ise başındaki yorum satırlarını okuyun. cloud-init bu dosyayı yeniden başlatmada baştan yazabilir ve sizin eklediğiniz IPv6 satırları kaybolur. Bunu önlemek için /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg adında bir dosya açıp içine network: {config: disabled} yazın. Düzenlemeden önce mevcut dosyanın yedeğini alın: cp /etc/netplan/50-cloud-init.yaml /root/50-cloud-init.yaml.yedek.

Statik IPv6 adresi için netplan dosyası nasıl yazılır?

Mevcut dosyayı nano ya da vim ile açın ve IPv6 ayarlarını aynı arayüzün altına ekleyin. Aynı arayüzü ikinci bir dosyada yeniden tanımlamak birleştirme sırasına bağlı sürprizler çıkarır, tek dosyada kalmak daha kolay izlenir. YAML girintiye duyarlıdır; sekme karakteri kullanmayın, yalnız boşluk kullanın. IPv4 DHCP ile alınan bir sunucuda dosyanın son hali satır satır şöyle olur (parantez içindeki sayı, satırın başında kaç boşluk bırakılacağını gösterir):

  • network: (0)
  • version: 2 (2)
  • ethernets: (2)
  • eth0: (4)
  • dhcp4: true (6)
  • addresses: (6)
  • - "2001:db8:1234:5678::10/64" (8)
  • routes: (6)
  • - to: "::/0" (8)
  • via: "2001:db8:1234:5678::1" (10)
  • nameservers: (6)
  • addresses: ["2001:4860:4860::8888", "2606:4700:4700::1111"] (8)

Satırlar ne işe yarar, gateway6 neden kullanılmamalı?

addresses listesi arayüze eklenecek adresleri prefix uzunluğuyla birlikte alır. Adresi tırnak içinde yazın; iki nokta üst üste içeren değerler tırnaksız da çoğunlukla çalışır ama tırnak, YAML’ın değeri yanlış yorumlama ihtimalini ortadan kaldırır. Sunucuda IPv4 statik tanımlıysa onun adresi de aynı listede durur, IPv6 adresini yeni bir satır olarak ekleyin.

routes bölümündeki ::/0 bütün IPv6 trafiğinin hangi ağ geçidinden çıkacağını söyler. Eski rehberlerde gördüğünüz gateway6 anahtarı Ubuntu 22.04 ile gelen netplan sürümlerinde kullanımdan kaldırıldı; hâlâ okunur ama netplan her çalıştığında uyarı basar. Yeni kurulumda routes biçimini kullanın.

nameservers bölümü isteğe bağlıdır. Sunucu DNS sorgularını IPv4 üzerinden zaten yapabiliyorsa bu satırları eklemeseniz de IPv6 adreslerine bağlanırsınız. Örnekteki iki adres herkese açık DNS çözümleyicileridir; sağlayıcınızın önerdiği bir DNS adresi varsa onu yazın.

Ayar SSH bağlantısını koparmadan nasıl uygulanır?

Dosyayı kaydettikten sonra şu sırayla ilerleyin:

  • chmod 600 /etc/netplan/50-cloud-init.yaml ile dosyayı yalnız root’un okuyabileceği hale getirin. Aksi halde yeni netplan sürümleri “Permissions … are too open” uyarısı verir.
  • netplan generate ile dosyayı denetleyin. Çıktı boşsa söz dizimi doğrudur; hata varsa satır ve sütun numarasıyla gösterilir.
  • netplan try ile ayarı geçici olarak uygulayın. Komut 120 saniye bekler; bu sürede Enter’a basmazsanız eski ayara döner. Bu süre içinde ikinci bir terminalden sunucuya bağlanabildiğinizi kontrol edin, sonra Enter ile onaylayın.
  • netplan try bazı ortamlarda geri dönüşü desteklemediğini söyleyebilir. O durumda netplan apply çalıştırın, ama önce konsol erişiminiz olduğundan emin olun.

Ağ geçidi aynı subnette değilse ne yapılır?

Bazı ağlarda ağ geçidi sunucuya verilen prefix’in dışında kalır. Örneğin adres /128 olarak verilmiştir ya da ağ geçidi başka bir /64 bloğundadır. Çekirdek bu durumda ağ geçidine nasıl ulaşacağını bilemez ve rota eklenmez; rotayı ip -6 route add ile elle eklemeyi denerseniz “Nexthop has invalid gateway” hatası alırsınız.

Çözüm, routes altındaki kayda via satırının hizasında on-link: true eklemektir. Bu satır çekirdeğe ağ geçidinin aynı fiziksel bağlantı üzerinde olduğunu söyler. Ağ geçidi fe80::1 gibi bir link-local adresse on-link gerekmez, çünkü link-local adresler her zaman arayüzün kendi bağlantısındadır. Hangi durumun sizin ağınıza uyduğunu sağlayıcınızın verdiği bilgiden kontrol edin.

Bloktan birden fazla IPv6 adresi nasıl eklenir?

Birkaç adres gerekiyorsa her birini addresses listesine ayrı satır olarak yazın, örneğin 2001:db8:1234:5678::11/64 ve 2001:db8:1234:5678::12/64, sonra netplan try ile uygulayın. Web sunucusunda farklı sitelere ya da servislere ayrı IPv6 adresi vermek için bu yöntem yeterlidir.

Yüzlerce ya da binlerce adres kullanacaksanız hepsini netplan dosyasına yazmak pratik değildir ve her adres için komşu keşfi (NDP) trafiği oluşur. Bu ölçekte bloğun sunucunuza yönlendirilmiş (routed) mi yoksa aynı bağlantı üzerinde (on-link) mi verildiğini sağlayıcınızla netleştirin; uygun yöntem buna göre değişir. /48 ile /64 arasındaki farkı ve prefix mantığını IPv6 subnet nedir yazısında bulabilirsiniz.

IPv6 yapılandırmasının çalıştığı nasıl kontrol edilir?

  • ip -6 addr show dev eth0: adresiniz scope global olarak görünmeli. Yanında tentative ya da dadfailed yazıyorsa sorun var, aşağıdaki hata listesine bakın.
  • ip -6 route show default: default via 2001:db8:1234:5678::1 dev eth0 benzeri bir satır görmelisiniz.
  • ping -6 -c 4 2606:4700:4700::1111: dışarıya IPv6 çıkışını DNS’ten bağımsız olarak test eder.
  • curl -6 -sI https://example.com: HTTP durum satırı geliyorsa AAAA kaydı çözülüyor ve IPv6 üzerinden web bağlantısı kurulabiliyor demektir.
  • Başka bir makineden ssh -6 kullanici@2001:db8:1234:5678::10 ya da ping -6 ile sunucuya dışarıdan ulaşıldığını doğrulayın.

Netplan IPv6 hataları ve çözümleri

  • netplan generate “Invalid YAML” ya da “inconsistent indentation” diyor. Neden: sekme karakteri veya hizasız boşluk. Çözüm: hata mesajındaki satıra gidin, girintiyi boşlukla ve aynı seviyedeki satırlarla hizalı yazın.
  • ping -6 “connect: Network is unreachable” veriyor. Neden: IPv6 varsayılan rotası yok. Çözüm: routes bölümünü ve ::/0 satırını kontrol edin; ip -6 route show default boşsa ağ geçidi eklenmemiştir.
  • Adres arayüzde görünüyor ama ping “Destination unreachable: Address unreachable” ile düşüyor. Neden: ağ geçidi adresi yanlış ya da prefix dışında. Çözüm: ağ geçidini sağlayıcının verdiği bilgiyle karşılaştırın, prefix dışındaysa on-link: true ekleyin.
  • ip -6 addr adreste dadfailed gösteriyor. Neden: aynı adres ağda başka bir cihazda kullanılıyor. Çözüm: bloktan başka bir adres seçin; sorun sürerse sağlayıcıya bildirin.
  • Arayüzde hiç IPv6 adresi yok, fe80 ile başlayan adres de görünmüyor. Neden: IPv6 sistemde kapatılmış. Çözüm: sysctl net.ipv6.conf.all.disable_ipv6 çıktısı 1 ise /etc/sysctl.conf ve /etc/sysctl.d/ altındaki ilgili satırı silin, sysctl --system çalıştırın; GRUB satırında ipv6.disable=1 varsa kaldırıp update-grub sonrası yeniden başlatın.
  • Yeniden başlatınca IPv6 adresi kayboldu. Neden: cloud-init netplan dosyasını yeniden yazdı. Çözüm: 99-disable-network-config.cfg dosyasını ekleyin ve IPv6 satırlarını tekrar yazın.

Sık sorulan sorular

Statik adres yerine DHCPv6 ya da otomatik yapılandırma kullanabilir miyim? Ağınız router advertisement gönderiyor ya da DHCPv6 sunuyorsa dhcp6: true ile adres otomatik alınabilir. Sunucu tarafında hangi adresin kullanılacağını kesin bilmek istediğiniz için statik tanım daha öngörülebilirdir. Ağın hangi yöntemi desteklediğini sağlayıcınıza sorun.

netplan apply SSH bağlantımı keser mi? Yalnız IPv6 satırı eklediyseniz IPv4 üzerinden açılmış oturum genellikle etkilenmez. IPv4 ayarında bir hata varsa bağlantı kopabilir; bu yüzden netplan try ile başlamak ve konsol erişimini hazır tutmak daha güvenlidir.

Debian veya AlmaLinux’ta da netplan kullanılır mı? Debian imaja göre ifupdown (/etc/network/interfaces) ya da netplan kullanabilir; /etc/netplan boşsa ayar ifupdown’dadır. AlmaLinux ve Rocky Linux ağ ayarlarını NetworkManager ile yönetir, IPv6 adresi orada nmcli ile tanımlanır.

IPv6 açınca güvenlik duvarı ayarı değişir mi? ufw, /etc/default/ufw dosyasında IPV6=yes iken kuralları IPv6 için de uygular. ip6tables ile kendiniz kural yazıyorsanız ICMPv6’yı topluca engellemeyin; komşu keşfi ICMPv6 ile çalışır ve engellenirse IPv6 bağlantısı kurulmaz. Ayrıntılar yeni VDS’te ilk güvenlik ayarları rehberinde.

Adresi /64 mü yoksa /128 mi yazmalıyım? Sağlayıcının verdiği prefix uzunluğunu yazın. Blok /64 olarak verildiyse adres de /64 ile tanımlanır ve ağ geçidi aynı bloktaysa ek ayar gerekmez. /128 yazarsanız ağ geçidi prefix dışında kalır ve on-link: true gerekir.

İlgili ürünleri inceleWhatsApp ile sor← Kategoriye dön

İLGİLİ

İlgili yazılar

ALL IN WE1

Altyapınızı birlikte kuralım.

İhtiyacınızı paylaşın; doğru kaynak ve sunucu tipini birlikte belirleyelim.

WhatsApp ile görüş