Debian/Ubuntu ile çok sayıda IP adresi nasıl kaydedilir
Tek bir sunucu genellikle birden fazla IP adresine ihtiyaç duyar. 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 shell betiği ve bir systemd hizmeti ile — geniş aralıklar için önerilir;
- doğrudan netplan içinde — adreslerin hem ağ yeniden yapılandırmasından hem de yeniden başlatmadan sonra kalıcı olması gerektiğinde önerilir.
Her iki yöntem de yapılandırmayı yeniden başlatmalar arasında kalıcı hale getirir. Durumunuza en uygun olanı seçmek için her yöntemin sonundaki notu okuyun.
Birden fazla IP adresine ne zaman ihtiyaç duyarsınız
Tek bir sunucudaki çeşitli yaygın iş yükleri birden fazla genel adres gerektirir:
- Farklı alan adlarının gönderim itibarını izole etmek için ayrı adresler ve PTR kayıtları kullanan posta sunucuları.
- Eski uygulamalar, müşteri izolasyonu veya belirli güvenlik duvarı politikaları için özel adreslere ihtiyaç duyan web sunucuları.
- Her proxy örneğinin veya VPN uç noktasının kendi genel adresine bağlı olduğu proxy ve VPN altyapısı.
- Yönlendirilmiş IP adresleri kullanan konteynerler veya sanal makineler.
INTROSERV VPS planları varsayılan olarak iki IPv4 adresi ve bir /112 IPv6 alt ağı içerir. Ek IPv4 adresleri birçok lokasyonda mevcuttur. Seçtiğiniz bölge için müsaitliğ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ı kullanmıyor, bu yüzden bunu varsaymayın. Arayüzleri mevcut adresleriyle birlikte listeleyin ve zaten birincil adresinizi taşıyan arayüzü belirleyin:
ip -br addr show
Çıktı, üzerlerinde zaten yapılandırılmış adreslerin yanında ens3, enp1s0 veya eth0 gibi girdiler gösterir. Zaten ana IP'nizi taşıyan arayüz, aşağıdaki adımlarda kullanılacak arayüzdür. Buradaki örneklerde ens3 kullanılmıştır.
Bu adımlar, büyük olasılıkla SSH üzerinden eriştiğiniz bir sunucuda ağ yapılandırmasını değiştirir. Bir hata kendi erişiminizi kesebilir. Sağlayıcı konsolu veya IP-KVM gibi ikinci bir erişim yolunuz varsa hazır bulundurun ve aşağıda gösterilen güvenli uygulama seçeneklerini tercih edin.
Adres betiğinin oluşturulması
Kısa bir betik, tek seferde bir adres aralığı ekler. Bunu /usr/local/sbin altında 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 yalnızca yer tutucudur:
#!/bin/bash set -euo pipefail # Interface that will carry the additional addresses. IFACE="ens3" # Common prefix and the first and last value of the host octet. # Replace these with the block assigned to you. PREFIX="203.0.113" FIRST=10 LAST=60 # Stop early with a clear message if the interface name is wrong. if ! ip link show "$IFACE" >/dev/null 2>&1; then echo "Interface $IFACE not found. Check the name with: ip -br addr show" >&2 exit 1 fi for HOST in $(seq "$FIRST" "$LAST"); do ip addr replace "${PREFIX}.${HOST}/32" dev "$IFACE" done
Adresler bilinçli olarak /32 ön ekini kullanır. Birincil arayüz, kendi alt ağı için rotaya zaten sahiptir, bu nedenle her ikincil adres yalnızca yerel bir ana bilgisayar rotasına ihtiyaç duyar. Bir /32 ön eki, çekirdeğin yinelenen bir alt ağ rotası eklemesini önler ve yönlendirme tablosunu temiz tutar. Betik, zaten var olan adreslerde hata vermeden güvenle yeniden çalıştırılabilmesi için ip addr add yerine ip addr replace kullanır.
Betiği çalıştırılabilir yapın. Bu kılavuzun önceki sürümünde eksik olan kısım olan tam yola dikkat edin:
chmod +x /usr/local/sbin/extra-ips.sh
Adresleri bir systemd hizmetiyle kalıcı hale getirme
Betiği elle çalıştırmak, adresleri yalnızca bir sonraki yeniden başlatmaya kadar ekler. Bunları önyükleme sırasında 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 daha 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ğıdakini 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 şimdi ve her önyüklemede çalışacak şekilde etkinleştirin:
systemctl daemon-reload systemctl enable --now extra-ips.service
Hizmetin doğru şekilde başladığını onaylayın:
systemctl status --no-pager extra-ips.service
Bu betik tarafından eklenen adresler, netplan veya systemd-networkd yapılandırmasının bir parçası değildir. Daha sonraki bir netplan apply, networkctl reconfigure veya herhangi bir ağ yeniden başlatması bunları kaldırabilir. Bir sonraki yeniden başlatmada, veya systemctl restart extra-ips.service çalıştırırsanız hemen geri gelirler. Adreslerin bir ağ yeniden yapılandırmasında da yerinde 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ı daha sonra yönetilen adresler olarak ele alır, böylece bir yeniden yapılandırmadan sonra da kalıcı kalırlar. Bu, küçük, sabit bir liste için uygundur. Geniş bir aralık için, yukarıdaki systemd hizmeti daha iyi ölçeklenir, çünkü netplan her adres için bir satır gerektirir.
Birden fazla netplan dosyası aynı arayüzü tanımladığında, ayarları beklenmedik şekillerde geçersiz kılabilir veya birleşebilir, bu da birincil adresinizi kaldırabilir ve erişiminizi kesebilir. Mevcut yapılandırma dosyasını düzenlemek, aynı arayüz için başka bir dosya oluşturmaktan genellikle daha güvenlidir. Arayüzünüzü zaten 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 için dhcp4, birincil adres, ağ geçidi ve ad sunucuları gibi mevcut tüm ayarları 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
Son netplan sürümleri, dosya başka 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. Bu komut yapılandırmayı uygular ve siz onaylamazsanız 120 saniye sonra otomatik olarak geri alır; bu da uzaktan erişiminizi kaybetmenizi önler:
netplan try
Bağlantı ayakta kalırsa ve her şey doğru görünüyorsa, istendiğinde onaylayın, ardından yapılandırmayı kalıcı olarak uygulayın:
netplan apply
Sonucun doğrulanması
Şu anda arayüze 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üklenmelidir.
Adreslerin kaldırılması
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 önyüklemede tüm aralığın 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 çalıştırın.
Sorun giderme
Hizmet başlamıyorsa, 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 showkomutundan alınan gerçek adla eşleşiyor; - adresler size ayrılan bloğa ait;
- betik çalıştırılabilir durumda.
Yanlışlıkla /32 yerine /24 ön eki kullandıysanız, yönlendirme tablosunda bu durum birkaç yinelenen alt ağ rotası olarak görünür. Şu komutla kontrol edin:
ip route
Bu kılavuz IPv4'e odaklanmaktadır. IPv4'te olduğu gibi, ikincil IPv6 adresleri normalde aynı ip addr replace komutu kullanılarak /128 ön ekiyle ana bilgisayar adresleri olarak eklenir, örneğin ip addr replace 2001:db8::10/128 dev ens3.