У меня есть и VPS, и сервер за брандмауэром NAT. Я хочу использовать сервер за брандмауэром NAT в качестве резервного для VPS. VPS должен иметь возможность инициировать процесс резервного копирования и отправлять резервные копии через Интернет, минуя маршрутизатор, выполняющий NAT, и на резервную машину. У меня нет контроля над маршрутизатором, поэтому моя резервная машина не имеет общедоступного IP-адреса.
Есть ли у меня способ открыть SSH-туннель (или эквивалент) с машины резервного копирования на сервер, чтобы сервер мог копировать файлы через это соединение?
Топология такая:
________ _______________ ________
| server | -- ( internet ) -- | router w/ NAT | -- | backup |
-------- --------------- --------
Я делаю это, но делаю это наоборот.
У меня на сервере запущен сервер OpenVPN, а в резервной копии работает клиент OpenVPN. Это потому, что сервер не меняет IP-адреса. Теперь, пока работает резервная копия, не имеет значения, какой IP-адрес имеет блок NAT, он всегда будет иметь один и тот же IP-адрес в сети OpenVPN, и сервер всегда может его найти.
Также в качестве бонуса, поскольку соединение OpenVPN является "исходящим" через NAT, пока порт UDP разрешен (что по умолчанию на большинстве устройств), для устройства NAT также не требуется специальной конфигурации.
Откройте SSH-соединение от домашнего сервера к VPC, включите туннелирование, чтобы компьютер VPC мог подключаться к службам на домашнем компьютере; rsync или ftp, вероятно, будет проще всего.
Отвечая на свой вопрос:
Это просто говорит о том, что все, что вам нужно, это новый поисковый запрос: «обратный», как в «обратном туннеле ssh».
Итак, чтобы создать обратный туннель SSH, запустите SSH с машины за NAT (резервная копия, в моем примере) с -R
и укажите, какой удаленный порт привязать к локальному порту, поэтому:
ssh -R remote_bind_port:localhost:local_port remote_user@server
Так, например:
ssh -R 1222:localhost:22 backup@example.com
Свяжет порт 1222 на example.com с портом localhost 22. То есть: пользователь на example.com может сделать ssh localhost -p 1222
для прохождения NAT и подключения к серверу SSH на машине за маршрутизатором.
Протокол безопасной передачи файлов - довольно хорошее и безопасное решение, но есть и другие решения, такие как использование rsync или, возможно, FTP.
Для rsync вы можете открыть порт № 873 на маршрутизаторе и перенаправить его на резервную цель. Для простой проблемы с FTP есть два симметричных решения, первое - открыть ftp-порт на резервной цели и снова выполнить пересылку. В второй Кажется, это полезно для вас, даже если у вас нет доступа к маршрутизатору для изменения правила NAT, в этом случае вам нужно настроить демон FTP на сервере в качестве репозитория и создать синхронизированный скрипт, который будет выполнять перенос на резервную машину .
Кроме того, решение для туннелирования кажется хорошей альтернативой, поэтому я рекомендую вам OpenVPN.