Назад | Перейти на главную страницу

Ретранслятор OpenSSH для конкретного хоста

на данный момент я занимаюсь сетью для компании, у которой есть разные поддомены, указывающие на один и тот же IP-адрес для разных целей. У нас есть example.com для их веб-сайтов и gitlab.example.com для их экземпляра Gitlab.
В настоящее время мы хотим переместить экземпляр Gitlab на другой сервер в той же сети. Для веб-интерфейса Gitlab мы используем nginx в качестве обратного прокси для IP другого сервера и для управления SSL-сертификатами и хостом.
Но теперь у нас есть проблема, что мы не можем установить ssh-соединение с этим другим сервером, потому что WAN-порт перенаправляется на веб-сервер, а не на новый gitlab-сервер, и нам нужен этот порт, указывающий на веб-сервер. Но еще и из-за количества проектов, которые у нас есть, мы не можем изменить порт. (У нас нет времени перенастраивать все эти проекты в git)

Есть ли возможность позволить веб-серверу действовать как реле для gitlab-сервера? Чтобы каждое соединение с gitlab.example.com перенаправлялось на этот конкретный сервер?

Спасибо за вашу помощь!!

Простой ответ будет следующим:

  1. Измените SSH-порт управления и контроля для сервера, отличного от gitlab, на 2222, чтобы не было конфликта портов
  2. Установите прокси HA и настройте прослушиватель L4 (TCP, а не HTTP) на порту 22
  3. Установите серверную часть пула прокси HA в качестве сервера gitlab, порт 22

Это перенаправит весь трафик SSH (порт 22) с внешнего сервера на внутренний сервер.

Этого также можно добиться с помощью DNAT / SNATing через IPTables, но это намного сложнее, чем описанное выше решение. Непроверенный пример здесь:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 -j DNAT --to <gitlabIP>:22 iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to <gitlabIP>:22 iptables -t nat -A POSTROUTING -p tcp -d <gitlabIP> --dport 22 -j MASQUERADE