Freebsd

IPsec site-to-site на ИКС: как связать две сети и не запутаться в NAT

IPsec-туннель может показывать статус «подключён», но пользователи всё равно не увидят удалённый сервер. Обычно виноват не сам IPsec, а пересекающиеся сети, NAT, firewall или отсутствующий обратный маршрут. Поэтому настройку начинаем не с кнопки «создать туннель», а со схемы.

Что получим в итоге

  • две локальные сети будут обмениваться трафиком через зашифрованный туннель;
  • межофисный трафик не попадёт под обычный NAT в интернет;
  • firewall будет пропускать только нужные направления;
  • появится понятный порядок диагностики;
  • будет готов сценарий быстрого отката.

1. Рисуем схему

Офис A LAN: 192.168.10.0/24
Офис A WAN: 203.0.113.10
Офис B LAN: 192.168.20.0/24
Офис B WAN: 198.51.100.20
Тестовый сервер A: 192.168.10.10
Тестовый сервер B: 192.168.20.10

Подсети не должны пересекаться. Если обе стороны используют, например, 192.168.1.0/24, маршрутизатор не сможет понять, где находится адрес назначения.

2. Проверяем базовую доступность

ping 198.51.100.20
traceroute 198.51.100.20
nslookup vpn-office-b.example.ru

До настройки туннеля обе стороны должны видеть внешние адреса друг друга. Если один офис находится за CGNAT, обычный входящий IPsec может не подняться без дополнительной схемы.

3. Настраиваем IKE

На обеих сторонах должны совпадать версия IKE, алгоритмы шифрования, хэш, группа Диффи—Хеллмана, время жизни и способ аутентификации. Для нового туннеля разумно использовать IKEv2, AES-GCM или AES-CBC с SHA-256 и современную DH-группу.

  • тип: site-to-site;
  • IKE: IKEv2;
  • аутентификация: общий PSK или сертификаты;
  • локальный peer: внешний адрес офиса A;
  • удалённый peer: внешний адрес офиса B;
  • DPD: включён;
  • NAT-T: включён.

PSK должен быть длинным и уникальным. Не используйте пароль от администратора или название компании.

4. Настраиваем локальные и удалённые сети

На стороне A локальная сеть — 192.168.10.0/24, удалённая — 192.168.20.0/24. На стороне B эти значения меняются местами. Именно эти selectors определяют, какой трафик попадёт в Child SA.

5. Исключаем VPN-трафик из NAT

Общий masquerade для выхода в интернет не должен менять адреса пакетов между офисами. В ИКС создайте правило исключения выше общего NAT: источник 192.168.10.0/24, назначение 192.168.20.0/24, действие — не выполнять NAT. На второй стороне сделайте зеркальное правило.

Если исключение стоит ниже общего masquerade, туннель может подняться, но пакет уйдёт с неправильным исходным адресом.

6. Настраиваем firewall

  • разрешите UDP 500 между внешними адресами;
  • разрешите UDP 4500 для NAT-T;
  • разрешите ESP, если он используется напрямую;
  • разрешите транзит из 192.168.10.0/24 в 192.168.20.0/24;
  • создайте зеркальное правило на второй стороне.

Для первого теста можно разрешить ICMP и один конкретный сервис, например TCP 22 или 443. Не открывайте всю удалённую сеть навсегда только ради удобства.

7. Проверяем установление туннеля

В интерфейсе ИКС проверьте IKE SA и Child SA. В рабочем состоянии должны быть видны внешний peer, согласованные алгоритмы, локальная и удалённая сети, время жизни и счётчики переданных байтов.

ping -c 3 192.168.20.10
traceroute 192.168.20.10
nc -vz 192.168.20.10 443

Проверяйте с реального хоста внутри LAN, а не только со шлюза. Трафик со шлюза может идти с другим исходным адресом и не попадать под нужный selector.

8. Проверяем обратный маршрут

Если запрос доходит до удалённого сервера, но ответа нет, проверьте его шлюз по умолчанию. Ответ должен вернуться через ИКС удалённого офиса, а не через другой маршрутизатор.

ip route
route print
traceroute 192.168.10.10

9. DNS между офисами

Если доступ по IP работает, а по имени нет, сам IPsec уже исправен. Настройте forwarding нужной внутренней DNS-зоны или выдайте клиентам DNS-сервер, который знает записи второго офиса.

nslookup server-b.corp.local
dig server-b.corp.local A
nslookup server-b.corp.local 192.168.20.2

10. MTU и зависающие соединения

IPsec добавляет служебные заголовки. Поэтому маленький ping может работать, а RDP, HTTPS или передача файлов — зависать. Проверьте путь пакетами с запретом фрагментации.

ping -M do -s 1400 192.168.20.10
ping -M do -s 1360 192.168.20.10

Если меньший пакет проходит, а больший нет, уменьшите MTU/MSS на туннеле или устраните блокировку ICMP Fragmentation Needed.

11. Что означают типовые ошибки

  • no proposal chosen — не совпадают алгоритмы;
  • authentication failed — неверный PSK или сертификат;
  • traffic selectors unacceptable — не совпадают локальные и удалённые сети;
  • SA поднята, байты не растут — трафик не попадает в selector, мешает NAT или маршрут;
  • работает только в одну сторону — firewall или обратный маршрут.

12. Откат

Перед изменениями экспортируйте конфигурацию ИКС и сделайте скриншоты текущих NAT и firewall правил. Для отката отключите новый туннель, удалите только созданные для него исключения NAT и правила доступа, затем восстановите прежнюю конфигурацию.

Критерий успеха: Child SA установлена, счётчики растут, тестовые хосты видят друг друга в обе стороны, внутренние имена разрешаются, крупные соединения не зависают, а межофисный трафик не маскируется внешним адресом.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *