Come registrare un gran numero di indirizzi IP con Debian/Ubuntu | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Come registrare un gran numero di indirizzi IP con Debian/Ubuntu

Un singolo server ha spesso bisogno di più di un indirizzo IP. Questa guida spiega due modi per assegnare più indirizzi IPv4 a una singola interfaccia di rete su Debian e Ubuntu:

  • automaticamente, con uno script shell e un servizio systemd, consigliato per intervalli ampi;
  • direttamente in netplan, consigliato quando gli indirizzi devono sopravvivere sia a una riconfigurazione di rete sia a un riavvio.

Entrambi i metodi rendono la configurazione persistente tra i riavvii. Leggete la nota alla fine di ciascun metodo per scegliere quello più adatto al vostro caso.

Quando servono più indirizzi IP

Diversi carichi di lavoro comuni su un singolo server richiedono più di un indirizzo pubblico:

  • Server di posta che utilizzano indirizzi e record PTR separati per isolare la reputazione di invio di domini diversi.
  • Server web che richiedono indirizzi dedicati per applicazioni legacy, isolamento dei clienti o specifiche policy del firewall.
  • Infrastrutture proxy e VPN, in cui ogni istanza proxy o endpoint VPN è associato a un proprio indirizzo pubblico.
  • Container o macchine virtuali che utilizzano indirizzi IP instradati.

I piani VPS di INTROSERV includono per impostazione predefinita due indirizzi IPv4 e una sottorete IPv6 /112. Indirizzi IPv4 aggiuntivi sono disponibili in molte località. Verificate la disponibilità per la regione scelta nel configuratore d'ordine.

Prima di iniziare

Sono necessari l'accesso root e il nome dell'interfaccia che porterà gli indirizzi aggiuntivi. Le versioni moderne di Debian e Ubuntu non usano più il vecchio nome eth0, quindi non datelo per scontato. Elencate le interfacce insieme ai loro indirizzi attuali e identificate quella che già contiene il vostro indirizzo principale:

ip -br addr show

L'output mostra voci come ens3, enp1s0 o eth0 accanto agli indirizzi già configurati su di esse. L'interfaccia che già porta il vostro IP principale è quella da usare nei passaggi seguenti. Gli esempi qui utilizzano ens3.

Warning

Questi passaggi modificano la configurazione di rete su un server a cui probabilmente accedete via SSH. Un errore può interrompere il vostro stesso accesso. Tenete a disposizione una seconda via di accesso, se ne avete una, come la console del provider o l'IP-KVM, e preferite le opzioni di applicazione sicura mostrate di seguito.

Creazione dello script degli indirizzi

Un breve script aggiunge un intervallo di indirizzi in un unico passaggio. Createlo in /usr/local/sbin:

nano /usr/local/sbin/extra-ips.sh

Incollate lo script seguente. Sostituite il nome dell'interfaccia, il prefisso e l'intervallo con il blocco assegnato a voi. Gli indirizzi seguenti utilizzano l'intervallo di documentazione previsto dalla RFC 5737 e sono solo segnaposto:

#!/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

Info

Gli indirizzi utilizzano intenzionalmente un prefisso /32. L'interfaccia principale possiede già la rotta per la propria sottorete, quindi ogni indirizzo secondario necessita solo di una rotta host locale. Un prefisso /32 impedisce al kernel di aggiungere una rotta di sottorete duplicata e mantiene pulita la tabella di routing. Lo script usa ip addr replace anziché ip addr add, così può essere rieseguito in sicurezza senza fallire su indirizzi già esistenti.

Rendete lo script eseguibile. Notate il percorso completo, che era la parte mancante nella versione precedente di questa guida:

chmod +x /usr/local/sbin/extra-ips.sh

Rendere persistenti gli indirizzi con un servizio systemd

Eseguire lo script manualmente aggiunge gli indirizzi solo fino al riavvio successivo. Per applicarli automaticamente all'avvio, create un servizio systemd che esegua lo script durante il boot. Questo metodo funziona allo stesso modo indipendentemente dal fatto che il sistema utilizzi netplan, systemd-networkd o il più vecchio stack ifupdown.

Create il file unit:

nano /etc/systemd/system/extra-ips.service

Aggiungete quanto segue:

