# Check that IPv6 works

> Every server gets one IPv6 address, set up on its first boot. How to check it works from inside and outside, and what to do if a config change broke it.

Source: https://vpsnine.com/help/ipv6-setup · Updated: 2026-10-10

Every VPSNine server gets one IPv4 address and one IPv6 address. The panel shows both on the server's page, and `vps9 servers show` prints them too.

There's nothing to set up. On the first boot, cloud-init writes the network settings for you: both addresses on `eth0`, a default route for each, and DNS servers. On Ubuntu they end up in `/etc/netplan/50-cloud-init.yaml`. Debian 12 may keep them under `/etc/network/interfaces.d/` instead.

The examples below use `2001:db8:9::2`, an address reserved for documentation. Use the one from your server's page.

## Check it from the server

```bash
ip -6 addr show dev eth0 scope global
ip -6 route show default
```

The first should list your address. The second should have a `default via` line. Then try a real connection:

```bash
curl -6 -sI https://example.com
```

An `HTTP/` status line means IPv6 works.

## Check it from outside

From another machine that has IPv6:

```bash
ping -6 -c 3 2001:db8:9::2
ssh root@2001:db8:9::2
```

If your own connection has no IPv6, `ping` fails with `Network is unreachable` before it ever leaves your machine. That's your end, not the server. Try from another server instead.

If you use ufw, it already covers IPv6 (`IPV6=yes` in `/etc/default/ufw` is the default), so the rules you set apply to both addresses.

## One address, not a range

Your server has one IPv6 address. Don't add others from the same network to it: they belong to other customers' servers, and the host firewall drops traffic from any address that isn't yours.

## If it stopped working

It almost always follows a change to the network config.

- **No global address in `ip -6 addr`.** The config that set it is gone or was edited. If you kept a copy of the original file, put it back. On Ubuntu, test with `netplan try`: it rolls back after 120 seconds unless you press Enter, so a mistake can't lock you out for good.
- **The address is there but `curl -6` hangs.** The default route is missing. Check `ip -6 route show default`.
- **`RTNETLINK answers: File exists`.** You tried to add an address or route that's already set. Nothing is wrong.
- **You lost SSH after the change.** Log in on the [serial console](https://vpsnine.com/help/serial-console) to fix the file. It needs a root password, so set one in advance with `passwd`.

If you don't have the original file, [open a support ticket](https://my.vpsnine.com/support/new?category=network) with the server's name and we'll send you the values to put back. The panel doesn't show the IPv6 gateway, so you can't rebuild the file from it alone. Reinstalling the server from the panel also brings back a working setup, but it wipes the disk.
