Kako registrirati velik broj IP adresa na Debianu/Ubuntuu
Jednom poslužitelju često je potrebno više od jedne IP adrese. Ovaj vodič objašnjava dva načina dodjele više IPv4 adresa jednom mrežnom sučelju na Debianu i Ubuntuu:
- automatski, pomoću shell skripte i systemd usluge — preporučuje se za velike raspone;
- izravno u netplanu — preporučuje se kada adrese moraju preživjeti i rekonfiguraciju mreže i ponovno pokretanje.
Obje metode čine konfiguraciju trajnom nakon ponovnog pokretanja. Pročitajte napomenu na kraju svake metode kako biste odabrali onu koja odgovara vašem slučaju.
Kada su vam potrebne višestruke IP adrese
Nekoliko uobičajenih radnih opterećenja na jednom poslužitelju zahtijeva više od jedne javne adrese:
- Poštanski poslužitelji koji koriste zasebne adrese i PTR zapise za izolaciju reputacije slanja različitih domena.
- Web poslužitelji koji zahtijevaju namjenske adrese za zastarjele aplikacije, izolaciju klijenata ili specifične politike vatrozida.
- Proxy i VPN infrastruktura, gdje je svaka instanca proxyja ili VPN krajnja točka vezana za vlastitu javnu adresu.
- Kontejneri ili virtualni strojevi koji koriste usmjerene IP adrese.
VPS planovi INTROSERV-a prema zadanim postavkama uključuju dvije IPv4 adrese i /112 IPv6 podmrežu. Dodatne IPv4 adrese dostupne su na mnogim lokacijama. Provjerite dostupnost za odabranu regiju u konfiguratoru narudžbe.
Prije nego počnete
Trebate root pristup i naziv sučelja koje će nositi dodatne adrese. Moderna izdanja Debiana i Ubuntua više ne koriste stari naziv eth0, stoga to nemojte pretpostavljati. Ispišite popis sučelja zajedno s njihovim trenutnim adresama i identificirajte ono koje već sadrži vašu primarnu adresu:
ip -br addr show
Izlaz prikazuje unose poput ens3, enp1s0 ili eth0 uz adrese koje su već na njima konfigurirane. Sučelje koje već nosi vašu glavnu IP adresu ono je koje treba koristiti u sljedećim koracima. Primjeri ovdje koriste ens3.
Ovi koraci mijenjaju mrežnu konfiguraciju na poslužitelju kojem najvjerojatnije pristupate putem SSH-a. Pogreška može prekinuti vaš vlastiti pristup. Imajte pri ruci drugi način pristupa ako ga imate, poput konzole pružatelja usluge ili IP-KVM-a, i dajte prednost sigurnim opcijama primjene prikazanima u nastavku.
Izrada skripte za adrese
Kratka skripta dodaje raspon adresa u jednom prolazu. Izradite je u /usr/local/sbin:
nano /usr/local/sbin/extra-ips.sh
Zalijepite sljedeću skriptu. Zamijenite naziv sučelja, prefiks i raspon blokom koji vam je dodijeljen. Adrese u nastavku koriste dokumentacijski raspon iz RFC 5737 i služe samo kao rezervirani znakovi:
#!/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
Adrese namjerno koriste prefiks /32. Primarno sučelje već posjeduje rutu za svoju podmrežu, pa je svakoj sekundarnoj adresi potrebna samo lokalna ruta hosta. Prefiks /32 sprječava jezgru da doda dupliciranu rutu podmreže i održava tablicu usmjeravanja urednom. Skripta koristi ip addr replace umjesto ip addr add kako bi se mogla sigurno ponovno pokrenuti bez pogreške na adresama koje već postoje.
Omogućite izvršavanje skripte. Obratite pozornost na potpunu putanju, što je bio dio koji je nedostajao u prethodnoj verziji ovog vodiča:
chmod +x /usr/local/sbin/extra-ips.sh
Postizanje trajnosti adresa pomoću systemd usluge
Ručno pokretanje skripte dodaje adrese samo do sljedećeg ponovnog pokretanja. Da biste ih automatski primijenili prilikom pokretanja sustava, izradite systemd uslugu koja pokreće skriptu tijekom podizanja sustava. Ova metoda funkcionira jednako bez obzira koristi li sustav netplan, systemd-networkd ili stariji ifupdown skup alata.
Izradite datoteku jedinice:
nano /etc/systemd/system/extra-ips.service
Dodajte sljedeće:
[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
Ponovno učitajte systemd i omogućite uslugu kako bi se pokrenula sada i pri svakom pokretanju sustava:
systemctl daemon-reload systemctl enable --now extra-ips.service
Potvrdite da se usluga ispravno pokrenula:
systemctl status --no-pager extra-ips.service
Adrese koje je dodala ova skripta nisu dio konfiguracije netplana ili systemd-networkda. Kasniji netplan apply, networkctl reconfigure ili bilo koje ponovno pokretanje mreže mogu ih ukloniti. Vraćaju se pri sljedećem ponovnom pokretanju, ili odmah ako pokrenete systemctl restart extra-ips.service. Ako adrese moraju ostati na mjestu i tijekom rekonfiguracije mreže, umjesto toga koristite metodu s netplanom u nastavku.
Alternativa: definiranje adresa u netplanu
Na Ubuntuu, gdje je netplan zadan sustav, adrese se mogu deklarirati izravno u netplanu. Mrežni skup alata tada ih tretira kao upravljane adrese, pa preživljavaju rekonfiguraciju. To odgovara malom, fiksnom popisu. Za veliki raspon gore opisana systemd usluga bolje se skalira, jer netplan zahtijeva jedan redak po adresi.
Kada više netplan datoteka definira isto sučelje, njihove se postavke mogu neočekivano nadjačati ili spojiti, što može ukloniti vašu primarnu adresu i prekinuti pristup. Uređivanje postojeće konfiguracijske datoteke obično je sigurnije nego izrada druge datoteke za isto sučelje. Otvorite datoteku koja već konfigurira vaše sučelje, obično /etc/netplan/50-cloud-init.yaml ili /etc/netplan/00-installer-config.yaml:
ls /etc/netplan/ nano /etc/netplan/50-cloud-init.yaml
Zadržite sve postojeće postavke sučelja, poput dhcp4, primarne adrese, pristupnika i DNS poslužitelja. Dodajte dodatne adrese unutar popisa addresses na istom sučelju. Primjer u nastavku zadržava DHCP za primarnu adresu i dodaje tri sekundarne adrese:
network: version: 2 ethernets: ens3: dhcp4: true addresses: - 203.0.113.10/32 - 203.0.113.11/32 - 203.0.113.12/32
Novije verzije netplana upozoravaju ako datoteku mogu čitati drugi korisnici. Ograničite dozvole kako biste uklonili to upozorenje:
chmod 600 /etc/netplan/50-cloud-init.yaml
Testirajte promjenu pomoću netplan try. Ova naredba primjenjuje konfiguraciju i automatski je vraća na prethodno stanje nakon 120 sekundi ako je ne potvrdite, što vas štiti od gubitka udaljenog pristupa:
netplan try
Ako veza ostane aktivna i sve izgleda ispravno, potvrdite kada budete upitani, a zatim trajno primijenite konfiguraciju:
netplan apply
Provjera rezultata
Ispišite popis adresa trenutno vezanih uz sučelje i potvrdite da su nove adrese prisutne:
ip -br addr show ens3
Dodatne adrese sada bi se trebale pojaviti u izlazu i automatski će se vraćati nakon svakog ponovnog pokretanja.
Uklanjanje adresa
Za uklanjanje jedne adrese, izbrišite je sa sučelja:
ip addr del 203.0.113.10/32 dev ens3
Ako ste koristili skriptu i uslugu, zaustavite dodjelu cijelog raspona pri podizanju sustava onemogućavanjem i uklanjanjem usluge:
systemctl disable --now extra-ips.service rm /etc/systemd/system/extra-ips.service systemctl daemon-reload
Ako ste koristili netplan, uklonite dodatne retke s popisa addresses u datoteci netplana, a zatim pokrenite netplan apply.
Rješavanje problema
Ako se usluga ne pokreće, provjerite njezino stanje i zapisnike:
systemctl status --no-pager extra-ips.service journalctl -u extra-ips.service
Provjerite sljedeće:
- naziv sučelja u skripti podudara se sa stvarnim nazivom iz
ip -br addr show; - adrese pripadaju bloku koji vam je dodijeljen;
- skripta je izvršna.
Ako ste pogreškom koristili prefiks /24 umjesto /32, u tablici usmjeravanja to se očituje kao nekoliko dupliciranih ruta podmreže. Provjerite to naredbom:
ip route
Ovaj vodič usredotočen je na IPv4. Kao i kod IPv4, sekundarne IPv6 adrese obično se dodaju kao adrese hosta s prefiksom /128, koristeći istu naredbu ip addr replace, na primjer ip addr replace 2001:db8::10/128 dev ens3.