---
title: "Configure static routes on dedicated servers"
sidebar_label: "Static routes"
sidebar_position: 10
description: "How to specify static routes on a server, examples of configuring connectivity between a dedicated server and a cloud server, routing internet traffic through a firewall, and connectivity with external infrastructure"
toc_max_heading_level: 2
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import MoreVerticalIcon from '@selectel/docux/icons/more-vertical'
import {CustomTable} from '@selectel/docux/components'

# Configure static routes on dedicated servers

Static routing is a type of routing where routes are explicitly defined when configuring a network interface on a server or router.

To configure static routing, [specify static routes on the server](#write-routes-on-server).

Examples of tasks that can be solved using static routing:

* [connect dedicated servers and a cloud server via a private network](#example-of-static-routes-to-connect-dedicated-and-cloud-servers);
* [route internet traffic through a firewall](#example-of-static-routes-to-route-traffic-via-firewall);
* [configure connectivity with external infrastructure through a firewall](#example-of-static-routes-to-connect-to-external-infrastructure-via-firewall).

## Specify static routes on a server \{#write-routes-on-server}

<Tabs queryString="write-routes-on-server">
  <TabItem value="ubuntu" default>
    <TabItemLabel>
      Ubuntu
    </TabItemLabel>

    1. [Connect to the server](/dedicated/manage/connect-to-server.mdx).

    2. Open the network interfaces configuration file with the `vi` text editor:

       ```bash
       vi /etc/netplan/01-netcfg.yaml
       ```

    3. At the end of the block with the parameters for the required network interface, add the route:

       ```bash
       routes:
       - to:  <ip_address>/<mask>
         via: <gateway>
       ```

       Specify:

       * `<ip_address>` — the subnet to which a route is needed;
       * `<mask>` — the subnet mask to which a route is needed;
       * `<gateway>` — the gateway for the current server's subnet, such as the gateway specified on the global router. The gateway address must be in the same subnet as the server.

    4. If you need to specify multiple routes, add them sequentially in the same block, for example:

       ```bash
       routes:
       - to:  192.168.0.0/28
         via: 192.168.0.1
       - to:  192.168.1.0/28
         via: 192.168.0.1
       ```

    5. Exit the `vi` text editor saving your changes:

       ```bash
       :wq
       ```

    6. Check the route configuration:

       ```bash
       sudo netplan try
       ```

    7. Apply the changes:

       ```bash
       netplan apply
       ```
  </TabItem>

  <TabItem value="debian">
    <TabItemLabel>
      Debian
    </TabItemLabel>

    1. [Connect to the server](/dedicated/manage/connect-to-server.mdx).

    2. Open the network interfaces configuration file with the `vi` text editor:

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

    3. At the end of the block with the parameters of the corresponding network interface, add the required route:

       ```bash
       up route add -net <ip_address> netmask <mask> gw <gateway>
       down route del -net <ip_address> netmask <mask> gw <gateway>
       ```

       Specify:

       * `<ip_address>` — the subnet to which a route is needed, for example, `192.168.0.0`;
       * `<mask>` — the subnet mask to which a route is needed, for example, `255.255.255.0`;
       * `<gateway>` — the gateway for the current server's subnet, such as the gateway specified on the global router. The gateway address must be in the same subnet as the server

    4. If you need to specify multiple routes, add them sequentially in the same block.

    5. Exit the `vi` text editor saving your changes:

       ```bash
       :wq
       ```

    6. Restart the network:

       ```bash
       sudo /etc/init.d/networking restart
       ```
  </TabItem>

  <TabItem value="centos">
    <TabItemLabel>
      CentOS
    </TabItemLabel>

    1. [Connect to the server](/dedicated/manage/connect-to-server.mdx).

    2. Create and fill in a file to configure static routes:

       ```bash
       echo "<ip_address>/<mask> via <gateway>" >> /etc/sysconfig/network-scripts/route-<eth_name>
       ```

       Specify:

       * `<ip_address>` — the subnet to which a route is needed;
       * `<mask>` — the subnet mask to which a route is needed;
       * `<gateway>` — the gateway for the current server's subnet, such as the gateway specified on the global router. The gateway address must be in the same subnet as the server;
       * `<eth_name>` — the name of the corresponding LAN interface.

    3. If you need to add several routes, specify them in a single command. Start each route on a new line, for example:

       ```bash
       echo "192.168.0.0/28 via 172.16.0.1
       192.168.1.0/28 via 172.16.0.1" >> /etc/sysconfig/network-scripts/route-eno2
       ```

    4. Restart the network:

       ```bash
       systemctl restart network
       ```
  </TabItem>

  <TabItem value="windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. [Connect to the server via RDP](/dedicated/manage/connect-to-server.mdx#connect-via-rdp) or using the [KVM console](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Add the required routes one by one:

       ```bash
       route -p ADD <ip_address> MASK <mask> <gateway> METRIC <x>
       ```

       Specify:

       * `<ip_address>` — the subnet to which a route is needed, for example, `192.168.0.0`;
       * `<mask>` — the subnet mask to which a route is needed, for example, `255.255.255.0`;
       * `<gateway>` — the gateway for the current server's subnet, such as the gateway specified on the global router. The gateway address must be in the same subnet as the server;
       * `<x>` — a parameter that specifies the priority of the defined gateway, 1 being the highest priority.
  </TabItem>
</Tabs>

## Example of organizing static routes to connect dedicated servers and a cloud server via a private network \{#example-of-static-routes-to-connect-dedicated-and-cloud-servers}

### Configuration goal \{#configuration-purpose-dedicated-to-cloud}

Connect two dedicated servers in the SPB-2 pool and a cloud server in the ru-2 pool with a private network using a global router, and configure routing in the network so that the devices can see each other.

### What you need for configuration \{#what-is-required-dedicated-to-cloud}

In the configuration example, we used two dedicated servers in the SPB-2 pool with access to a private network and a cloud server in the ru-2 pool.

### Configuration result \{#configuration-result-dedicated-to-cloud}

Private connectivity will be configured between two dedicated servers in the SPB-2 pool and a cloud server in the ru-2 pool.

![](https://423.selcdn.ru/kb/dedic-static-routes-example-connect-dedicated-and-cloud-servers-LANG-THEME.png)

### Configuration steps \{#configuration-steps-dedicated-to-cloud}

1. [Create a global router](/global-router/create-network/create-global-router-network.mdx#create-global-router).

2. [Connect private subnets to the global router](/global-router/create-network/create-global-router-network.mdx#connect-networks-and-subnets-to-global-router):

   * `192.168.0.0/28` for the VLAN containing the dedicated servers in the SPB-2 pool;
   * `172.16.0.0/28` for the cloud platform project in the ru-2 pool.

3. Assign IP addresses from the private subnets you connected to the global router to the dedicated servers and the cloud server. For more details, see the [Assigning IP addresses to servers](/global-router/create-network/create-global-router-network.mdx#assign-ip-addresses-on-servers) subsection.

4. Specify routes:

   * on each [dedicated server](#write-routes-on-server) in the SPB-2 pool — to the `172.16.0.0/28` subnet through gateway `192.168.0.1`;
   * on the [cloud server](/cloud-servers/cloud-networks/static-routes/) in the ru-2 pool — to the `192.168.0.0/28` subnet through gateway `172.16.0.1`.

## Example of organizing static routes to route internet traffic through a firewall \{#example-of-static-routes-to-route-traffic-via-firewall}

### Configuration goal \{#configuration-purpose-route-traffic-via-firewall}

Route internet traffic to a dedicated server through a firewall.

### What you need for configuration \{#what-is-required-route-traffic-via-firewall}

In the configuration example, we used a dedicated server with access to a private network and a firewall.

### Configuration result \{#configuration-result-route-traffic-via-firewall}

After setting up the routed networks, internet traffic to the dedicated server will pass through the [firewall](/firewalls/about/about-firewalls.mdx).

![](https://423.selcdn.ru/kb/dedic-static-routes-example-connectivity-via-firewall-LANG-THEME.png)

### Configuration steps \{#configuration-steps-route-traffic-via-firewall}

1. [Specify a static route on the dedicated server](#write-routes-on-server) to the `0.0.0.0/0` subnet via gateway `198.51.100.1`.

2. Specify a default gateway on the firewall `203.0.113.2`.

3. For the dedicated server behind the firewall to have internet access, [create a ticket](https://my.selectel.ru/tickets/create/) requesting that a static route be added to the Selectel router. In the ticket, specify:

   * the private subnet of the dedicated server that is behind the firewall, in this example — `198.51.100.0/28`;
   * the public IP address of the firewall, in this example — `203.0.113.2`.

4. Wait for a response from a Selectel employee confirming that the static route has been specified on the router.

## Example of organizing static routes for connectivity with external infrastructure through a firewall \{#example-of-static-routes-to-connect-to-external-infrastructure-via-firewall}

### Configuration goal \{#configuration-purpose-connect-to-external-infrastructure}

Connect two dedicated servers in the MSK-1 and SPB-2 pools with external infrastructure via a private network. Using a global router, configure routing in the network so that the devices can see each other, and direct traffic from routed networks through a firewall in the SPB-3 pool.

### What you need for configuration \{#what-is-required-connect-to-external-infrastructure}

In the configuration example, we used two dedicated servers in the MSK-1 and SPB-2 pools with access to a private network, a firewall in the SPB-3 pool, and external infrastructure.

### Configuration result \{#configuration-result-connect-to-external-infrastructure}

Private connectivity will be configured between the external infrastructure and the servers in the MSK-1 and SPB-2 pools; traffic from routed networks will pass through the firewall in the SPB-3 pool.

![](https://423.selcdn.ru/kb/dedic-static-routes-example-connectivity-to-external-infrastructure-LANG-THEME.png)

### Configuration steps \{#configuration-steps-route-connect-to-external-infrastructure}

1. [Create a global router](/global-router/create-network/create-global-router-network.mdx#create-global-router).

2. [Connect subnets to the global router](/global-router/create-network/create-global-router-network.mdx#connect-networks-and-subnets-to-global-router):

   * `192.168.11.0/24` for the VLAN containing the dedicated server in the MSK-1 pool;
   * `192.168.22.0/24` for the VLAN containing the dedicated server in the SPB-2 pool;
   * `192.168.33.0/24` for the VLAN containing the firewall in the SPB-3 pool.

3. Assign IP addresses from the private subnets you connected to the global router to the dedicated servers. For more details, see the [Assigning IP addresses to servers](/global-router/create-network/create-global-router-network.mdx#assign-ip-addresses-on-servers) subsection.

4. Assign an IP address from the private subnet that you connected to the global router to the firewall.

5. [Specify routes on the servers](#write-routes-on-server):

   * in the MSK-1 pool — to the subnets `192.168.22.0/24` and `192.168.33.0/24` through gateway `192.168.11.1`;
   * in the SPB-2 pool — to the subnets `192.168.11.0/24` and `192.168.33.0/24` through gateway `192.168.22.1`;

6. Specify routes on the firewall — to the subnets `192.168.11.0/24` and `192.168.22.0/24` through gateway `192.168.33.1`.

7. [Configure routing on the global router](/global-router/create-network/create-global-router-network.mdx#configure-routing-on-global-router) — specify a static route for outgoing internet traffic. Specify:

   * destination subnet — `0.0.0.0/0`;
   * Next hop — IP address of the firewall, in this example `192.168.33.2`.

<Formbricks />
