Kako registrirati veliko število naslovov IP z Debianom/Ubuntujem
En sam strežnik pogosto potrebuje več kot en naslov IP. Ta vodnik opisuje dva načina za dodelitev več naslovov IPv4 enemu omrežnemu vmesniku v sistemih Debian in Ubuntu:
- samodejno, z lupinsko skripto in storitvijo systemd, priporočeno za velike obsege;
- neposredno v netplan, priporočeno, kadar morajo naslovi preživeti tudi ponovno konfiguracijo omrežja, ne le ponovnega zagona.
Oba načina naredita konfiguracijo trajno čez ponovne zagone. Preberite opombo na koncu vsakega načina, da izberete tistega, ki ustreza vašemu primeru.
Kdaj potrebujete več naslovov IP
Več pogostih opravil na enem strežniku zahteva več kot en javni naslov:
- Poštni strežniki, ki uporabljajo ločene naslove in zapise PTR za ločevanje ugleda pošiljanja različnih domen.
- Spletni strežniki, ki potrebujejo namenske naslove za starejše aplikacije, ločevanje strank ali posebna pravila požarnega zidu.
- Infrastruktura proxy in VPN, kjer je vsak primerek proxy ali vsaka končna točka VPN vezana na svoj javni naslov.
- Vsebniki ali navidezni stroji, ki uporabljajo usmerjene naslove IP.
Paketi VPS podjetja INTROSERV privzeto vključujejo dva naslova IPv4 in podomrežje IPv6 /112. Dodatni naslovi IPv4 so na voljo na številnih lokacijah. Razpoložljivost za vašo regijo preverite v konfiguratorju naročila.
Preden začnete
Potrebujete dostop root in ime vmesnika, ki bo nosil dodatne naslove. Sodobne različice sistemov Debian in Ubuntu ne uporabljajo več starega imena eth0, zato tega ne predpostavljajte. Izpišite vmesnike skupaj z njihovimi trenutnimi naslovi in določite tistega, ki že ima vaš primarni naslov:
ip -br addr show
Izpis prikaže vnose, kot so ens3, enp1s0 ali eth0, poleg naslovov, ki so na njih že nastavljeni. Vmesnik, ki že nosi vaš glavni IP, je tisti, ki ga uporabite v korakih spodaj. Primeri tukaj uporabljajo ens3.
Opozorilo: Ti koraki spremenijo omrežno konfiguracijo na strežniku, do katerega najverjetneje dostopate prek SSH. Napaka lahko prekine vaš lastni dostop. Če je mogoče, ohranite drugo pot vstopa, na primer konzolo ponudnika ali IP-KVM, in raje uporabite spodaj prikazane možnosti varne uveljavitve.
Ustvarjanje skripte za naslove
Kratka skripta doda obseg naslovov v enem prehodu. Ustvarite jo v /usr/local/sbin:
nano /usr/local/sbin/extra-ips.sh
Prilepite naslednjo skripto. Ime vmesnika, predpono in obseg zamenjajte z blokom, ki vam je dodeljen. Naslovi spodaj uporabljajo dokumentacijski obseg iz RFC 5737 in so ograde:
#!/bin/bash set -euo pipefail # Vmesnik, ki bo nosil dodatne naslove. IFACE="ens3" # Skupna predpona ter prva in zadnja vrednost gostiteljskega okteta. # Zamenjajte jih z blokom, ki vam je dodeljen. PREFIX="203.0.113" FIRST=10 LAST=60 # Zgodaj se ustavi z jasnim sporocilom, ce je ime vmesnika napacno. if ! ip link show "$IFACE" >/dev/null 2>&1; then echo "Vmesnik $IFACE ni najden. Preverite ime z ukazom: 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: Naslovi namenoma uporabljajo predpono /32. Primarni vmesnik že ima usmeritev za svoje podomrežje, zato vsak sekundarni naslov potrebuje le lokalno gostiteljsko usmeritev. Predpona /32 prepreči, da bi jedro dodalo podvojeno usmeritev podomrežja, in ohranja usmerjevalno tabelo čisto. Skripta uporabljaip addr replacenamestoip addr add, da jo je mogoče varno znova zagnati, ne da bi javila napako za naslove, ki že obstajajo.
Naredite skripto izvršljivo. Bodite pozorni na celotno pot, ki je manjkala v prejšnji različici tega vodnika:
chmod +x /usr/local/sbin/extra-ips.sh
Trajna ohranitev naslovov s storitvijo systemd
Ročni zagon skripte doda naslove le do naslednjega ponovnega zagona. Za samodejno uveljavitev ob zagonu ustvarite storitev systemd, ki zažene skripto med zagonom sistema. Ta način deluje enako, ne glede na to, ali sistem uporablja netplan, systemd-networkd ali starejši sklad ifupdown.
Ustvarite datoteko enote:
nano /etc/systemd/system/extra-ips.service
Dodajte naslednje:
[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
Znova naložite systemd in omogočite storitev, da se zažene zdaj in ob vsakem zagonu:
systemctl daemon-reload systemctl enable --now extra-ips.service
Potrdite, da se je storitev pravilno zagnala:
systemctl status --no-pager extra-ips.service
Opozorilo: Naslovi, ki jih doda ta skripta, niso del konfiguracije netplan ali systemd-networkd. Poznejšinetplan apply,networkctl reconfigureali kateri koli ponovni zagon omrežja jih lahko odstrani. Vrnejo se ob naslednjem ponovnem zagonu ali takoj, če zaženetesystemctl restart extra-ips.service. Če morajo naslovi ostati tudi po ponovni konfiguraciji omrežja, raje uporabite spodaj opisani način netplan.
Druga možnost: določitev naslovov v netplan
V sistemu Ubuntu, kjer je netplan privzeta rešitev, je naslove mogoče deklarirati neposredno v netplan. Omrežni sklad jih nato obravnava kot upravljane naslove, zato preživijo ponovno konfiguracijo. To je primerno za majhen, fiksen seznam. Za velik obseg se zgoraj opisana storitev systemd bolje prilagaja, saj netplan zahteva eno vrstico na naslov.
Kadar isti vmesnik določa več datotek netplan, se njihove nastavitve lahko prepišejo ali združijo na nepričakovane načine, kar lahko zavrže vaš primarni naslov in prekine dostop. Urejanje obstoječe konfiguracijske datoteke je običajno varnejše kot ustvarjanje še ene datoteke za isti vmesnik. Odprite datoteko, ki že nastavlja vaš vmesnik, običajno /etc/netplan/50-cloud-init.yaml ali /etc/netplan/00-installer-config.yaml:
ls /etc/netplan/ nano /etc/netplan/50-cloud-init.yaml
Ohranite vse obstoječe nastavitve vmesnika, kot so dhcp4, primarni naslov, prehod in imenski strežniki. Dodajte dodatne naslove pod seznam addresses na istem vmesniku. Spodnji primer ohrani DHCP za primarni naslov in doda tri sekundarne naslove:
network: version: 2 ethernets: ens3: dhcp4: true addresses: - 203.0.113.10/32 - 203.0.113.11/32 - 203.0.113.12/32
Novejše različice netplan opozorijo, če je datoteka berljiva za druge uporabnike. Omejite dovoljenja, da odstranite to opozorilo:
chmod 600 /etc/netplan/50-cloud-init.yaml
Spremembo preizkusite z netplan try. Uveljavi konfiguracijo in jo po 120 sekundah samodejno povrne, če je ne potrdite, kar vas zaščiti pred izgubo oddaljenega dostopa:
netplan try
Če povezava ostane vzpostavljena in je vse videti pravilno, ob pozivu potrdite, nato pa konfiguracijo uveljavite trajno:
netplan apply
Preverjanje rezultata
Izpišite naslove, ki so trenutno vezani na vmesnik, in potrdite, da so novi prisotni:
ip -br addr show ens3
Dodatni naslovi bi se zdaj morali pojaviti v izpisu in bodo samodejno obnovljeni po vsakem ponovnem zagonu.
Odstranjevanje naslovov
Za odstranitev enega naslova ga izbrišite z vmesnika:
ip addr del 203.0.113.10/32 dev ens3
Če ste uporabili skripto in storitev, ustavite dodeljevanje celotnega obsega ob zagonu tako, da storitev onemogočite in odstranite:
systemctl disable --now extra-ips.service rm /etc/systemd/system/extra-ips.service systemctl daemon-reload
Če ste uporabili netplan, odstranite dodatne vrstice s seznama addresses v datoteki netplan, nato zaženite netplan apply.
Odpravljanje težav
Če se storitev ne zažene, preverite njeno stanje in dnevnike:
systemctl status --no-pager extra-ips.service journalctl -u extra-ips.service
Potrdite naslednje:
- ime vmesnika v skripti se ujema z dejanskim imenom iz
ip -br addr show; - naslovi pripadajo bloku, ki vam je dodeljen;
- skripta je izvršljiva.
Če ste pomotoma uporabili predpono /24 namesto /32, usmerjevalna tabela pokaže ta simptom kot več podvojenih usmeritev podomrežja. Preverite jo z:
ip route
Ta vodnik se osredotoča na IPv4. Tako kot pri IPv4 se sekundarni naslovi IPv6 običajno dodajo kot gostiteljski naslovi s predpono /128, z istim ukazom ip addr replace, na primer ip addr replace 2001:db8::10/128 dev ens3.