Automatiseringsworkflows

IP-adressen beheren via de API

Zoek een IP-blok en vrije adressen, reserveer en wijs adressen toe aan servers, geef ze vrij, stel reverse DNS in en voeg adresruimte toe of lever die in.

Adressen horen bij IP-blokken. Elke adresaanroep noemt het blok en het adres in het pad: /v1/networking/ip-blocks/{blockId}/addresses/{address}, gevolgd door de actie.

Zie Openbare IP-blokken voor console-instructies en een voorbeeld van een gedeeld blok.

Zoek een blok en zijn vrije adressen

IP-blokken opvragen geeft elk blok op de netwerken van uw organisatie terug, met id, networkId, datacenter, ipVersion, cidr, gateway, subnetMask, prefixLength en het aantal gebruikte en vrije adressen:

curl --request GET \
  --url https://api.serverside.com/v1/networking/ip-blocks \
  --header 'Authorization: Bearer <api-key>'

De eigen blokken van een server staan op zijn internettoegangsnetwerk. Virtuele netwerken van een dienst opvragen toont ze onder prefixes van elk netwerk, met voor elk blok de id en de serveradressen daarin.

IP-blok ophalen geeft één blok met zijn adressen terug:

curl --request GET \
  --url https://api.serverside.com/v1/networking/ip-blocks/{blockId} \
  --header 'Authorization: Bearer <api-key>'

data.addresses bevat één vermelding per geregistreerd adres in het blok, met state (FREE, RESERVED, GATEWAY of ASSIGNED), de reverse-DNS-naam als rdns en onder serviceAssignments de serviceId en name van elke server waaraan het is toegewezen. data.availableAddresses bevat de laagste vrije adressen, maximaal 255. Een blok dat niet meer op een van uw netwerken staat, antwoordt met 404.

Reserveer een adres

IP-adres reserveren houdt een vrij adres buiten de pool zonder het aan een server te geven. De aanroep heeft geen body en antwoordt met 200 en het adres, nu RESERVED:

curl --request POST \
  --url https://api.serverside.com/v1/networking/ip-blocks/{blockId}/addresses/198.51.100.27/reserve \
  --header 'Authorization: Bearer <api-key>'

Reserveren en toewijzen zijn twee verschillende toepassingen van een adres, geen twee stappen. Het toewijzen van een gereserveerd adres wordt geweigerd met 409 IP_ADDRESS_IN_USE; geef het eerst vrij.

Wijs een adres toe aan een server

IP-adres toewijzen koppelt een adres aan een server die met het netwerk van het blok is verbonden. De aanroep accepteert serviceId en de segmentId van de koppeling, te vinden op de netwerkregel bij Virtuele netwerken van een dienst opvragen:

curl --request POST \
  --url https://api.serverside.com/v1/networking/ip-blocks/{blockId}/addresses/198.51.100.26/assign \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "serviceId": "<service-id>",
  "segmentId": "<segment-id>"
}
'

Het antwoord is 200 met het adres, nu ASSIGNED, en de server onder serviceAssignments. Het eerste adres van elke familie dat een server op een netwerk krijgt, wordt daar zijn primaire adres. Een implementatie gebruikt zijn primaire IPv4-adres van een native netwerk.

De openbare adressen van een server worden niet via DHCP verstrekt. Het installatieprogramma schrijft adressen die vóór de implementatie zijn toegewezen als statische configuratie in het besturingssysteem. Een later toegewezen adres moet u handmatig toevoegen met prefixLength en gateway uit IP-blok ophalen.

Geef een adres vrij

IP-adres vrijgeven verwijdert het adres van elke server waaraan het is toegewezen, of beëindigt zijn reservering, en antwoordt met 200 en het adres, nu FREE:

curl --request POST \
  --url https://api.serverside.com/v1/networking/ip-blocks/{blockId}/addresses/198.51.100.26/release \
  --header 'Authorization: Bearer <api-key>'

Vrijgeven verwijdert de reverse-DNS-record van het adres. Als het het primaire serveradres was, neemt het laagste adres van dezelfde familie dat de server nog op dit netwerk heeft zijn plaats in.

Fouten

Reserveren, toewijzen en vrijgeven kunnen deze antwoorden geven:

StatuscodeOorzaak
400VALIDATION_ERRORHet adres in het pad is geen IP-adres, of is IPv4 in een ongeldige schrijfwijze, zoals 198.51.100.026.
404ENTITY_NOT_FOUNDHet blok staat niet op een van uw netwerken, de server is niet op dat segment aan het bloknetwerk gekoppeld, of bij vrijgeven wordt een adres buiten het blok of zonder registratie in het blok genoemd.
409IP_ADDRESS_IN_USEHet adres is al toegewezen of gereserveerd.
409IP_ALLOCATION_RACEEen ander verzoek wijzigde tegelijk hetzelfde adres. Probeer na één seconde opnieuw (Retry-After: 1).
409NETWORK_CHANGE_IN_PROGRESSEen netwerkwijziging voor de server wordt nog toegepast. Probeer opnieuw na Retry-After (10 seconden).
409OPERATION_IN_PROGRESSEr draait een implementatie, wisbewerking of hardwaretest op de server.
422IP_ADDRESS_UNAVAILABLEHet blok heeft geen vrije adressen meer.
422VALIDATION_FAILEDHet adres is geen bruikbaar hostadres in dit blok: buiten de reeks, het netwerk- of broadcastadres, of van de andere IP-versie. De detailcode is IP_ADDRESS_INVALID, op address.
422ENTITY_STATE_INVALIDEen poging om de gateway van het blok vrij te geven.

