Gymterview
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.