Bring your own IP
BYOIP su AWS: porta i tuoi indirizzi IPv4 su EC2
Dimostri di controllare il range con un certificato nel suo record del registro e una ROA che indica gli ASN di AWS, lo inserisci con il provisioning in un address pool e allochi da esso indirizzi Elastic IP come faresti da quelli di AWS. Agli indirizzi che porti non si applica l’addebito orario per gli IPv4 pubblici.
Questa guida tratta EC2 tramite la AWS CLI. Lo stesso range può andare anche su AWS Global Accelerator, che ha un suo processo, oppure passare per VPC IP Address Manager (IPAM), che aggiunge un modo basato sul DNS per dimostrare il controllo e l’opzione di annunciare dal tuo ASN.
Cosa accetta AWS
Dalla documentazione di AWS, il giorno in cui l’abbiamo verificata:
- Dimensione. Il range IPv4 più specifico che puoi portare è un /24.
- Registro. L’ARIN, il RIPE NCC o l’APNIC, e registrato a un’azienda o a un’istituzione, mai a una persona.
- Storia. AWS può controllare la reputazione del range e rifiutarne uno con indirizzi dai precedenti negativi (tenere pulito un blocco).
- Lo spazio legacy è accettato ma richiede comunque una ROA.
- Una Region alla volta per range, e cinque range per Region per impostazione predefinita; il supporto AWS può aumentarli.
- Dove. Ogni Region commerciale tranne le Region cinesi, e un elenco di Local Zones.
- Non toccare il routing registry. AWS aggiorna RADb da sé, e una modifica manuale che include l’ASN di AWS fa fallire il provisioning.
Prima di iniziare
Una ROA per gli ASN di AWS. Deve autorizzare AS16509 e AS14618, e qualsiasi ASN che oggi annuncia il range, con la lunghezza massima pari alla dimensione del range che porti. Nelle AWS GovCloud (US) Regions la ROA indica invece AS8987, e nell’AWS European Sovereign Cloud AS16509 e AS214101; tramite IPAM, impostala a /24 così da poter dividere il blocco. Se sposti il range dalla tua rete, crea prima la ROA per il tuo ASN attuale, così nulla di ciò che funziona oggi diventa non valido (RPKI e ROA). Una ROA può impiegare fino a 24 ore per arrivare ad AWS.
Una coppia di chiavi e un certificato, creati con OpenSSL 1.0.2 o successivo:
openssl genpkey -aes256 -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private-key.pem
openssl req -new -x509 -key private-key.pem -days 365 | tr -d "\n" > certificate.pemIl certificato nel record del registro, su una sola riga, compresi i marcatori BEGIN ed END. Dove va dipende dal registro, e il campo conta:
| Registro | Dove va il certificato |
|---|---|
| RIPE NCC | Una nuova riga descr nell’oggetto inetnum. Non remarks |
| ARIN | Public Comments della rete, non dell’organizzazione |
| APNIC | remarks nell’oggetto inetnum |
Puoi rimuovere il certificato una volta terminato il provisioning.
Passo per passo
01Firma il messaggio di autorizzazione. Il messaggio indica il tuo account, il range e una data di scadenza:
text_message="1|aws|123456789012|203.0.113.0/24|20261231|SHA256|RSAPSS"
signed_message=$(echo -n $text_message | openssl dgst -sha256 -sigopt rsa_padding_mode:pss -sigopt rsa_pss_saltlen:-1 -sign private-key.pem -keyform PEM | openssl base64 | tr -- '+=/' '-_~' | tr -d "\n")02Esegui il provisioning del range nella Region in cui lo userai:
aws ec2 provision-byoip-cidr --cidr 203.0.113.0/24 \
--cidr-authorization-context Message="$text_message",Signature="$signed_message" \
--region eu-central-103Attendi. Lo stato passa da pending-provision a provisioned. AWS dice che la maggior parte dei range termina entro due ore e alcuni richiedono fino a una settimana; aws ec2 describe-byoip-cidrs --max-results 5 --region eu-central-1 mostra a che punto è.
04Prepara, poi passa. Per tenere breve il disservizio, alloca indirizzi Elastic IP dal nuovo pool e collegali prima che il range venga annunciato. aws ec2 describe-public-ipv4-pools dà l’ID del pool, e aws ec2 allocate-address --public-ipv4-pool <pool-id> ne prende un indirizzo.
05Annuncia. Smetti di annunciare il range altrove, poi:
aws ec2 advertise-byoip-cidr --cidr 203.0.113.0/24 --region eu-central-1AWS consiglia di ritirare prima il range dagli altri punti; finché qualcun altro lo annuncia, AWS non può promettere che il traffico destinato a esso raggiunga la sua rete. Devi annunciare esattamente il range di cui hai fatto il provisioning, mai una sua parte.
06Verifica dall’esterno. whois -r -h whois.ripe.net 203.0.113.0/24 | grep descr dovrebbe mostrare il certificato, e il validatore di RIPEstat dovrebbe dare il range come valido per AS16509: curl "https://stat.ripe.net/data/rpki-validation/data.json?resource=16509&prefix=203.0.113.0/24".
Errori che costano una giornata
- Il certificato nel campo sbagliato. Per il RIPE NCC, AWS legge
descred esplicitamente nonremarks. Azure vuole il contrario, quindi un blocco spostato tra i due cloud richiede di modificare il record. - Una ROA con la lunghezza massima sbagliata. AWS richiede che sia pari alla dimensione del range che porti, oppure /24 tramite IPAM. Una lunghezza massima più specifica del range che porti espone a hijack di sotto-prefissi, e AWS si riserva il diritto di smettere di annunciare un range le cui ROA non seguono le sue regole.
- Annunciare una parte del range. AWS annuncia esattamente ciò di cui hai fatto il provisioning. Per usare un range più piccolo, fai il deprovisioning e ripeti il provisioning.
- Due reti che annunciano insieme. Il traffico si divide tra le due, e AWS non farà troubleshooting.
Il tuo ASN
Tramite VPC IPAM, AWS può annunciare il tuo range dal tuo ASN invece che dal proprio. Aggiungi lo stesso certificato al record del registro del tuo ASN (per il RIPE NCC, come riga descr nell’aut-num), crei una seconda ROA che indica il tuo ASN, e AWS consiglia un oggetto ASPA che indichi AS16509 e AS14618 come tuoi provider; senza di esso, le route che AWS inoltra per te falliscono la validazione ASPA. Puoi riportare l’origin sull’ASN di AWS in qualsiasi momento, e sul tuo al massimo una volta all’ora.
Se il blocco è in affitto
Lo spazio in affitto funziona, purché il registro lo mostri detenuto da un’organizzazione. Il titolare si occupa della parte del registro: il certificato nel record inetnum, che solo il maintainer del titolare può modificare, e la ROA per AS16509 e AS14618. Il resto lo fai tu dal tuo account AWS.
Dove entra RTM Networks
Affittiamo /24 e blocchi più grandi dal nostro spazio di indirizzi RIPE NCC, e vendiamo blocchi nelle regioni del RIPE NCC, dell’ARIN e dell’APNIC. Per lo spazio affittato da noi aggiungiamo il tuo certificato AWS al record del registro e creiamo la ROA per gli ASN di AWS, così il provisioning è l’unico passaggio che resta a te (affitto di indirizzi IPv4). Se ti servono meno di 256 indirizzi su un’istanza EC2, possiamo invece consegnarli tramite un tunnel (tunnel GRE e WireGuard). Come si somma l’addebito orario per gli IPv4, e quando conviene portare i propri: il costo reale degli IPv4 nel cloud. Altri provider: guide BYOIP.
Contatti
Porti i tuoi IP su AWS?
Indicaci il provider, la regione e quanti indirizzi ti servono. Affittiamo /24 e blocchi più grandi con il lavoro sul registro già fatto per il tuo provider, vendiamo blocchi in piena proprietà, o consegniamo meno indirizzi tramite un tunnel. Di solito rispondiamo entro 1-3 ore lavorative.

