Introduction: This tutorial explains how to add a new client server to a private cloud network with a self-hosted gateway. At server creation, we will use a cloud-config script which adds a new route to the server so that all outgoing traffic is sent to the self-hosted gateway (10.0.0.1). The self-hosted gateway then forwards this traffic to your self-hosted gateway. You don't need a public interface (no public IP address) or configure any static routes to your self-hosted gateway. If your gateway has a DNS server, it will be used by your new server.

Prerequisites:

  • Self-hosted gateway in your private Cloud Network

Example Terminology:

  • Private Network: 10.1.0.0/24
  • Self-hosted gateway: 10.1.0.1
  • DNS nameservers: 185.12.64.3 and 185.12.64.4

Step 1 - Prepare "netplan" Configuration

We want cloud-config to create a file (/etc/netplan/51-netcfg.yaml) to set a default route.

Create or edit the netplan configuration file using your preferred text editor:

network: version: 2 ethernets: ens10: dhcp4: true routes: - to: 0.0.0.0/0 via: 10.1.0.1

In this configuration:

  • ens10 is the interface name of your private network.
  • We need to send all outgoing traffic to the self-hosted gateway (10.1.0.1).

Step 2 - Prepare "resolved" Configuration

In this example, we are using alternate DNS servers, but you can also use other DNS servers. Change the /etc/systemd/resolved.conf file:

Edit the /etc/systemd/resolved.conf file:

[Resolve] DNS=185.12.64.3 185.12.64.4

Step 3 - Build the Cloud-Config Script

Now we need to combine both configurations from the first two steps into one cloud-config script. After the two files are written, the cloud-config script will reboot the server.

Create a cloud-config script, for example, cloud-config.yaml, and add the following content:

#cloud-config write_files: - path: /etc/netplan/51-netcfg.yaml permissions: '0644' content: | network: version: 2 ethernets: ens10: dhcp4: true routes: - to: 0.0.0.0/0 via: 10.1.0.1 - path: /etc/systemd/resolved.conf content: | [Resolve] DNS=185.12.64.3 185.12.64.4 runcmd: - reboot

This script includes both the netplan and resolved configurations. It will write these configurations and then reboot the server.

Step 4 - Create a New Server

Open the cloud hosting provider's console and create a new Ubuntu 22.04 server. Add the server to your private network only, and ensure that there are no public interfaces.

Use the cloud-config script created in "Step 3". Make any necessary changes to fit your environment and paste it into the "Cloud config" configuration text box during the server creation process. Create your server and allow some time for it to reboot.

Step 5 - Verify Your Configuration

If you have a VPN connection to your self-hosted gateway, you should be able to SSH into the created server.

If not, you can use the VNC console in the cloud hosting provider's user interface.

Verify DNS Server:

resolvectl status

You should see your configured DNS server.

Verify Default Route:

ip route

You should see a default route:

default via 10.1.0.1 dev ens10 proto static onlink

Conclusion: You have successfully configured a new server with cloud-config to use the self-hosted gateway as a default route for outgoing traffic and to use your own DNS servers. This setup allows your server to connect to the private network through the self-hosted gateway without the need for a public interface or static routes.

Esta resposta lhe foi útil? 124 Usuários acharam útil (265 Votos)