- Есть ли способ показать IP-адрес источника как 10.8.0.2 (IP-адрес клиента wireguard)?
Вероятно, у вас также есть правило iptables, работающее в контейнере, которое выглядит так:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Это то, что изменяет исходный IP-адрес соединений, перенаправляемых через контейнер WireGuard. При вашем текущем подходе, чтобы избежать использования этого правила, вам придется настроить маршрутизацию в каждом из других контейнеров, чтобы использовать контейнер WireGuard в качестве шлюза для удаленного клиента WireGuard.
- Создает ли это какие-либо риски для безопасности?
Удаленный клиент WireGuard может получить доступ к любым сетевым службам, к которым может получить доступ сам контейнер WireGuard.
- Есть лучший способ это сделать?
Простейшей альтернативой будет запуск других контейнеров в собственном сетевом пространстве имен контейнера WireGuard, например:
Сначала запустите контейнер WireGuard с именем, например мой-WG-контейнер
:
sudo докер запустить \
--cap-добавить NET_ADMIN \
--name мой-wg-контейнер \
--опубликовать 51820:51820/udp \
--rm \
--volume /srv/my-wg-container/conf:/etc/wireguard \
procustodibus/wireguard
Затем запустите другие контейнеры в сетевом пространстве имен контейнера WireGuard с параметром --сетевой контейнер: мой-wg-контейнер
вариант:
sudo докер запустить \
--name мой-веб-сервер \
--сетевой контейнер: мой-wg-контейнер \
--rm \
нгинкс
Если контейнер WireGuard использует 10.8.0.1
по адресу его интерфейса WireGuard (как в вашем примере) вы можете получить доступ к веб-серверу, работающему в мой веб-сервер
контейнер в http://10.8.0.1/
с удаленного клиента WireGuard. См. Использование для контейнерной сети раздел этого Руководство по контейнерам WireGuard для полного примера.
При таком подходе вам не нужно делать ничего особенного с другими контейнерами (кроме присоединения их к контейнеру WireGuard), а удаленный клиент WireGuard может получать доступ только к службам в прикрепленных контейнерах (вместо любых других сетевых служб, доступных для контейнер WireGuard).