Прозрачное IP-туннелирование с защитой от проводов

Допустим, у меня есть node1 и node2, подключенные через Интернет. Сервер приложений на узле node1 имеет IP acl для IP узла 2.

В целях безопасности я открываю туннель Wireguard между узлами. Я хотел бы сохранить настройки приложения такими же (отсюда "transparent" в заголовке вопроса), однако я столкнулся со следующей проблемой:

Node2 использует свой адрес источника vpn при общении с сервером приложений на узле 1, у которого нет этого IP-адреса в ACL.

Это обычная проблема в настройках VPN или просто выбор реализации Wireguard? Кто-нибудь знает элегантное решение? Дополнительная конфигурация на сетевом уровне подойдет.Изменение ACL на уровне приложения в данном случае не вариант

До сих пор я пробовал использовать публичный адрес node1 в качестве адреса vpn, вводя политику source-nat, но это ужасно не работает в случае защиты от проводов, которая добавляет статический маршрут удаленной конечной точки туннеля к таблице маршрутизации; что приводит к следующему:

  • Узел 2 успешно использует свой существующий IP-адрес для связи с узлом 1
  • Сервер приложений узла 1 видит входящий пакет и отвечает
  • Стек IP узла 1 направляет пакет через глобальную сеть, а не через туннель Wireguard.
0
задан 28 June 2020 в 01:31
1 ответ

Если вы хотите использовать свой «нормальный» IP-адрес хоста для исходящего трафика, который проходит через туннель, в моем случае достаточно сделать следующее:

[Interface]
Address = 10.102.0.1/24
PostUp = iptables -t nat -A POSTROUTING -s 10.102.0.1/32 -o wg-p2p -j SNAT --to-source 1.2.3.4
PostDown = iptables -t nat -D POSTROUTING -s 10.102.0.1/32 -o wg-p2p -j SNAT --to-source 1.2.3.4
...

[Peer]
AllowedIPs = 10.102.0.0/24, 1.2.3.4/32
...

Итак, в основном вы настраиваете простой туннель wireguard, и только с магией iptables вы меняете свой исходный адрес, если это IP-адрес источника туннеля, на ваш «нормальный» IP-адрес в последний момент (POSTROUTING)

0
ответ дан 2 July 2020 в 22:23

Теги

Похожие вопросы