Вы не можете использовать один и тот же адрес в клиентской Конечная точка и Разрешенные 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