[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

Ricaricate systemd e abilitate il servizio in modo che venga eseguito subito e a ogni avvio:

systemctl daemon-reload systemctl enable --now extra-ips.service

Verificate che il servizio si sia avviato correttamente:

systemctl status --no-pager extra-ips.service

Warning

Gli indirizzi aggiunti da questo script non fanno parte della configurazione di netplan o di systemd-networkd. Un successivo netplan apply, un networkctl reconfigure, o qualsiasi riavvio della rete può rimuoverli. Tornano al riavvio successivo, oppure immediatamente se eseguite systemctl restart extra-ips.service. Se gli indirizzi devono restare al loro posto anche attraverso una riconfigurazione di rete, utilizzate invece il metodo netplan descritto di seguito.

Alternativa: definire gli indirizzi in netplan

Su Ubuntu, dove netplan è il sistema predefinito, gli indirizzi possono essere dichiarati direttamente in netplan. Lo stack di rete li tratta quindi come indirizzi gestiti, quindi sopravvivono a una riconfigurazione. Questo è adatto a un elenco piccolo e fisso. Per un intervallo ampio, il servizio systemd descritto sopra scala meglio, poiché netplan richiede una riga per ogni indirizzo.

Quando più file netplan definiscono la stessa interfaccia, le loro impostazioni possono sovrapporsi o unirsi in modo imprevisto, il che può eliminare il vostro indirizzo principale e interrompere l'accesso. Modificare il file di configurazione esistente è generalmente più sicuro rispetto a creare un altro file per la stessa interfaccia. Aprite il file che già configura la vostra interfaccia, solitamente /etc/netplan/50-cloud-init.yaml o /etc/netplan/00-installer-config.yaml:

ls /etc/netplan/ nano /etc/netplan/50-cloud-init.yaml

Mantenete tutte le impostazioni esistenti dell'interfaccia, come dhcp4, l'indirizzo principale, il gateway e i nameserver. Aggiungete gli indirizzi extra sotto un elenco addresses sulla stessa interfaccia. L'esempio seguente mantiene il DHCP per l'indirizzo principale e aggiunge tre indirizzi secondari:

network: version: 2 ethernets: ens3: dhcp4: true addresses: - 203.0.113.10/32 - 203.0.113.11/32 - 203.0.113.12/32

Le versioni recenti di netplan avvisano se il file è leggibile da altri utenti. Limitate i permessi per eliminare questo avviso:

chmod 600 /etc/netplan/50-cloud-init.yaml

Testate la modifica con netplan try. Questo comando applica la configurazione e la annulla automaticamente dopo 120 secondi a meno che non la confermiate, proteggendovi dalla perdita dell'accesso remoto:

netplan try

Se la connessione rimane attiva e tutto sembra corretto, confermate quando richiesto, quindi applicate la configurazione in modo permanente:

netplan apply

Verifica del risultato

Elencate gli indirizzi attualmente associati all'interfaccia e confermate che quelli nuovi siano presenti:

ip -br addr show ens3

Gli indirizzi aggiuntivi dovrebbero ora comparire nell'output e verranno ripristinati automaticamente dopo ogni riavvio.

Rimozione degli indirizzi

Per rimuovere un singolo indirizzo, eliminatelo dall'interfaccia:

ip addr del 203.0.113.10/32 dev ens3

Se avete usato lo script e il servizio, interrompete l'assegnazione dell'intero intervallo all'avvio disabilitando e rimuovendo il servizio:

systemctl disable --now extra-ips.service rm /etc/systemd/system/extra-ips.service systemctl daemon-reload

Se avete usato netplan, rimuovete le righe aggiuntive dall'elenco addresses nel file netplan, quindi eseguite netplan apply.

Risoluzione dei problemi

Se il servizio non si avvia, controllatene lo stato e i log:

systemctl status --no-pager extra-ips.service journalctl -u extra-ips.service

Verificate quanto segue:

  • il nome dell'interfaccia nello script corrisponde al nome reale ottenuto con ip -br addr show;
  • gli indirizzi appartengono al blocco assegnato a voi;
  • lo script è eseguibile.

Se per errore avete usato un prefisso /24 invece di /32, la tabella di routing mostra il sintomo come diverse rotte di sottorete duplicate. Verificatelo con:

ip route

Questa guida si concentra su IPv4. Come per IPv4, gli indirizzi IPv6 secondari vengono normalmente aggiunti come indirizzi host con un prefisso /128, usando lo stesso comando ip addr replace, ad esempio ip addr replace 2001:db8::10/128 dev ens3.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA