> For the complete documentation index, see [llms.txt](https://docs.glesys.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.glesys.com/products/compute/kvm-virtual-machines/how-tos/manage-virtual-machines.md).

# Manage virtual machines

***

## Manage a KVM VM using the control panel

This section provides a closer look at managing a virtual machine.

You can view all your VMs by navigating to the **Virtual machines** overview in the **Compute** section of the left-hand sidebar menu. All KVM virtual machines have ID names that include `kvm`. In the example below, the virtual machine is named `kvm5548147`. To manage a virtual server, click on it in the list.

<div align="left"><figure><img src="/files/lUPdFI4W5oNd5G4pppmo" alt=""><figcaption></figcaption></figure></div>

### Enable backups

You can enable automatic backups for your VM. This adds a cost to the VM’s price based on the frequency of the backups.

Backups are stored in a separate data center from the one where the server is located, providing enhanced security.

Please note that backups are linked to the specific virtual server. If we delete the virtual server, all of its backups will also be deleted.

Three tabs are displayed when you click on a virtual machine: *Details*, *Backups*, and *Network adapters*. Click on the **Backups** tab to view the overview of the server's backups.

<div align="left"><figure><img src="/files/NPpdcpkmxJaESqcgUSsn" alt=""><figcaption></figcaption></figure></div>

#### **Scheduled backups**

At the top, the scheduled backups are displayed. Here, you can see when the scheduled backups started, when they were completed, their size, and whether they were daily or weekly backups. You also see the status of all the backups.

Additionally, you can reconfigure the backup schedule by clicking the **Edit schedule** button.

<div align="left"><figure><img src="/files/ROjIe9EdARApVqvdlDCw" alt=""><figcaption></figcaption></figure></div>

In the dialog box, use the sliders to adjust the retention period for automatic backups, specifying the number of days or weeks. The example image below saves seven daily backups and three weekly backups.

<div align="left"><figure><img src="/files/ZCm3GWWt4XjT2TYZzG3S" alt=""><figcaption></figcaption></figure></div>

Please note that the displayed cost refers to the total cost for the server, not just for the backups.

#### **Manual backups**

Further down the backups overview page, the manual backups are displayed. These backups are retained for as long as you want or until you delete the server. You can create new manual backups by clicking **+ Create manual backup**.

<div align="left"><figure><img src="/files/1ruModKrHNx87rq17bCW" alt=""><figcaption></figcaption></figure></div>

In the dialog box, you can also see the cost of the manual backup. Click **Create backup** to start the backup process.

If it appears that the backup is never completed, meaning the status shows `Backup is running...` for an extended period, you can try refreshing the webpage by pressing the <kbd>F5</kbd> key. Most likely, the status will then update to `Finished`.

<div align="left"><figure><img src="/files/wmDpTlxa2jrO5WcGfZxO" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
To restore a virtual server from a backup, see [Restore virtual machines](/products/compute/kvm-virtual-machines/how-tos/restore-virtual-machines.md).
{% endhint %}

### Add or remove IP addresses

It is possible to add and remove IP addresses from the server. This is done in the server overview. About halfway down the page, you will find an *IP Addresses* section. Here, you can view the server's current IP addresses and add new ones using the **Add IPv4** and **Add IPv6** buttons. To remove an IP address, click the red cross to the right of the IP address.

<div align="left"><figure><img src="/files/0Jhb1yyzZrbBSeDtZiK0" alt=""><figcaption></figcaption></figure></div>

In this example, we will add an IPv4 address by clicking **Add IPv4**.

In the dialog box that appears, select from either available IP addresses or previously reserved IP addresses. The reserved IP addresses are shown at the top.

Select an IP address and click **Add Selected**.

<div align="left"><figure><img src="/files/as2fTgfpABWH610Mt7DV" alt=""><figcaption></figcaption></figure></div>

When you return to the server overview, the new IP address is listed.

Follow the same procedure to add IPv6 addresses; instead, click **Add IPv6** in the overview.

Finally, you must configure the IP addresses in the server's operating system. The process of adding IP addresses varies among different Linux distributions. Here, we will cover the distributions provided by Glesys.

#### Locate the gateway and the netmask

You must determine their netmask and gateway before adding the IP addresses to the server's operating system. This information can be found under **IP addresses** in the left-hand menu under **Network**. Here, we can see all IP addresses, including those assigned to our servers and the ones we have reserved. Both assigned and reserved IP addresses are listed under the **Overview** tab.

Click the information icon next to the IP address to view the netmask and gateway.

<div align="left"><figure><img src="/files/vAKt69kq0kADH5m3yhsn" alt=""><figcaption></figcaption></figure></div>

When there is only one IP address assigned to your server—the initial IP address created when the server was set up—it is automatically assigned to the server. Now that you are adding new IP addresses, you must switch from automatic settings (DHCP) to manual settings for all IP addresses in the server's operating system, including the first one. Therefore, you must also determine the netmask and gateway for the first address.

If you need help converting the netmask between different formats, see [Convert the netmask between different formats](/products/connectivity/ip-addresses/how-tos/find-gateway-and-netmask/convert-the-netmask-between-different-formats.md).

The Glesys DNS servers are located at the IPv4 addresses `79.99.4.100` and `79.99.4.101`, and the IPv6 addresses `2a02:751:aaaa::1` and `2a02:751:aaaa::2`.

#### Add the IP addresses in the VM's operating system

{% tabs %}
{% tab title="Debian 12" %}
Before adding the addresses, you need to disable automatic cloud configuration of the network settings. If you don't do this, there’s a risk that the settings you apply may be overwritten.

Open the file `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`, for example, using:

{% code title="Command" %}

```
sudo vi /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
```

{% endcode %}

In this file, add the following line:

{% code title="/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg" %}

```yaml
network: {config: disabled}
```

{% endcode %}

Once this is done, you can configure your IP addresses in the file `/etc/network/interfaces.d/50-cloud-init`. Open the file using, for example, `vi` or `nano`:

{% code title="Command" %}

```
sudo vi /etc/network/interfaces.d/50-cloud-init
```

{% endcode %}

This example server will have three IPv4 and three IPv6 addresses. For the gateway, use the gateway associated with the first IP address for each respective IP version.

The file's content should resemble the example below, but ensure you replace the IP addresses, netmasks, and gateways with the correct values. The network interface should remain unchanged, as it is the one configured for the system—in this example, `ens1`.

Note that if you only want to assign manual IPv4 addresses, leave the line for IPv6 untouched, meaning keep it as `iface ens1 inet6 dhcp`. The same applies the other way around: if you only want to set IPv6 addresses, keep the IPv4 line `iface ens1 inet dhcp` unchanged.

{% code title="/etc/network/interfaces.d/50-cloud-init" %}

```
auto lo
iface lo inet loopback

# The first IPv4 address
auto ens1
iface ens1 inet static
    address 203.0.113.59/24
    gateway 203.0.113.1

# The second IPv4 address
iface ens1 inet static
    address 198.51.100.85/24

# The third IPv4 address
iface ens1 inet static
    address 192.0.2.109/24
    dns-nameservers 79.99.4.100 79.99.4.101

# The first IPv6 address
iface ens1 inet6 static
    address 2001:db8:18::1397/64
    gateway 2001:db8:18::1

# The second IPv6 address
iface ens1 inet6 static
    address 2001:db8:18::140f/64

# The third IPv6 address
iface ens1 inet6 static
    address 2001:db8:18::13f5/64
    dns-nameservers 2a02:751:aaaa::1 2a02:751:aaaa::2 
```

{% endcode %}

Please note that you must place the line with the DNS servers as the last entry for each IP version. In this example, we have positioned the DNS servers under the third IP address for IPv4 and IPv6. Debian uses `resolvconf`, which has a maximum limit of three DNS servers. In this example, we are adding four DNS servers, but the system will only use the last three.

Finally, we need to restart the network for the settings to take effect. This can be done with:

{% code title="Command" %}

```
sudo systemctl restart networking
```

{% endcode %}

If something goes wrong with the network, you can log in via the console in the Glesys control panel.
{% endtab %}

{% tab title="Debian 13" %}
Before configuring the IP addresses in Debian 13, you need to disable automatic cloud configuration of the network. This can be achieved by editing the file `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`.

{% code title="Command" %}

```
sudo vi /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
```

{% endcode %}

Add the following content and save the file:

{% code title="/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg" %}

```yaml
network: {config: disabled}
```

{% endcode %}

Next, it's time to add the IP addresses. This is done by editing the file `/etc/netplan/50-cloud-init.yaml`:

{% code title="Command" %}

```
sudo vi /etc/netplan/50-cloud-init.yaml
```

{% endcode %}

Here, add all IP addresses as manual settings. If you have only one IPv6 address and want to continue using DHCP for it, keep the line `dhcp6: true`. Similarly, if you have only one IPv4 address and want to retain DHCP for it, leave the line `dhcp4: true` unchanged. The network interface remains unchanged—in this case, `ens1`.

In this example, we manually add three IPv4 addresses and three IPv6 addresses.

Note that IPv6 addresses should be enclosed in quotation marks to prevent the system from interpreting the colon as part of the YAML syntax.

{% code title="/etc/netplan/50-cloud-init.yaml" %}

```yaml
network:
  version: 2
  ethernets:
    ens1:
      addresses:
        - 203.0.113.27/24
        - 203.0.113.121/24
        - 192.0.2.218/24
        - "2001:db8:18::101/64"
        - "2001:db8:18::143a/64"
        - "2001:db8:18::174d/64"
      routes:
        - to: default
          via: 203.0.113.1
        - to: "::/0"
          via: "2001:db8:18::1"
      nameservers:
        addresses:
          - 79.99.4.100
          - 79.99.4.101
          - "2a02:751:aaaa::1"
          - "2a02:751:aaaa::2"
```

{% endcode %}

To apply the settings, use `netplan try`. With the `try` command, the settings will revert to the previous state if you become disconnected and cannot confirm the new settings by pressing the <kbd>Enter</kbd> key.

{% code title="Command" %}

```
sudo netplan try
```

{% endcode %}

{% code title="Prompt from netplan" %}

```
Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in 115 seconds
Configuration accepted.
```

{% endcode %}
{% endtab %}

{% tab title="Ubuntu 22.04" %}
Before configuring the IP addresses in Ubuntu, you need to disable automatic cloud configuration of the network. This can be achieved by editing the file `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`.

{% code title="Command" %}

```
sudo vi /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
```

{% endcode %}

Add the following content and save the file:

{% code title="/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg" %}

```yaml
network: {config: disabled}
```

{% endcode %}

Next, it's time to add the IP addresses. This is done by editing the file `/etc/netplan/50-cloud-init.yaml`:

{% code title="Command" %}

```
sudo vi /etc/netplan/50-cloud-init.yaml
```

{% endcode %}

Here, add all IP addresses as manual settings. If you have only one IPv6 address and want to continue using DHCP for it, keep the line `dhcp6: true`. Similarly, if you have only one IPv4 address and want to retain DHCP for it, leave the line `dhcp4: true` unchanged. The network interface remains unchanged—in this case, `ens1`.

In this example, we manually add three IPv4 addresses and three IPv6 addresses.

Note that IPv6 addresses should be enclosed in quotation marks to prevent the system from interpreting the colon as part of the YAML syntax.

{% code title="/etc/netplan/50-cloud-init.yaml" %}

```yaml
network:
  version: 2
  ethernets:
    ens1:
      addresses:
        - 203.0.113.27/24
        - 203.0.113.121/24
        - 192.0.2.218/24
        - "2001:db8:18::101/64"
        - "2001:db8:18::143a/64"
        - "2001:db8:18::174d/64"
      routes:
        - to: default
          via: 203.0.113.1
        - to: "::/0"
          via: "2001:db8:18::1"
      nameservers:
        addresses:
          - 79.99.4.100
          - 79.99.4.101
          - "2a02:751:aaaa::1"
          - "2a02:751:aaaa::2"
```

{% endcode %}

To apply the settings, use `netplan try`. With the `try` command, the settings will revert to the previous state if you become disconnected and cannot confirm the new settings by pressing the <kbd>Enter</kbd> key.

{% code title="Command" %}

```
sudo netplan try
```

{% endcode %}

{% code title="Prompt from netplan" %}

```
Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in 115 seconds
Configuration accepted.
```

{% endcode %}
{% endtab %}

{% tab title="Fedora and AlmaLinux" %}
Before configuring the IP addresses in Fedora or AlmaLinux, you need to disable automatic cloud configuration of the network. This can be achieved by editing the file `/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg`.

{% code title="Command" %}

```
sudo vi /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
```

{% endcode %}

Add the following content and save the file:

{% code title="/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg" %}

```yaml
network: {config: disabled}
```

{% endcode %}

Next, it's time to add your IP addresses. However, you must first determine to which connection you will add the IP addresses. Do this using the command `nmcli connection`.

The results will vary depending on whether we are using Fedora or AlmaLinux. In Fedora, it will most likely resemble the example below, where the connection is named `System ens1`:

{% code title="Command" %}

```
nmcli connection
```

{% endcode %}

{% code title="Output" %}

```
NAME         UUID                                  TYPE      DEVICE
System ens1  d18b6429-133f-4947-3b25-4482c7f9d5e7  ethernet  ens1
```

{% endcode %}

In AlmaLinux, the connection is most likely named `Wired connection 1`, but you verify this to be certain. The connection you should use is the one with a network interface under the device column.

{% code title="Command" %}

```
nmcli connection
```

{% endcode %}

{% code title="Output" %}

```
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  33ac2c5f-024c-3d53-817e-9dfcd27be651  ethernet  eth0
System ens1         d18b6429-133f-4947-3b25-4482c7f9d5e7  ethernet  --
```

{% endcode %}

In this case, the connection is indeed named `Wired connection 1`.

Proceed to add your IP addresses. Note that you must add all IP addresses, including the initial one created when the server was set up. In this example, we are using Fedora, and the connection is named `System ens1`. If you are using AlmaLinux instead, replace it with `Wired connection 1`.

{% code title="Multiple command" %}

```
nmcli connection modify "System ens1" ipv4.addresses \
"198.51.100.85/24,192.0.2.53/24,192.0.2.109/24"

nmcli connection modify "System ens1" ipv4.gateway 198.51.100.1

nmcli connection modify "System ens1" ipv4.dns "79.99.4.100,79.99.4.101"

nmcli connection modify "System ens1" ipv4.method manual

nmcli connection up "System ens1"
```

{% endcode %}

{% code title="Output of last command" %}

```
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/3)
```

{% endcode %}

To add IPv6 addresses as well, follow the same steps, but substitute `ipv4` in the commands with `ipv6`. For example:

{% code title="Multiple commands" %}

```
nmcli connection modify "System ens1" ipv6.addresses \
"2001:db8:18::109c/64,2001:db8:18::13f5/64,2001:db8:18::140f/64"

nmcli connection modify "System ens1" ipv6.gateway "2001:db8:18::1"

nmcli connection modify "System ens1" ipv6.dns \
"2a02:751:aaaa::1,2a02:751:aaaa::2"

nmcli connection modify "System ens1" ipv6.method manual

nmcli connection up "System ens1"
```

{% endcode %}

{% code title="Output of last command" %}

```
Connection successfully activated (D-Bus active path:
/org/freedesktop/NetworkManager/ActiveConnection/3)
```

{% endcode %}
{% endtab %}

{% tab title="Microsoft Windows" %}
Right-click on the network icon in the taskbar and select **Open Network & Internet settings**.

<div align="left"><figure><img src="/files/gBQ0qz3Xk0zzLimvquuc" alt=""><figcaption></figcaption></figure></div>

Next, click **Change adapter options**.

<div align="left"><figure><img src="/files/CPBEsGxHtDAj31yTVJaN" alt=""><figcaption></figcaption></figure></div>

Here, right-click on the network adapter named **Red Hat VirtIO Ethernet Adapter** and select **Properties**.

<div align="left"><figure><img src="/files/RI69xUcvi8RVudCUpG8O" alt=""><figcaption></figcaption></figure></div>

In this example, we begin by configuring the IPv4 addresses. Thus, select **Internet Protocol Version 4 (TCP/IPv4)** and click **Properties**.

<div align="left"><figure><img src="/files/7RJ7JusHeZbzAWTjG0eo" alt=""><figcaption></figcaption></figure></div>

Switch from automatically obtaining an IP address (DHCP) to manually setting a specific IP address. Then, enter the first IP address, its netmask, and gateway. Also, input the IP addresses of Glesys DNS servers (`79.99.4.100` and `79.99.4.101`). To add more addresses, click **Advanced**.

<div align="left"><figure><img src="/files/ouwYjgav3CXf7DaZ1rOV" alt=""><figcaption></figcaption></figure></div>

In the dialog box that opens, click **Add...**

<div align="left"><figure><img src="/files/x8MxB7Gvv96vIWxG21Hn" alt=""><figcaption></figcaption></figure></div>

Enter the next IP address and its corresponding netmask, and then click **Add**.

<div align="left"><figure><img src="/files/hsNyT9ZvXIkQoLV5indX" alt=""><figcaption></figcaption></figure></div>

Repeat this process for all the IP addresses you want to add. When finished, click **OK** in the **Advanced TCP/IP Settings** overview.

<div align="left"><figure><img src="/files/3SaR15veLJpmzI5knEpR" alt=""><figcaption></figcaption></figure></div>

To add IPv6 addresses, follow the same process, but select **Internet Protocol Version 6 (TCP/IPv6)** and click **Properties**.

<div align="left"><figure><img src="/files/ZTa1ogy43fiOIyqcv4WU" alt=""><figcaption></figcaption></figure></div>

Here, switch to manual settings and enter the first IPv6 address. Specify Glesys DNS servers over IPv6, which are accessible at `2a02:751:aaaa::1` and `2a02:751:aaaa::2`.

To add more IPv6 addresses, click **Advanced**...

<div align="left"><figure><img src="/files/NcCKpbtqDN7VDvPzLQsw" alt=""><figcaption></figcaption></figure></div>

Follow the same procedure as for IPv4 to add more addresses. When you are finished, click on OK in the IPv6 address overview.

Once all IP addresses have been added, click OK in the Ethernet Properties dialog window. The new IP addresses are activated immediately.

<div align="left"><figure><img src="/files/ZspRWCucGFH79Sy1ygHP" alt=""><figcaption></figcaption></figure></div>
{% endtab %}
{% endtabs %}

#### Verify and test that the IP addresses are functioning

{% tabs %}
{% tab title="Linux" %}
Use the `ip addr` command to confirm that the server has received all the assigned IP addresses.

{% code title="Command" %}

```
ip addr
```

{% endcode %}

{% code title="Output" %}

```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 12:b2:7c:5e:59:01 brd ff:ff:ff:ff:ff:ff
    altname enp1s1
    inet 203.0.113.27/24 brd 203.0.113.255 scope global ens1
       valid_lft forever preferred_lft forever
    inet 192.0.2.218/24 brd 192.0.2.255 scope global ens1
       valid_lft forever preferred_lft forever
    inet 203.0.113.121/24 brd 203.0.113.255 scope global secondary ens1
       valid_lft forever preferred_lft forever
    inet6 2001:db8:18::174d/64 scope global noprefixroute
       valid_lft forever preferred_lft forever
    inet6 2001:db8:18::143a/64 scope global
       valid_lft forever preferred_lft forever
    inet6 2001:db8:18::101/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::10b2:7cff:fe5e:5901/64 scope link
       valid_lft forever preferred_lft forever
```

{% endcode %}

You can test by pinging Google’s DNS from all the assigned IP addresses to confirm that they work. Specify the source address using the `-I` flag. Use the IP addresses you have added for the source address, one at a time. We only need to send two pings, so we utilize the `-c2` flag. Additionally, you need to specify the IP version using either `-4` or `-6` for the respective IP version.

<pre data-title="Commands with output (shell prompt shown as $)"><code><strong>$ ping -4 -c2 -I 203.0.113.27 dns.google
</strong>PING  (8.8.4.4) from 203.0.113.27 : 56(84) bytes of data.
64 bytes from dns.google (8.8.4.4): icmp_seq=1 ttl=57 time=9.45 ms
64 bytes from dns.google (8.8.4.4): icmp_seq=2 ttl=57 time=9.18 ms
[...]

<strong>$ ping -4 -c2 -I 192.0.2.218 dns.google
</strong>PING  (8.8.8.8) from 192.0.2.218 : 56(84) bytes of data.
64 bytes from dns.google (8.8.8.8): icmp_seq=1 ttl=57 time=9.68 ms
64 bytes from dns.google (8.8.8.8): icmp_seq=2 ttl=57 time=9.42 ms
[...]

<strong>$ ping -4 -c2 -I 203.0.113.121 dns.google
</strong>PING  (8.8.4.4) from 203.0.113.121 : 56(84) bytes of data.
64 bytes from dns.google (8.8.4.4): icmp_seq=1 ttl=57 time=9.45 ms
64 bytes from dns.google (8.8.4.4): icmp_seq=2 ttl=57 time=9.07 ms
[...]

<strong>$ ping -6 -c2 -I 2001:db8:18::174d dns.google
</strong>PING dns.google(dns.google (2001:4860:4860::8844)) from 2001:db8:18::174d : 56 data bytes
64 bytes from dns.google (2001:4860:4860::8844): icmp_seq=1 ttl=57 time=9.41 ms
64 bytes from dns.google (2001:4860:4860::8844): icmp_seq=2 ttl=57 time=9.19 ms
[...]

<strong>$ ping -6 -c2 -I 2001:db8:18::143a dns.google
</strong>PING dns.google(dns.google (2001:4860:4860::8844)) from 2001:db8:18::143a : 56 data bytes
64 bytes from dns.google (2001:4860:4860::8844): icmp_seq=1 ttl=57 time=9.41 ms
64 bytes from dns.google (2001:4860:4860::8844): icmp_seq=2 ttl=57 time=9.23 ms
[...]

<strong>$ ping -6 -c2 -I 2001:db8:18::101 dns.google
</strong>PING dns.google(dns.google (2001:4860:4860::8888)) from 2001:db8:18::101 : 56 data bytes
64 bytes from dns.google (2001:4860:4860::8888): icmp_seq=1 ttl=57 time=9.81 ms
64 bytes from dns.google (2001:4860:4860::8888): icmp_seq=2 ttl=57 time=9.51 ms
[...]
</code></pre>

In the example above, all the addresses function as expected.
{% endtab %}

{% tab title="Microsoft Windows" %}
Verify and test the IP addresses by clicking the **Start Menu** and searching for *cmd*. When **Command Prompt** appears in the menu, click on it. To list all the server's IP addresses, use the `ipconfig` command.

{% code title="Command" %}

```
ipconfig
```

{% endcode %}

{% code title="Output" %}

```
Windows IP Configuration


Ethernet adapter Ethernet0:

   Connection-specific DNS Suffix  . :
   IPv6 Address. . . . . . . . . . . : 2001:db8:18::143a
   Link-local IPv6 Address . . . . . : fe80::6137:3530:d2b1:c110%14
   IPv4 Address. . . . . . . . . . . : 203.0.113.49
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   IPv4 Address. . . . . . . . . . . : 192.0.2.109
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 2001:db8:18::1
                                       203.0.113.1
```

{% endcode %}

You can test the addresses by pinging Google’s DNS from all your IP addresses. Specify the source IP address that you want to use for the ping with the `-S` flag (source).

<pre data-title="Commands with output (prompt shown as &#x27;C:\Users\glesys>&#x27;)"><code><strong>C:\Users\glesys> ping -S 203.0.113.49 dns.google
</strong>
Pinging dns.google [8.8.4.4] from 203.0.113.49 with 32 bytes of data:
Reply from 8.8.4.4: bytes=32 time=11ms TTL=57
Reply from 8.8.4.4: bytes=32 time=9ms TTL=57
Reply from 8.8.4.4: bytes=32 time=9ms TTL=57
Reply from 8.8.4.4: bytes=32 time=9ms TTL=57
[...]

<strong>C:\Users\glesys> ping -S 192.0.2.109 dns.google
</strong>
Pinging dns.google [8.8.4.4] from 192.0.2.109 with 32 bytes of data:
Reply from 8.8.4.4: bytes=32 time=9ms TTL=57
Reply from 8.8.4.4: bytes=32 time=9ms TTL=57
Reply from 8.8.4.4: bytes=32 time=9ms TTL=57
Reply from 8.8.4.4: bytes=32 time=9ms TTL=57
[...]

<strong>C:\Users\glesys>ping -S 2001:db8:18:143a dns.google
</strong>
Pinging dns.google [2001:4860:4860::8844] from 2001:db8:18:143a with 32 bytes of data:
Reply from 2001:4860:4860::8844: time=9ms
Reply from 2001:4860:4860::8844: time=9ms
Reply from 2001:4860:4860::8844: time=9ms
Reply from 2001:4860:4860::8844: time=9ms
[...]
</code></pre>

In the example above, all the addresses function as expected.
{% endtab %}
{% endtabs %}

#### Delete an IP address

To remove an IP address from a server, first select the server in the **Virtual machines** section. Scroll down to the **IP Addresses** section in the server overview. To remove an IP address from a server, click the red cross next to the IP address you want to delete.

After clicking the cross next to an IP address, you can decide whether to keep the IP address in the project. This enables you to reuse the same IP address on another server. In this case, we opt to keep it. The IP address will be removed from the server, but will remain in the project for future use.

<div align="left"><figure><img src="/files/te2dR7XqgV627OqM5Clm" alt=""><figcaption></figcaption></figure></div>

Once the IP address has been removed from the server in the control panel, **you must also delete it from the server's operating system**. You remove the IP address from the same file, command, or setting where it was added. Refer to [Add or remove IP addresses](#add-or-remove-ip-addresses) for information on where the IP address settings are located in each operating system.

## **Manage a KVM VM using the API**

Several [API](/platform/control-panel/api.md) endpoints are available for managing your virtual machine.

* Use the [server/edit](https://github.com/GleSYS/API-docs/wiki/API-Documentation#serveredit) endpoint to edit resources, backup schedule, bandwidth, description, and hostname.
* Use the [server/createmanualbackup](https://github.com/GleSYS/API-docs/wiki/API-Documentation#servercreatemanualbackup) endpoint to create a manual backup.
* Use the [server/listbackups](https://github.com/GleSYS/API-docs/wiki/API-Documentation#serverlistbackups) endpoint to list the VM's current backups.
* Use the [server/deletemanualbackup](https://github.com/GleSYS/API-docs/wiki/API-Documentation#serverdeletemanualbackup) endpoint to delete a manual backup.
* Use the [server/start](https://github.com/GleSYS/API-docs/wiki/API-Documentation#serverstart), [server/stop](https://github.com/GleSYS/API-docs/wiki/API-Documentation#serverstop), and [server/reset](https://github.com/GleSYS/API-docs/wiki/API-Documentation#serverreset) endpoints to start, stop, and reboot your VM.
* Use the [server/networkadapters](https://github.com/GleSYS/API-docs/wiki/API-Documentation#servernetworkadapters) endpoint to list a VM's network adapters.
* Use the [networkadapter/edit](https://github.com/GleSYS/API-docs/wiki/API-Documentation#networkadapteredit) to adjust the bandwidth.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.glesys.com/products/compute/kvm-virtual-machines/how-tos/manage-virtual-machines.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
