middle
Что такое VPN и как настроить базовое VPN-соединение?
VPN (Virtual Private Network) — технология создания защищённого сетевого соединения поверх публичной сети (интернет), при которой весь трафик между участниками шифруется.
Аналогия: VPN — это закрытый тоннель внутри открытой дороги. Машины (пакеты) едут по общей трассе (интернет), но внутри тоннеля их никто не видит и не может перехватить.
Типы VPN
| Тип | Описание | Применение |
|---|---|---|
| Site-to-Site | Соединение двух сетей (офисов) | Связь между ЦОД |
| Remote Access | Подключение удалённого пользователя | Удалённая работа сотрудников |
| Client-to-Site | Аналог Remote Access | Разработчики подключаются к dev-среде |
Основные протоколы
| Протокол | Описание |
|---|---|
| IPSec | Классический, работает на сетевом уровне (L3), поддержка IKEv2 |
| WireGuard | Современный, простой, быстрый, минимум кода |
| OpenVPN | Работает через SSL/TLS, кроссплатформенный |
Настройка WireGuard
WireGuard — наиболее современный и простой VPN-протокол.
Сервер:
Пример
# Установка
sudo apt install wireguard
# Генерация ключей сервера
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key
chmod 600 /etc/wireguard/server_private.key
Конфигурация WireGuard (сервер и клиент)
# /etc/wireguard/wg0.conf (сервер)
[Interface]
PrivateKey = <server_private_key>
Address = 10.200.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <client_public_key>
AllowedIPs = 10.200.0.2/32
# /etc/wireguard/wg0.conf (клиент)
[Interface]
PrivateKey = <client_private_key>
Address = 10.200.0.2/24
DNS = 10.0.0.1
[Peer]
PublicKey = <server_public_key>
Endpoint = vpn.mybank.com:51820
AllowedIPs = 10.0.0.0/8, 172.16.0.0/12
PersistentKeepalive = 25
Пример
# Запуск
sudo wg-quick up wg0
# Автозапуск
sudo systemctl enable wg-quick@wg0
# Проверка
sudo wg show
Настройка IPSec (StrongSwan)
Конфигурация StrongSwan
sudo apt install strongswan
# /etc/ipsec.conf
conn bank-site-to-site
type=tunnel
left=203.0.113.1
leftsubnet=10.0.1.0/24
right=198.51.100.1
rightsubnet=10.0.2.0/24
authby=secret
auto=start
ike=aes256-sha256-modp2048
esp=aes256-sha256
# /etc/ipsec.secrets
203.0.113.1 198.51.100.1 : PSK "super-secret-psk"
sudo systemctl restart strongswan
sudo ipsec statusall
Применение
- Site-to-Site VPN — связь между основным ЦОД и резервным
- Remote Access VPN — подключение разработчиков к dev/staging-средам
- VPN для партнёров — подключение контрагентов к интеграционным шлюзам
- Split Tunneling — только корпоративный трафик через VPN, остальной напрямую
На собеседовании: интервьюер ожидает знание типов VPN (site-to-site vs remote access), различие протоколов (WireGuard vs OpenVPN vs IPSec) и понимание split tunneling. Частая ошибка — не знать WireGuard и описывать только OpenVPN.