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

Перенаправление портов между двумя серверами CentOS

У меня два сервера (на обоих работает 64-разрядная версия CentOS 5.5)

Один сервер подключен к общедоступной сети и имеет общедоступный IP-адрес, который я могу использовать для удаленного подключения к нему по SSH. Другой сервер подключен к серверу 1 через частную сеть.

Я хотел бы знать, как я могу перенаправить порт (скажем, 20222) на сервере 1 на порт 22 на сервере 2, чтобы я мог подключиться к серверу 2 с помощью любого клиента SSH, используя общедоступный IP-адрес сервера 1 и порт 20222.

Общедоступная сеть сервера 1 подключена через интерфейс eth0, а частная сеть подключена через eth1

Большое спасибо.

С уважением, Калпеш

Вы можете легко сделать это, создав туннель ssh:

ssh -L 20222:server_2_private_IP_address:22 server_1_public_IP_address

Вы также можете добавить это в свой ~ / .ssh / config, если он у вас есть:

Host foo
  Hostname server_1_public_IP_address
  User ...
  ...
  LocalForward 20222 server_2_private_IP_address:22

После запуска ssh на server_1_public_IP_address вы сможете начать новый сеанс ssh на server_2, используя

ssh -p 20222 localhost

Никогда не пробовал, но должен работать с любым клиентом ssh, укажите его на localhost и por 20222.

И читать

man ssh

Все это там объясняется.

У MadHatter есть ответ iptables, если вы хотите пойти по этому пути.

Для быстрых и грязных перенаправлений во время миграций и прочего я использовал redir

Что-то вроде этого на Сервере 1:

  redir --lport=20222 --caddr=$IP_OF_SERVER_2 --cport=22

Опять же, это просто работает на переднем плане и не выдержит перезагрузки, но это настолько удобная команда, что я подумал, что она уместна в этом обсуждении.

Вы также можете установить Stone (программное обеспечение для туннелирования с открытым исходным кодом tcp / udp), запустив, а затем выполните следующую команду от имени пользователя root


wget http://www.gcd.org/sengoku/stone/stone-2.3e.tar.gz
tar xzf ./stone-2.3e.tar.gz
cd ./stone-2.3d-2.3.2.7
make linux
cp ./stone /usr/bin/
cd ../
rm -Rf ./stone-2.3d-2.3.2.7

затем, как пользователь, выполните следующую команду


stone -D server1:20222/tcp server2:22/tcp

Предположим, что сервер 1 имеет внешний адрес 1.2.3.4 и внутренний адрес 10.0.0.1, а сервер 2 имеет внутренний адрес 10.0.0.2 и не имеет существующего маршрута по умолчанию:

на сервере 1:

iptables -t nat -A PREROUTING -p tcp --dport 20222 -i eth0 -j DNAT --to-destination 10.0.0.2:22
echo 1 > /proc/sys/net/ipv4/ip_forward

на сервере 2:

route add default gw 10.0.0.1

Ни один из этих параметров не является постоянным, то есть они не сохранятся после перезагрузки. Если они работают, мы можем обсудить, как сделать их постоянными.