Вопрос или проблема
Мне удалось подключиться по SSH к серверу, который подключен к OpenVPN, запустив следующее на сервере и перенаправив соответствующий порт…
# создание виртуального интерфейса
ip addr add "$ip" dev "$devname" label "$devname":0
# создание маршрутизирующей таблицы
ip rule add from "$ip" table 401
# добавление маршрута по умолчанию
ip route add default via "$dgateway" dev "$devname":0 table 401
Это работает, несмотря на то, что сервер подключен к OpenVPN. Это не работает, когда сервер подключен к Wireguard VPN.
Вот мой файл конфигурации Wireguard
[Interface]
Address = $(echo "$wireguard_json" | jq -r '.peer_ip')
PrivateKey = $privKey
[Peer]
PersistentKeepalive = 25
PublicKey = $(echo "$wireguard_json" | jq -r '.server_key')
AllowedIPs = 0.0.0.0/0
Endpoint = ${WG_SERVER_IP}:$(echo "$wireguard_json" | jq -r '.server_port')
Почему это не работает с Wireguard, но работает с OpenVPN? Как мне подключиться к серверу, работающему с Wireguard VPN подключением?
Ответ или решение
Когда вы пытаетесь подключиться к серверу, который использует WireGuard в качестве VPN-клиента, и не можете выполнить SSH-подключение, это может быть связано с тем, как WireGuard обрабатывает маршруты и IP-адреса. Понимание этих нюансов поможет вам успешно настроить соединение.
Почему не работает SSH через WireGuard
Сравнивая с OpenVPN, WireGuard использует более современный подход к маршрутизации:
-
Маршрутизация по умолчанию: В вашем WireGuard конфигурационном файле
AllowedIPs = 0.0.0.0/0
означает, что весь трафик будет отправляться через VPN. Это может привести к тому, что запросы SSH (на ваш сервер) будут теряться, поскольку маршрут не указывает на локальные сети. -
Отсутствие правил маршрутизации: В отличие от OpenVPN, который может легко интегрировать дополнительные правила маршрутизации, WireGuard требует более тщательной настройки маршрутов для корректной работы.
Как подключиться к серверу с WireGuard
Для того чтобы успешно подключиться к серверу, работающему под управлением WireGuard, необходимо внести изменения в конфигурацию маршрутизации.
- Измените конфигурацию WireGuard:
Вам необходимо указать в AllowedIPs
только те IP-адреса, которые должны маршрутизироваться через VPN. Если вы хотите, чтобы ваш сервер сохранял доступ к локальным IP, вам следует изменить вашу конфигурацию следующим образом:
[Peer]
AllowedIPs = <ваш_локальный_IP>/32
Этот параметр ограничит маршрутизацию и позволит оставаться доступным локальным адресу вашего сервера.
- Настройка маршрутов:
Добавьте правила маршрутизации, чтобы SSH мог корректно обрабатывать запросы:
# Создание таблицы маршрутизации
ip rule add from <ваш_локальный_IP> table 401
# Добавление маршрута по умолчанию
ip route add default via <ваш_шлюз> dev wg0 table 401
Замените <ваш_локальный_IP>
и <ваш_шлюз>
на соответствующие значения вашего сервера.
- Проверьте Firewal:
Убедитесь, что ваш firewall (iptables или другой) не блокирует порты для SSH. Команда для проверки может выглядеть следующим образом:
sudo iptables -L -n
Убедитесь, что порты 22 открыт для входящих подключений.
- Перезапустите WireGuard:
После внесения изменений необходимо перезапустить сервис WireGuard, чтобы они вступили в силу:
sudo systemctl restart wg-quick@wg0
(Замените wg0
на имя вашего интерфейса WireGuard).
Заключение
С помощью этих шагов вы сможете настроить корректное подключение SSH к вашему серверу, использующему WireGuard. Ключевыми моментами здесь являются точная настройка маршрутизации и обновление правил доступа. Правильная конфигурация позволяет оптимально использовать все преимущества WireGuard без ущерба для доступности сервера. Надеюсь, это поможет вам эффективно использовать WireGuard для ваших нужд.