
Я не уверен, следует ли мне задавать этот вопрос в разделе Unix & Linux или Network Engineering.
Вот физический сценарий
[Хост 1]----[NAT операторского уровня]---->AWS<----[NAT операторского уровня]----[Хост 2]
Хост 1иХост 2подключаются по обратному SSH (autoSSH) к AWS Box, поэтому при необходимости у них есть возможность подключения к оболочке, а также возможность открыть любой другой порт при необходимости.
Хост 2отправляет резервные копии наХост 1используя SCP на регулярной основе. На самом деле естьХост2 X 10ящики выталкивают дампы данных. Ближайшее местоположение AWS довольно далеко от местоположения ящиков, поэтому задержка довольно большая.
Есть ли возможность использовать AWS box в качестве точки встречи для организации туннеля ssh между ящиками? Я знаю о туннельных брокерах IPv6, но интернет-провайдеры в регионе еще не приняли их (с опозданием на 20 лет... ну и ну!) Я изучаю решение на основе:
- Перфорация TCP/UDP (с практической реализацией)
- Служба UPnP/NAT-PMP на AWS
- Используя такие инструменты, как Chrome Remote Desktop, взломайте его, чтобы открыть порт SSH вместо VNC.
- Любая другая услуга маршрутизатора.
- Любой другой практический подход.
В основном на компьютерах установлена ОС CentOS 6/7.
решение1
Однако это не совсем то, что вам нужно: вы можете выставить host1 или host2 обратный локальный порт как внешний порт с помощью iptables. Итак, предположим, что вы подключили свой host2 как обратный туннель ssh:
user2@host2 $ ssh -R 9999:localhost:22 [email protected]
Теперь вы можете перенаправить входящий порт aws.com:9999 на aws [localport:9999]: На сервере AWS:
[email protected] # iptables -t nat -I PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999
И теперь вы можете подключиться с host2 на host1 следующим образом:
user1@host1 $ ssh [email protected] -p 9999
Бинго. Вы подключились таким образом:
[хост 1] --> [aws:порт 9999] --> [aws: обратный туннель на 127.0.0.1:9999] --> [хост 2]
Если это соединение больше не используется, следует удалить запись iptable:
[email protected] # iptables -t nat -A PREROUTING -p tcp --dport 9999 -j DNAT --to 127.0.0.1:9999
Недостатком этого решения является то, что host2 доступен всем через внешний порт 9999. Вам все равно придется вводить пароль для входа в систему, однако он доступен.
UPD: вам также может потребоваться включить локальную пересылку:
awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/all/route_localnet
Или вместо включения для всех интерфейсов включите только для интерфейса входящего потока:
awsuser@aws # ls echo 1 > /proc/sys/net/ipv4/conf/eth0/accept_local