Введение
В этом руководстве мы сделаем краткое описание Hetzner Cloud Сети — частные сети для Hetzner Cloud.
Мы предоставляем несколько вариантов управления Hetzner Cloud Сети:
- Веб-панель Hetzner Cloud Console
- Утилита командной строки hcloud
- Hetzner Cloud API
В данном руководстве мы будем использовать утилиту командной строки hcloud
.
Требования
- Токен Hetzner Cloud API
- Базовые знания о Hetzner Cloud
- Мы предполагаем, что вы знаете что такое сервер, образ, тип сервера или том.
- Откройте Hetzner Cloud Console https://console.hetzner.cloud, выберите проект и создайте новый API токен.
- Базовые знания о Hetzner Cloud
- установлена последняя версия
hcloud
(> 1.13.0)
Что такое Сети?
Сети — это бесплатная функция Hetzner Cloud, которая позволяет создавать частные IPv4 сети между облачными серверами. Например, можно создать сервер базы данных, доступный только в частной сети и не привязывать его к интерфейсу публичной сети.
Пожалуйста, используйте диапазоны адресов, указанные в RFC1918:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
Сама Сеть глобально доступна, каждая Сеть может иметь до 50 подсетей. К Сети можно подключить до 100 серверов. Например, Сеть может иметь диапазон IP 10.0.0.0/8
, подсеть может быть 10.0.0.0/24
и сервер в этой подсети может иметь IP 10.0.0.2
.
Шаг 1 — Настройка тестовой среды
Прежде чем мы сможем начать, нам нужно настроить тестовую среду. Нам нужно как минимум два сервера, чтобы продемонстрировать использование Сетей. Для теста достаточно двух серверов модели CX11. Создаем их с помощью CLI следующими командами:
hcloud server create --name node-1 --type cx11 --image ubuntu-18.04
hcloud server create --name node-2 --type cx11 --image ubuntu-18.04
Далее создадим новую сеть и подсеть. Будем использовать диапазон 10.0.0.0/8
, поэтому каждый сервер, подключенный к этой сети, получит IP из этого диапазона.
hcloud network create --name my-network --ip-range 10.0.0.0/8
Теперь создадим подсеть в этой сети. Укажем, что подсеть находится в зоне eu-central
, которая включает в себя местоположения hel1
, fsn1
и nbg1
, имеет тип server
и диапазон ip 10.0.0.0/24
, поэтому каждый подключенный сервер получит ip из этого диапазона.
hcloud network add-subnet my-network --network-zone eu-central --type server --ip-range 10.0.0.0/24
Осталось подключить серверы к сети. На этом шаге можно не указывать IP для сервера так как Hetzner Cloud способен выбрать свободный IP, но можно и указать.
hcloud server attach-to-network node-1 --network my-network
hcloud server attach-to-network node-2 --network my-network --ip 10.0.0.7
Теперь оба сервера должны иметь IP-адреса из вашей Сети. node-1
должен иметь IP 10.0.0.2
и node-2
должен иметь IP 10.0.0.7
. Это можно проверить с помощью команд hcloud server describe node-1
и hcloud server describe node-2
. При выполнении этой команды вы должны увидеть вывод, похожий на этот:
Name: node-1
[...]
Private Net:
- ID: 21
Name: my-network
IP: 10.0.0.2
Alias IPs: -
Поздравляем! Вы создали свою первую сеть и подключили к ней серверы. IP-адреса должны быть уже настроены. Давайте подключимся к серверам и проверим IP-адреса.
hcloud server ssh node-1
Вы должны увидеть что-то вроде IP address for ens7: 10.0.0.2
в приветственном сообщении с вашего сервера!
Шаг 2 — Сети в действии
Вы успешно настроили сети, теперь давайте сделаем несколько небольших тестов. Для начала откроем два окна терминала и подключимся к серверам.
Первое окно:
hcloud server ssh node-1
Второе окно:
hcloud server ssh node-2
Теперь выполним пинг от каждого узла.
Первое окно:
ping 10.0.0.7
Второе окно:
ping 10.0.0.2
Вы должны увидеть аналогичный вывод в каждом окне:
Первое окно:
root@node-1:~# ping 10.0.0.7
PING 10.0.0.7 (10.0.0.7) 56(84) bytes of data.
64 bytes from 10.0.0.7: icmp_seq=1 ttl=63 time=0.464 ms
64 bytes from 10.0.0.7: icmp_seq=2 ttl=63 time=0.969 ms
Второе окно:
root@node-2:~# ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=63 time=2.89 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=63 time=0.630 ms
Серверы могут иметь доступ друг к другу через частную сеть.
Посмотрим, как идет трафик между этими узлами.
Выполним mtr
на node-1
.
Первое окно:
mtr 10.0.0.7
Вы должны получить результат, подобный этому:
Packets Pings
Host Loss% Snt Last Avg Best Wrst StDev
1. 10.0.0.1 0.0% 45 8.8 7.8 5.4 11.1 1.0
2. 10.0.0.7 0.0% 44 0.6 0.7 0.5 2.0 0.3
Как видите, пакеты к 10.0.0.7
идут через шлюз (10.0.0.1
) и затем непосредственно к месту назначения 10.0.0.7
! Между ними больше никого нет. Чтобы показать разницу выполним mtr
на публичный IP-адрес node-2
. В нашем примере публичный IP 203.0.113.XX
.
Первое окно:
mtr 203.0.113.XX # укажите настоящий публичный IP-адрес node-2
Результат:
1. _gateway 0.0% 4 0.2 0.2 0.1 0.2 0.0
2. XXXXX.your-cloud.host 0.0% 4 0.3 0.7 0.3 1.9 0.8
3. XXX.cloud1.YYYYYY.hetzner.com 0.0% 4 13.5 15.3 13.5 19.0 2.5
4. YYYYY.your-cloud.host 0.0% 4 0.6 0.6 0.3 1.0 0.3
5. ???
6. static.XX.113.0.203.clients.your 0.0% 3 0.5 0.6 0.5 0.6 0.1
В противоположность частным сетям, на общедоступном интерфейсе нет прямого соединения между узлами.
Вывод
Теперь у вас есть краткий обзор функции Hetzner Cloud Сети. Как вы можете видеть, существует множество способов использования данной функции, таких как базы данных, kubernetes или безопасное подключение к серверам через vpn.