Kako registrirati velik broj IP adresa na Debianu/Ubuntuu
Jednom poslužitelju često je potrebno više od jedne IP adrese. Ovaj vodič opisuje dva načina dodjeljivanja više IPv4 adresa jednom mrežnom sučelju na sustavima Debian i Ubuntu:
- automatski, pomoću shell skripte i systemd usluge, preporučeno za velike raspone;
- izravno u netplanu, preporučeno kada adrese moraju preživjeti i ponovnu konfiguraciju mreže, a ne samo ponovno pokretanje.
Obje metode čine konfiguraciju trajnom kroz ponovna pokretanja. Pročitajte napomenu na kraju svake metode kako biste odabrali onu koja odgovara vašem slučaju.
Kada vam je potrebno više IP adresa
Nekoliko uobičajenih radnih opterećenja na jednom poslužitelju zahtijeva više od jedne javne adrese:
- Poslužitelji e-pošte koji koriste zasebne adrese i PTR zapise za odvajanje reputacije slanja različitih domena.
- Web poslužitelji kojima su potrebne namjenske adrese za naslijeđene aplikacije, izolaciju klijenata ili određena pravila vatrozida.
- Proxy i VPN infrastruktura, gdje je svaka proxy instanca ili svaka VPN krajnja točka vezana uz vlastitu javnu adresu.
- Spremnici ili virtualni strojevi koji koriste usmjerene IP adrese.
INTROSERV VPS paketi prema zadanim postavkama uključuju dvije IPv4 adrese i IPv6 podmrežu /112. Dodatne IPv4 adrese dostupne su na mnogim lokacijama. Provjerite dostupnost za svoju regiju u konfiguratoru narudžbe.
Prije nego što počnete
Potreban vam je root pristup i naziv sučelja koje će nositi dodatne adrese. Moderne verzije sustava Debian i Ubuntu više ne koriste stari naziv eth0, stoga to nemojte pretpostavljati. Ispišite sučelja zajedno s njihovim trenutnim adresama i utvrdite ono koje već ima vašu primarnu adresu:
ip -br addr show
Izlaz prikazuje unose poput ens3, enp1s0 ili eth0 pokraj adresa koje su na njima već konfigurirane. Sučelje koje već nosi vaš glavni IP ono je koje treba koristiti u koracima u nastavku. Primjeri ovdje koriste ens3.
Upozorenje: Ovi koraci mijenjaju mrežnu konfiguraciju na poslužitelju kojem najvjerojatnije pristupate putem SSH-a. Pogreška vam može prekinuti vlastiti pristup. Ako je moguće, zadržite drugi put ulaska, poput konzole davatelja ili IP-KVM-a, i dajte prednost prikazanim sigurnim opcijama primjene 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 predstavljaju rezervirana mjesta:
#!/bin/bash set -euo pipefail # Sucelje koje ce nositi dodatne adrese. IFACE="ens3" # Zajednicki prefiks te prva i zadnja vrijednost okteta hosta. # Zamijenite ih blokom koji vam je dodijeljen. PREFIX="203.0.113" FIRST=10 LAST=60 # Zaustavi rano s jasnom porukom ako je naziv sucelja neispravan. if ! ip link show "$IFACE" >/dev/null 2>&1; then echo "Sucelje $IFACE nije pronadjeno. Provjerite naziv naredbom: ip -br addr show" >&2 exit 1 fi for HOST in $(seq "$FIRST" "$LAST"); do ip addr replace "${PREFIX}.${HOST}/32" dev "$IFACE" done
Info: Adrese namjerno koriste prefiks /32. Primarno sučelje već posjeduje rutu za svoju podmrežu, pa svakoj sekundarnoj adresi treba samo lokalna ruta hosta. Prefiks /32 sprječava jezgru da doda dvostruku rutu podmreže i održava tablicu usmjeravanja čistom. Skripta koristiip addr replaceumjestoip addr addkako bi se mogla sigurno ponovno pokrenuti bez prijavljivanja pogreške za adrese koje već postoje.
Učinite skriptu izvršnom. Obratite pozornost na potpunu putanju, koja je bila dio koji je nedostajao u prethodnoj verziji ovog vodiča:
chmod +x /usr/local/sbin/extra-ips.sh
Trajno zadržavanje adresa pomoću systemd usluge
Ručno pokretanje skripte dodaje adrese samo do sljedećeg ponovnog pokretanja. Da biste ih automatski primijenili pri pokretanju, izradite systemd uslugu koja pokreće skriptu tijekom pokretanja sustava. Ova metoda radi jednako bez obzira na to koristi li sustav netplan, systemd-networkd ili stariji ifupdown slog.
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:
systemctl daemon-reload systemctl enable --now extra-ips.service
Potvrdite da se usluga ispravno pokrenula:
systemctl status --no-pager extra-ips.service
Upozorenje: Adrese koje dodaje ova skripta nisu dio netplan ili systemd-networkd konfiguracije. Kasnijinetplan apply,networkctl reconfigureili bilo koje ponovno pokretanje mreže može ih ukloniti. Vraćaju se pri sljedećem ponovnom pokretanju ili odmah ako pokrenetesystemctl restart extra-ips.service. Ako adrese moraju ostati i nakon ponovne konfiguracije mreže, umjesto toga koristite netplan metodu opisanu u nastavku.
Alternativa: definiranje adresa u netplanu
Na sustavu Ubuntu, gdje je netplan zadano rješenje, adrese se mogu deklarirati izravno u netplanu. Mrežni slog ih tada tretira kao upravljane adrese, pa preživljavaju ponovnu konfiguraciju. Ovo je prikladno za mali, fiksni popis. Za veliki raspon gore navedena 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 nadjačati ili spojiti na neočekivane načine, što može odbaciti vašu primarnu adresu i prekinuti pristup. Uređivanje postojeće konfiguracijske datoteke obično je sigurnije od izrade 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, kao što su dhcp4, primarna adresa, pristupnik i poslužitelji naziva. Dodajte dodatne adrese pod popis 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 je datoteka čitljiva drugim korisnicima. Ograničite dopuštenja kako biste uklonili to upozorenje:
chmod 600 /etc/netplan/50-cloud-init.yaml
Isprobajte promjenu naredbom netplan try. Ona primjenjuje konfiguraciju i automatski je vraća 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 se to zatraži, a zatim trajno primijenite konfiguraciju:
netplan apply
Provjera rezultata
Ispišite adrese trenutno vezane uz sučelje i potvrdite da su nove 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 dodjeljivanje cijelog raspona pri pokretanju 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 netplan datoteci, zatim pokrenite netplan apply.
Rješavanje problema
Ako se usluga ne pokrene, provjerite njezino stanje i zapisnike:
systemctl status --no-pager extra-ips.service journalctl -u extra-ips.service
Potvrdite sljedeće:
- naziv sučelja u skripti odgovara stvarnom nazivu iz
ip -br addr show; - adrese pripadaju bloku koji vam je dodijeljen;
- skripta je izvršna.
Ako ste greškom koristili prefiks /24 umjesto /32, tablica usmjeravanja prikazuje simptom u obliku nekoliko dvostrukih ruta podmreže. Provjerite je naredbom:
ip route
Ovaj se vodič usredotočuje na IPv4. Kao i kod IPv4, sekundarne IPv6 adrese obično se dodaju kao adrese hosta s prefiksom /128, istom naredbom ip addr replace, na primjer ip addr replace 2001:db8::10/128 dev ens3.