Elastic IP Addresses
Equinix Metal™ supports ordering additional static IP space (referred to as “Elastic IPs”) that can be moved easily between servers. You can choose to have both "local" and "global" elastic IP addresses, which you rent from Equinix Metal on an hourly basis.
-
Elastic IPs - Clients can use our customer portal to order additional public IPv4 address space, ranging from a /32 (a single IP) through a /24 (256 IPs). Though there is no technical limit to how these IPs can be configured, we encourage you to use them responsibly, and as such we charge a nominal fee per elastic IP address ($0.005/hr or about $3.60/mo).
-
Global Anycast IPs - Global Anycast IPs are public IPv4 addresses that are pulled from Equinix Metal-owned IP space and announced in all of Equinix Metal's core facilities. These IPv4 addresses cost $0.15/hr per IP. Regular $0.05/GB outbound rates apply, and (in addition) inbound bandwidth to Global Elastic IPs costs $0.03/GB.
Requesting Elastic IPs
Select the Project in which the reserved subnet is required. From within that specific project, from the IPs & Networks drop-down click IPs. Your project's current IP Addresses should be listed. To request additional IP Addresses, click Request IP Addresses.
From the slide out, you can select the size, type, and facility of the reserved subnet. Be sure to include detailed information for the use case for the requested subnet.
Equinix Metal allows you to reserve the following sizes:
Elastic IPs | Usable | Global Anycast | Usable | |
---|---|---|---|---|
/31 | 2 IPv4 | /32 | 1 IPv4 | |
/30 | 4 IPv4 | /31 | 2 IPv4 | |
/29 | 8 IPv4 | /28 | 4 IPv4 | |
/28 | 16 IPv4 |
Provisioning a server with a single reserved subnet via Customer Portal
Provisioning a server with multiple reserved subnets via Customer Portal
Creating an IP Reservation through the API
curl -v \
-X POST "https://api.equinix.com/metal/v1/projects/$PROJECT_ID/ips" \
-H 'Content-Type: application/json' \
-H "X-Auth-Token: $METAL_API_TOKEN" \
-d @- <<-'EOF'
{
"type": "public_ipv4",
"quantity": 4,
"comments": "for mytestserver.com",
"facility": "ams1",
"details": "my /30 in AMS1"
}
EOF
Please Note: The quantity parameter should be the number of IPs in the subnet, valid values are 2, 4, 8, 16. IP reservations larger than 16 will require additional verification by Equinix Metal)
The output would be similar to:
"id":"18c40668-f9b6-4cdc-b50e-0f8729d4f2f6",
"address_family":4,
"netmask":"255.255.255.252",
"created_at":"2020-02-20T18:53:52Z",
"details":"my test /30 in AMS1",
"tags":[],
"public":true,
"cidr":30,
"management":false,
"manageable":true,
"enabled":true,
"global_ip":false,
"customdata":{},
"addon":true,
"bill":true,
"project":{"href":"/projects/c895ea67-40ce-4f98-bd97-fe0b2e771481"},
"project_lite":{"href":"/projects/c895ea67-40ce-4f98-bd97-fe0b2e771481"},
"assignments":[],
"facility":{"id":"8e6470b3-b75e-47d1-bb93-45b225750975","name":"Amsterdam, NL","code":"ams1","features":["baremetal","storage","global_ipv4","backend_transfer","layer_2"],"address":{"href":"#0688e909-647e-4b21-bdf2-fc056d993fc5"},"ip_ranges":["2604:1380:2000::/36","147.75.204.0/23","147.75.100.0/22","147.75.80.0/22","147.75.32.0/23"]},
"network":"147.75.80.220",
"address":"147.75.80.222",
"gateway":"147.75.80.221",
"available":"/ips/18c40668-f9b6-4cdc-b50e-0f8729d4f2f6/available",
"href":"/ips/18c40668-f9b6-4cdc-b50e-0f8729d4f2f6"
}
Please Note: Should you not recieve a response from the above. A support ticket was submitted on your behalf, and our team will review the request an respond. Should you not see this ticket please email support directly
Host IP Configuration
It is important to note that, unlike management IPs, elastic IPs are not automatically configured on servers by default. This is by design; as a security measure, as we do not maintain access to servers to update their network configuration files once they’re installed.
Using a sample IP address of 147.75.255.255, the following configuration will make the IP address usable on your server:
Ubuntu/Debian
To configure temporarily (won't come back up on reboot):
sudo ip addr add 147.75.255.255 dev lo
To make permanent, add to /etc/network/interfaces:
auto lo:0
iface lo:0 inet static
address 147.75.255.255
netmask 255.255.255.255
Ubuntu/Debian (netplan)
To configure temporarily (won't come back up on reboot):
sudo ip addr add 147.75.255.255 dev lo
To make permanent, add to /etc/netplan/00-elastic.yaml:
network:
version: 2
renderer: networkd
ethernets:
lo:
addresses:
- 127.0.0.1/8
- 147.75.255.255/32
then either sudo netplan try
or sudo netplan apply
CentOS
To configure temporarily (won't come back up on reboot):
sudo ip addr add 147.75.255.255 dev lo
To make permanent, add to /etc/sysconfig/network-scripts/ifcfg-lo:0
:
DEVICE="lo:0"
BOOTPROTO="static"
IPADDR=147.75.255.255
NETMASK=255.255.255.255
NETWORK=147.75.255.255
ONBOOT=yes
Container Linux by CoreOS
To configure temporarily (won't come back up on reboot):
sudo ip addr add 147.75.255.255 dev lo
To make permanent, add the new IP as well as your standard loopback to a new file in /etc/systemd/network/10-loopback.network
[Match]
Name=lo
[Network]
Address=127.0.0.1/24
Address=147.75.255.255/32
To ensure that your IP is setup correctly, you can use “ ip a ” to show all configured ip’s on a machine.
Before:
core@ip-test-coreos ~ $ ip -o a show dev lo
1: lo inet 127.0.0.1/8 scope host lo\ valid_lft forever preferred_lft forever
1: lo inet6 ::1/128 scope host \ valid_lft forever preferred_lft forever
Configuration:
core@ip-test-coreos ~ $ sudo ip addr add 147.75.255.255 dev lo
After:
core@ip-test-coreos ~ $ ip -o a show dev lo
1: lo inet 127.0.0.1/8 scope host lo\ valid_lft forever preferred_lft forever
1: lo inet 147.75.255.255/32 scope global lo\ valid_lft forever preferred_lft forever
1: lo inet6 ::1/128 scope host \ valid_lft forever preferred_lft forever
If all goes well, you'll be all set to start using your Elastic IP as you please. If you feel there is something missing in this tutorial or anything is unclear, give us a shout!