Вы не можете использовать один и тот же адрес в клиентской Конечная точка
и Разрешенные IP-адреса
настройки*. Конечная точка
должен быть адрес сервера вне туннель и Разрешенные IP-адреса
должен включать все адреса, к которым вы хотите иметь доступ внутри туннель.
Чтобы это исправить, избавьтесь от источник
настройка маршрута, который вы добавили на сервер, так что маршрут будет использовать только адрес сервера докер0
интерфейс:
IP-маршрут добавить 10.254.99.0/24 через 172.17.0.2 dev docker0
Затем измените клиент WireGuard Разрешенные IP-адреса
настройка для включения адреса сервера докер0
интерфейс (172.17.0.1
):
Разрешенные IP-адреса = 10.254.99.1/32, 172.17.0.1/32
Теперь ваш сервер будет использовать свой докер0
адрес интерфейса (172.17.0.1
) в качестве источника пакетов, которые он отправляет через вашу сеть WireGuard.
Однако вместо того, чтобы добавлять этот дополнительный уровень маршрутизации на ваш сервер, проще всего будет запустить контейнер WireGuard в сетевом режиме «хост» (используя --сеть=хост
флаг с докер запустить
, или network_mode: хост
установка с docker-compose
).Это выставит контейнер WireGuard WG0
интерфейс напрямую к хосту, поэтому вам не потребуются дополнительные правила маршрутизации на сервере, и вам не нужно будет добавлять дополнительные Разрешенные IP-адреса
клиенту.
В этом случае сервер просто будет использовать собственный интерфейс WireGuard. 10.254.99.1
адрес в качестве источника пакетов, которые он отправляет через вашу сеть WireGuard.
* если вы не настроили какие-то причудливые правила маршрутизации/фильтрации пакетов на своем клиенте вместо использования значений по умолчанию, которые устанавливает для вас клиент WireGuard