
Фон
Я добавляю поддержку WireGuard VPN для встроенного устройства. Пользователь сможет AllowedIPs
самостоятельно задать конфигурацию. WireGuard использует разрешенные IP-адреса для установки маршрутов на хосте, поэтому пользователь сможет изолировать устройство (сделать невозможным подключение по TCP). Я думал о способах предотвращения этого.
Потенциальное решение
Одним из возможных решений является добавление правил IP для интерфейсов хоста, так что любой трафик с исходным IP интерфейса всегда будет маршрутизироваться через этот интерфейс. Если бы у нас был один интерфейс хоста eth0 с IP 172.17.0.2 и один интерфейс wireguard wg0 с IP 172.22.0.4, конфигурация выглядела бы примерно так:
ip route add default via 172.17.0.1 dev eth0 table 1
ip rule add from 172.17.0.2 table 1
Это означает, что соединения, исходящие от устройства, по-прежнему должны маршрутизироваться обычным образом, но если кто-то подключается к устройству с использованием TCP (для HTTP или ssh), ответы должны быть перенаправлены обратно.
Вопросы
На первый взгляд это выглядит как очень элегантное решение, но я не могу отделаться от мысли, что это не по умолчанию по веской причине. Я просто не думал, что это может быть за причина. Это плохая идея? Добавит ли это потенциальной уязвимости устройству или что-то подобное? Есть ли лучший способ достичь желаемой цели — избежать изоляции устройства?