Брокер туннеля SSH через IPV4 для машин за CNAT

Брокер туннеля SSH через IPV4 для машин за CNAT

Я не уверен, следует ли мне задавать этот вопрос в разделе 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

Связанный контент