Debian/Ubuntu ile çok sayıda IP adresi nasıl kaydedilir
Tek bir sunucunun çoğu zaman birden fazla IP adresine ihtiyacı olur. Bu kılavuz, Debian ve Ubuntu'da tek bir ağ arayüzüne birden fazla IPv4 adresi atamanın iki yolunu açıklar:
- otomatik olarak, bir kabuk betiği ve bir systemd hizmetiyle, geniş aralıklar için önerilir;
- doğrudan netplan içinde, adreslerin yalnızca yeniden başlatmaya değil, ağın yeniden yapılandırılmasına da dayanması gerektiğinde önerilir.
Her iki yöntem de yapılandırmayı yeniden başlatmalar arasında kalıcı kılar. Durumunuza uygun olanı seçmek için her yöntemin sonundaki notu okuyun.
Birden fazla IP adresine ne zaman ihtiyacınız olur
Tek bir sunucudaki birçok yaygın iş yükü, birden fazla genel adres gerektirir:
- Farklı alan adlarının gönderim itibarını ayırmak için ayrı adresler ve PTR kayıtları kullanan posta sunucuları.
- Eski uygulamalar, müşteri yalıtımı veya belirli güvenlik duvarı ilkeleri için ayrılmış adresler gerektiren web sunucuları.
- Her proxy örneğinin veya her VPN uç noktasının kendi genel adresine bağlandığı proxy ve VPN altyapısı.
- Yönlendirilmiş IP adresleri kullanan kapsayıcılar veya sanal makineler.
INTROSERV VPS planları varsayılan olarak iki IPv4 adresi ve bir /112 IPv6 alt ağı içerir. Birçok konumda ek IPv4 adresleri mevcuttur. Bölgenizdeki kullanılabilirliği sipariş yapılandırıcısından kontrol edin.
Başlamadan önce
Root erişimine ve ek adresleri taşıyacak arayüzün adına ihtiyacınız var. Modern Debian ve Ubuntu sürümleri artık eski eth0 adını kullanmaz, bu yüzden bunu varsaymayın. Arayüzleri mevcut adresleriyle birlikte listeleyin ve birincil adresinizin zaten bulunduğu arayüzü belirleyin:
ip -br addr show
Çıktı, üzerlerinde halihazırda yapılandırılmış adreslerin yanında ens3, enp1s0 veya eth0 gibi girdiler gösterir. Ana IP'nizi zaten taşıyan arayüz, aşağıdaki adımlarda kullanacağınız arayüzdür. Buradaki örnekler ens3 kullanır.
Uyarı: Bu adımlar, büyük olasılıkla SSH üzerinden eriştiğiniz bir sunucudaki ağ yapılandırmasını değiştirir. Bir hata kendi erişiminizi kesebilir. Mümkünse, sağlayıcı konsolu veya IP-KVM gibi ikinci bir giriş yolunu hazır bulundurun ve aşağıda gösterilen güvenli uygulama seçeneklerini tercih edin.
Adres betiğini oluşturma
Kısa bir betik, tek seferde bir adres aralığı ekler. Bunu /usr/local/sbin içinde oluşturun:
nano /usr/local/sbin/extra-ips.sh
Aşağıdaki betiği yapıştırın. Arayüz adını, ön eki ve aralığı size atanan blokla değiştirin. Aşağıdaki adresler RFC 5737'deki belgeleme aralığını kullanır ve yer tutucudur:
#!/bin/bash set -euo pipefail # Ek adresleri tasiyacak arayuz. IFACE="ens3" # Ortak on ek ile ana bilgisayar oktetinin ilk ve son degeri. # Bunlari size atanan blokla degistirin. PREFIX="203.0.113" FIRST=10 LAST=60 # Arayuz adi yanlissa net bir mesajla erken durdur. if ! ip link show "$IFACE" >/dev/null 2>&1; then echo "Arayuz $IFACE bulunamadi. Adi su komutla kontrol edin: ip -br addr show" >&2 exit 1 fi for HOST in $(seq "$FIRST" "$LAST"); do ip addr replace "${PREFIX}.${HOST}/32" dev "$IFACE" done
Bilgi: Adresler bilinçli olarak /32 ön eki kullanır. Birincil arayüz, alt ağı için yönlendirmeye zaten sahiptir, bu nedenle her ikincil adres yalnızca yerel bir ana bilgisayar yönlendirmesine ihtiyaç duyar. /32 ön eki, çekirdeğin yinelenen bir alt ağ yönlendirmesi eklemesini önler ve yönlendirme tablosunu temiz tutar. Betik, halihazırda var olan adresler için hata bildirmeden güvenle yeniden çalıştırılabilmesi içinip addr addyerineip addr replacekullanır.
Betiği çalıştırılabilir yapın. Bu kılavuzun önceki sürümünde eksik olan tam yola dikkat edin:
chmod +x /usr/local/sbin/extra-ips.sh
Adresleri bir systemd hizmetiyle kalıcı kılma
Betiği elle çalıştırmak, adresleri yalnızca bir sonraki yeniden başlatmaya kadar ekler. Bunları önyüklemede otomatik olarak uygulamak için, betiği önyükleme sırasında çalıştıran bir systemd hizmeti oluşturun. Bu yöntem, sistem netplan, systemd-networkd veya eski ifupdown yığınını kullansa da aynı şekilde çalışır.
Birim dosyasını oluşturun:
nano /etc/systemd/system/extra-ips.service
Aşağıdakileri ekleyin:
[Unit] Description=Assign additional IP addresses After=network-online.target Wants=network-online.target [Service] Type=oneshot ExecStart=/usr/local/sbin/extra-ips.sh RemainAfterExit=yes [Install] WantedBy=multi-user.target
systemd'yi yeniden yükleyin ve hizmeti hem şimdi hem de her önyüklemede çalışacak şekilde etkinleştirin:
systemctl daemon-reload systemctl enable --now extra-ips.service
Hizmetin doğru şekilde başladığını doğrulayın:
systemctl status --no-pager extra-ips.service
Uyarı: Bu betiğin eklediği adresler, netplan veya systemd-networkd yapılandırmasının bir parçası değildir. Daha sonra yapılan birnetplan apply, birnetworkctl reconfigureveya herhangi bir ağ yeniden başlatması bunları kaldırabilir. Bir sonraki yeniden başlatmada veyasystemctl restart extra-ips.servicekomutunu çalıştırdığınızda hemen geri dönerler. Adreslerin ağın yeniden yapılandırılmasından sonra da kalması gerekiyorsa, bunun yerine aşağıdaki netplan yöntemini kullanın.
Alternatif: adresleri netplan içinde tanımlama
netplan'ın varsayılan olduğu Ubuntu'da, adresler doğrudan netplan içinde tanımlanabilir. Ağ yığını bunları yönetilen adresler olarak ele alır, böylece bir yeniden yapılandırmaya dayanırlar. Bu, küçük ve sabit bir liste için uygundur. Geniş bir aralık için yukarıdaki systemd hizmeti daha iyi ölçeklenir, çünkü netplan adres başına bir satır gerektirir.
Birden fazla netplan dosyası aynı arayüzü tanımladığında, ayarları beklenmedik şekillerde birbirinin üzerine yazabilir veya birleşebilir; bu da birincil adresinizi düşürüp erişimi kesebilir. Mevcut yapılandırma dosyasını düzenlemek, genellikle aynı arayüz için başka bir dosya oluşturmaktan daha güvenlidir. Arayüzünüzü halihazırda yapılandıran dosyayı açın, genellikle /etc/netplan/50-cloud-init.yaml veya /etc/netplan/00-installer-config.yaml:
ls /etc/netplan/ nano /etc/netplan/50-cloud-init.yaml
Arayüzün dhcp4, birincil adres, ağ geçidi ve ad sunucuları gibi mevcut tüm ayarlarını koruyun. Ek adresleri aynı arayüzdeki bir addresses listesi altına ekleyin. Aşağıdaki örnek, birincil adres için DHCP'yi korur ve üç ikincil adres ekler:
network: version: 2 ethernets: ens3: dhcp4: true addresses: - 203.0.113.10/32 - 203.0.113.11/32 - 203.0.113.12/32
Yeni netplan sürümleri, dosya diğer kullanıcılar tarafından okunabiliyorsa uyarı verir. Bu uyarıyı gidermek için izinleri kısıtlayın:
chmod 600 /etc/netplan/50-cloud-init.yaml
Değişikliği netplan try ile test edin. Yapılandırmayı uygular ve onaylamazsanız 120 saniye sonra otomatik olarak geri alır; bu, uzaktan erişimi kaybetmenize karşı sizi korur:
netplan try
Bağlantı açık kalır ve her şey doğru görünürse, istendiğinde onaylayın, ardından yapılandırmayı kalıcı olarak uygulayın:
netplan apply
Sonucu doğrulama
Arayüze şu anda bağlı olan adresleri listeleyin ve yenilerinin mevcut olduğunu doğrulayın:
ip -br addr show ens3
Ek adresler artık çıktıda görünmeli ve her yeniden başlatmadan sonra otomatik olarak geri yüklenecektir.
Adresleri kaldırma
Tek bir adresi kaldırmak için onu arayüzden silin:
ip addr del 203.0.113.10/32 dev ens3
Betiği ve hizmeti kullandıysanız, hizmeti devre dışı bırakıp kaldırarak tüm aralığın önyüklemede atanmasını durdurun:
systemctl disable --now extra-ips.service rm /etc/systemd/system/extra-ips.service systemctl daemon-reload
netplan kullandıysanız, netplan dosyasındaki addresses listesinden ek satırları kaldırın, ardından netplan apply komutunu çalıştırın.
Sorun giderme
Hizmet başlamazsa, durumunu ve günlüklerini kontrol edin:
systemctl status --no-pager extra-ips.service journalctl -u extra-ips.service
Aşağıdakileri doğrulayın:
- betikteki arayüz adı,
ip -br addr showçıktısındaki gerçek adla eşleşir; - adresler size atanan bloğa aittir;
- betik çalıştırılabilir.
Yanlışlıkla /32 yerine /24 ön eki kullandıysanız, yönlendirme tablosu belirtiyi birkaç yinelenen alt ağ yönlendirmesi olarak gösterir. Şununla kontrol edin:
ip route
Bu kılavuz IPv4 üzerine odaklanır. IPv4'te olduğu gibi, ikincil IPv6 adresleri normalde /128 ön ekiyle ana bilgisayar adresleri olarak, aynı ip addr replace komutuyla eklenir, örneğin ip addr replace 2001:db8::10/128 dev ens3.