Каков наилучший способ переадресации трафика через определенный порт на другую машину?

Каков наилучший способ переадресации трафика через определенный порт на другую машину?

У меня такая настройка:

[client01] <-A-> [server01] <-B-> [server02]

client01может получить доступ к порту 9300 на server01(подключение A). server01может получить доступ только к порту 9300на server02(подключение B)через ssh. Каков наилучший способ заставить весь трафик на порту 9300идти на server01порт ?9300server02

Я могу успешно сделать это с помощью туннеля ssh из client01в server01в server02, но я не хочу запускать ssh на client01. Когда я ssh из server01в server02перенаправляю порт 9300 ( ssh -g -L9300:localhost:9300 server02на server01), это не работает — я использую неправильную команду?

EDIT: добавлено, что server02 доступен только через ssh

решение1

Это можно сделать с помощью правила DNAT iptables — что-то вроде:

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), чтобы убедиться, что трафик будет разрешен.

Вам также придется постоянно следить за состоянием этого туннеля.

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