У меня есть такая установка:
[client01] <-A-> [server01] <-B-> [server02]
client01
может получить доступ к порту 9300 на server01
(подключение A
). server01
может получить доступ только к порту 9300
на server02
(подключение B
) через ssh. Как лучше всего направить весь трафик на порт 9300
к server01
пойти в порт 9300
на server02
?
Я могу успешно сделать это с помощью туннеля ssh из client01
к server01
к server02
, но я не хочу запускать ssh на client01
. Когда я ssh из server01
к server02
порт пересылки 9300 (ssh -g -L9300:localhost:9300 server02
на server01
), это не работает - я использую неправильную команду?
EDIT: добавлено, что server02 доступен только через ssh
Вы можете сделать это с помощью правила iptables DNAT - примерно так:
iptables -A PREROUTING -p tcp -d x.x.x.x --dport 9300 -j DNAT --to-destination y.y.y.y:9300
Замените IP-адрес server01 на x.x.x.x
и адрес server02 для y.y.y.y
и все готово.
Все это, конечно, предполагает, что вы запускаете iptables на server01. Это также предполагает, что server02 использует server01 для обратной маршрутизации трафика в Интернет. Если server02 не работает, значит, он не делает того, что вы хотите.
Отредактируйте в свете возможности подключения между машинами только по SSH:
Ваша командная строка для прямого порта SSH выглядит нормально, за исключением того, что вам нужен пробел между «L» и «9300». Вы также должны быть уверены, что компьютер server01 будет принимать входящие соединения на порт 9300. Посмотрите на свою цепочку INPUT iptables в таблице фильтров (iptables -L INPUT
), чтобы убедиться, что трафик будет разрешен.
Вам также необходимо постоянно поддерживать этот туннель.