IP ADDRESSES

The UpCloud network has public and private IP addresses.

Public IP addresses are used to connect to the server from the Internet. Private addresses are only visible to servers under the same UpCloud account. A server has a minimum of zero and a maximum of five public IPv4 and IPv6 addresses. Every server can have one private IPv4 address only, and must have at least one IP address. The UpCloud API assigns the IP addresses automatically. IP addresses cannot be reserved for later use.

The operating system running on the server will see a separate network interface per IP address. On a typical server, there are three network interfaces. The first network interface is assigned to the public network and the second to a private network. If the server has an IPv6 address configured it will use the third network interface. DHCP service is provided on all IPv4 network interfaces for automatic configuration of the correct IP address. IPv6 network interfaces should use stateless address autoconfiguration (SLAAC) with IPv6 privacy extensions disabled. On IPv6-only server DNS parameters can be obtained with stateless DHCPv6.

List IP addresses

Returns a list of all IP addresses assigned to servers on the current user account.

Request

GET /1.2/ip_address

Normal response

HTTP/1.0 200 OK
{
  "ip_addresses": {
    "ip_address": [
      {
        "access": "private",
        "address": "10.0.0.0",
        "family": "IPv4",
        "ptr_record": "",
        "server": "0053cd80-5945-4105-9081-11192806a8f7"
      },
      {
        "access": "private",
        "address": "10.0.0.1",
        "family": "IPv4",
        "ptr_record": "",
        "server": "006b6701-55d2-4374-ac40-56cc1501037f"
      },
      {
        "access": "public",
        "address": "x.x.x.x",
        "family": "IPv4",
        "part_of_plan": "yes",
        "ptr_record": "x-x-x-x.zone.upcloud.host",
        "server": "0053cd80-5945-4105-9081-11192806a8f7"
      },
      {
        "access": "public",
        "address": "xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx",
        "family": "IPv6",
        "ptr_record": "xxxx-xxxx-xxxx-xxxx.v6.zone.upcloud.host",
        "server": "006b6701-55d2-4374-ac40-56cc1501037f"
      }
    ]
  }
}

Get IP address details

Returns detailed information about a specific IP address.

Request

GET /1.2/ip_address/0.0.0.0

Normal response

HTTP/1.0 200 OK
{
  "ip_address": {
    "access": "public",
    "address": "0.0.0.0",
    "family": "IPv4",
    "part_of_plan": "yes",
    "ptr_record": "test.example.com",
    "server": "009d64ef-31d1-4684-a26b-c86c955cbf46"
  }
}

Assign IP address

Assigns a new IP address to a server.

Only public IP addresses can be added. There is always at most one private IP address per server. There is a maximum of five public IP addresses per server.

The server state must be stopped.

Request

POST /1.2/ip_address
{
  "ip_address": {
    "family": "IPv4",
    "server": "009d64ef-31d1-4684-a26b-c86c955cbf46"
  }
}

Attributes

Attribute Accepted values Default value Required Description
access private / public public no Is address for private or public network.
family IPv4 / IPv6 IPv4 no The address family of new IP address.

Normal response

HTTP/1.0 201 Created
{
  "ip_address": {
    "access": "public",
    "address": "0.0.0.0",
    "family": "IPv4",
    "ptr_record": "xxxx-xxxx-xxxx-xxxx.v6.zone.upcloud.host",
    "server": "009d64ef-31d1-4684-a26b-c86c955cbf46"
  }
}

Error responses

HTTP status Error code Description
400 Bad Request SERVER_INVALID The attribute server has an invalid value.
402 Payment Required INSUFFICIENT_CREDITS There are not enough credits to perform the requested action. See Credits.
403 Forbidden SERVER_FORBIDDEN The server exists, but is owned by another account.
404 Not Found SERVER_NOT_FOUND The server does not exist.
409 Conflict IP_ADDRESS_LIMIT_REACHED The maximum number of IP addresses are already attached to the server.
409 Conflict IP_ADDRESS_RESOURCES_UNAVAILABLE There are not enough IP addresses available in the specified zone.
409 Conflict SERVER_STATE_ILLEGAL The server is in a state in which it cannot be used. See Server states.

Modify IP address

Modifies the reverse DNS PTR record corresponding to an IP address. The PTR record can only be set to public IP address.

Request

PUT /1.2/ip_address/0.0.0.0
{
  "ip_address": {
    "ptr_record": "hostname.example.com"
  }
}

Attributes

Attribute Accepted values Default value Required Description
ptr_record DNS PTR record value yes A fully qualified domain name.

Normal response

HTTP/1.0 202 Accepted
{
  "ip_address": {
    "access": "public",
    "address": "0.0.0.0",
    "family": "IPv4",
    "ptr_record": "hostname.example.com",
    "server": "009d64ef-31d1-4684-a26b-c86c95c5bf46"
  }
}

Error responses

HTTP status Error code Description
400 Bad Request IP_ADDRESS_INVALID The attribute ip_address has an invalid value.
400 Bad Request PTR_RECORD_INVALID The attribute ptr_record has an invalid value.
403 Forbidden IP_ADDRESS_FORBIDDEN The IP address exists, but belong to another user.
404 Not found IP_ADDRESS_NOT_FOUND The IP address does not exist.
409 Conflict PTR_RECORD_NOT_SUPPORTED A PTR record was tried to set on a private IP address.

Release IP address

Removes an IP address from a server.

Request

DELETE /1.2/ip_address/0.0.0.0

Normal response

HTTP/1.0 204 No Content

Error responses

HTTP status Error code Description
400 Bad Request IP_ADDRESS_INVALID The attribute ip_address has an invalid value.
403 Forbidden IP_ADDRESS_FORBIDDEN The IP address exists, but is assigned to another account.
404 Not Found IP_ADDRESS_NOT_FOUND The IP address does not exist.
409 Conflict SERVER_STATE_ILLEGAL The server is in a state in which it cannot be used. See Server states.
409 Conflict CANNOT_DELETE_PRIVATE_ADDRESS The IP address on the private network cannot be deleted.