У меня так и не получилось завести эту конфигурацию. Есть подозрение, что протокол блокируется на стороне провайдера интернета.
Пререквизиты:
- Роутер Mikrotik с RouterOS v7.20 или новее
- Сервер Linux (Ubuntu 24) с белым IP
- Ваш провайдер блокирует протокол Wireguard (более предпочтителен для VPN)
- Вы не хотите использовать экзотические решения через Containers (такие как VLESS)
- У вас слабенький роутер, нужно сохранить аппаратное ускорение
Схема работы:
1. Клиент домашней сети (например телефон) пытается зайти на заблокированный ресурс
2. Роутер Mikrotik перехватывает сетевые пакеты до этого ресурса и заворапчивает трафик в зашифрованный туннель
3. Далее трафик идёт через туннель до нашего VPN сервера Linux (Ubuntu 24), с которого далее до запрашиваемого ресурса.
- Установка StrongSwan
sudo apt update && sudo apt install strongswan strongswan-pki
- Создание конфигурационного файла
/etc/ipsec.conf:
config setup
charondebug="ike 2, knl 2"
conn %default
ikelifetime=24h
lifetime=8h
rekeymargin=3m
keyingtries=1
keyexchange=ikev2
authby=secret
conn mikrotik-to-linux
left=ВАШ_СТАТИЧЕСКИЙ_IP # Белый IP Linux-сервера
leftid=@server
leftsubnet=0.0.0.0/0 # Сервер готов маршрутизировать любой трафик
leftfirewall=yes
right=%any # Любой клиент (Mikrotik)
rightid=%any
rightsourceip=10.10.10.0/24 # Пул адресов для клиентов
auto=add
Обратите внимание, что вам нужно заменить ВАШ_СТАТИЧЕСКИЙ_IP на белый IP вашего Linux сервера.
- Создание файла с секретным ключом
/etc/ipsec.secrets:
: PSK "ВАШ_СЕКРЕТНЫЙ_КЛЮЧ"
Обратите внимание, что вам нужно заменить ВАШ_СЕКРЕТНЫЙ_КЛЮЧ на любую другую случайную строку.
- Перезапускаем сервис и включим автозапуск
sudo systemctl restart strongswan-starter
sudo systemctl enable strongswan-starter
- Проверим логи, не должно быть ошибок:
sudo journalctl -u strongswan-starter -n 50
- Создаём новый /IP/IPsec/Proposal
Name = linux-tunnel
Auth. Algorithms = sha256
Encr. Algorithms = aes-256-gcm,aes-256-cbc
Lifetime = 08:00:00
PFS Group = modp2048
- Создаём новый /IP/IPsec/Profile
Name = linux-tunnel
Hash Algorithms = sha256
PRF Algorithms = auto
Encryption Algorithm = aes-256
DH Group = modp2048
Proposal Check = obey
Lifetime = 1d
Lifebytes оставить пустым
NAT Traversal = yes
DPD Interval = 30s
DPD Maximum Failures = 4
- Создаём новый /IP/IPsec/Peer
Name = vpn-server1
Address = СТАТИЧЕСКИЙ_IP_LINUX_СЕРВЕРА
Port = 500
Local Address оставить пустым
Profile = linux-tunnel
Exchange Mode = IKE2
Passive = no
Send INITIAL_CONTACT = yes
- Создаём новый /IP/IPsec/Identity
Peer = vpn-server1
Auth Method = pre shared key
Secret = ВАШ_СЕКРЕТНЫЙ_КЛЮЧ_С_LINUX_СЕРВЕРА
Policy Template Group = default
Notrack Chain оставить пустым
My ID Type = auto
Remote ID Type = auto
Match By = remote id
Mode Configuration = request-only
Generate Policy = no
- Создаём новый /IP/IPsec/Policy
Peer = vpn-serve1
Tunnel = yes
Src. Address = ПОДСЕТЬ_ВАШЕЦ_ДОМАШНЕЙ_СЕТИ (чаще всего 192.168.88.0/24)
Src. Port оставить пустым
Dst. Address = 10.10.10.1/32
Dst. Port оставить пустым
Protocol = all
Template = no
Action = encrypt
Level = require
IPsec Protocols = esp
Proposal = linux-tunnel