Stel reverse DNS in

Zie Reverse DNS (rDNS) voor de consoleprocedure en controles van DNS-resolutie.

Reverse DNS instellen schrijft de PTR-record voor een IPv4-adres en antwoordt met 204. De API controleert de naam voordat deze wordt geaccepteerd. Maak daarom eerst de forward-record:

  1. De naam moet een volledig gekwalificeerde domeinnaam zijn. Een afsluitende punt is toegestaan en wordt verwijderd; de naam wordt in kleine letters opgeslagen.
  2. De naam moet een A-record hebben en een van zijn A-records moet dit adres zijn. De controle gebruikt de openbare Cloudflare-resolver 1.1.1.1.
curl --request PUT \
  --url https://api.serverside.com/v1/networking/ip-blocks/{blockId}/addresses/198.51.100.26/rdns \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "rdns": "mail.example.com"
}
'

Stel dit in nadat het adres is toegewezen: toewijzen of reserveren wist een achtergebleven record. Een adres zonder registratie in het blok antwoordt met 404.

codeStatusOorzaak
RDNS_HOSTNAME_INVALID422De naam is leeg of geen volledig gekwalificeerde domeinnaam.
RDNS_A_RECORD_NOT_FOUND422De naam heeft geen A-record.
RDNS_A_RECORD_MISMATCH422De A-records van de naam wijzen ergens anders naartoe.
RDNS_ZONE_UNSUPPORTED422Wij leveren geen reverse DNS voor dit adres.
RDNS_VALIDATION_UNAVAILABLE503De resolver antwoordde niet. Probeer opnieuw na Retry-After (30 seconden).
DNS_PROVIDER_UNAVAILABLE503De DNS-provider antwoordde niet. Probeer opnieuw na Retry-After (30 seconden).
DNS_MANAGEMENT_FAILED502De DNS-provider weigerde de wijziging.

Reverse DNS verwijderen verwijdert de record en antwoordt met 204, ook als er geen record was.

IPv6

IPv6-blokken gebruiken dezelfde aanroepen voor reserveren, toewijzen en vrijgeven. Het adres mag in elke IPv6-vorm worden geschreven, zoals 2001:db8::1a, zonder vierkante haken of zone. Vrije adressen van een IPv6-blok worden niet geteld; availableAddressCount en availableAddresses zijn daarom null. Kies een host in het cidr die niet in addresses staat. Reverse DNS wordt niet geleverd voor IPv6; beide reverse-DNS-aanroepen antwoorden voor een IPv6-adres met 422 RDNS_IPV6_UNSUPPORTED.

Voeg adresruimte toe met een IP-blok

Als een blok vol raakt, voegt een ander blok adresruimte toe aan een openbaar netwerk van uw organisatie, zoals het internettoegangsnetwerk van een server. IP-blokabonnementen opvragen heeft één abonnement per grootte, met ipVersion, prefixLength en usableAddresses in specs, de prijs per factureringscyclus in pricing en de voorraad per datacenter in availability. De queryparameter datacenter beperkt de lijst tot één locatie en accepteert een code zoals ams1 of een ID uit Regio’s opvragen.

curl --request GET \
  --url https://api.serverside.com/v1/networking/ip-blocks/plans \
  --header 'Authorization: Bearer <api-key>'

Voor een vaste termijn is het blok een IP_BLOCK-regel van Bestelling aanmaken, toegevoegd zodra de factuur is betaald (Facturering). Bij facturering per uur voegt IP-blok aanmaken het in één verzoek toe. Dit vereist billing.isUsageBased op true bij Rechten ophalen; anders is het antwoord 422 USAGE_BILLING_DISABLED:

curl --request POST \
  --url https://api.serverside.com/v1/networking/ip-blocks \
  --header 'Authorization: Bearer <api-key>' \
  --header 'Idempotency-Key: <idempotency-key>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "plan": "<ip-block-plan-id>",
  "datacenter": "ams1",
  "networkId": "<network-id>"
}
'

plan accepteert de id van het abonnement; networkId noemt het netwerk waaraan het blok wordt toegevoegd. Het antwoord is 201 met het nieuwe blok, waarvan de id de {blockId} van de adresaanroepen is. Hetzelfde verzoek met dezelfde Idempotency-Key bestelt niets nieuws en antwoordt met 200 en dat blok. Een blok dat niet kon worden toegewezen wordt geweigerd met 409 PROVISIONING_FAILED; een grootte waarvoor het datacenter geen ruimte heeft met 422 OFFERING_NOT_AVAILABLE.

Lever een IP-blok in

IP-blok verwijderen zegt het abonnement van een los besteld blok op en antwoordt met 204. Abonnement van IP-blok ophalen toont welk abonnement dat is.

curl --request DELETE \
  --url https://api.serverside.com/v1/networking/ip-blocks/{blockId} \
  --header 'Authorization: Bearer <api-key>'

Een blok zonder toegewezen adressen wordt direct vrijgegeven. Een blok met een adres dat nog aan een server is toegewezen, wordt geweigerd met 422 TERMINATION_BLOCKED; geef die adressen eerst vrij. Een bij een server geleverd blok wordt via het serverabonnement gefactureerd. Verwijderen wordt geweigerd met 422 BUNDLED_ITEM_CANCELLATION_BLOCKED; het wordt vrijgegeven nadat de server is verwijderd.