Запуск Wireguard отключает SSH доступ к машине

У меня есть машина C, с которой я могу подключиться по SSH со своей машины B. Но когда C использует Wireguard для подключения к Интернету через машину A, я больше не могу подключить SSH к ней из B. Что мне делать?

2 ответа

Это потому, что вы больше не находитесь в частной сети, которую вы создали, 10.0.0.x .

У вас есть два варианта: один ssh-автомат B с машины A или сторожевой аппарат C с B и ssh
тогда вы должны включить IP-пересылку:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# /sbin/iptables -A FORWARD -i eth0 -o wg0 -m state --state RELATED,ESTABLISHED 
 -j ACCEPT
# /sbin/iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT

Теперь вы можете SSH из C

Ссылки IP-переадресация, NAT.

Для меня это один из первых результатов в Google по запросу «wireguard ssh не может подключиться», так что вот прямое исправление, которое сработает. Запустите это на ssh-сервере перед подключением его к серверу Wireguard:

ip route add <ssh_client_pub_ip> via <ssh_server_default_gateway> dev <ssh_server_pub_interface>

ssh_client_pub_ip — общедоступный IP-адрес ssh-клиента, вы можете получить его с помощьюcurl ifconfig.me

ssh_server_pub_interface — имя публичного интерфейса. Пока у вас есть только один сетевой интерфейс, вы сможете сделать, но в противном случае вы вполне можете жестко запрограммировать это, поскольку вряд ли это изменится

ssh_server_default_gateway — шлюз по умолчанию публичного интерфейса ssh-сервера (клиент Wireguard). Вы можете получить это сip route | grep default | awk '{print $3}'

Теперь вы можете подключиться к узлу Wireguard с помощью AllowedIps к 0.0.0.0/0 и не потерять SSH-соединение! Это работает, потому что эта команда добавляет статический маршрут к вашему ssh-клиенту через шлюз по умолчанию, а затем, когда Wireguard добавляет свои правила для направления трафика на все IP-адреса, возникает исключение для трафика, идущего к вашему ssh-клиенту.

Вы можете поставить перед ним обратный прокси-сервер и все готово, но, по крайней мере, вы можете без проблем подключиться к SSH во время устранения неполадок. Я наткнулся на это гораздо более простое решение при использовании калькулятора Wireguard AllowedIPs здесь , который, помимо того, что предоставляет очень удобный калькулятор, помогающий исключить адреса из AllowedIPs, также рекомендует вам сначала рассмотреть возможность добавления статического маршрута для трафика к вашему SSH-клиенту, чтобы проверить, работает ли это. исправляет это.

Другие вопросы по тегам