IP-переадресация в Linux

У меня три машины

Source Machine
Destination Machine - IP 10.20.30.40
Intermediate Machine - Host server1.test.com

Исходная машина имеет SSH-доступ к Промежуточной машине, а Промежуточная машина имеет SSH-доступ к Целевой машине но нет прямого доступа от источника к месту назначения

На источнике запущен скрипт, которому требуется SSH к месту назначения. В скрипте настроен IP-адрес места назначения, и я не могу изменить его на имя хоста или localhost (тогда я мог бы использовать SSH-порт для перенаправления с помощью промежуточного сервера)

Я проверил некоторые статьи и везде предлагал использовать iptables для перенаправления IP-адреса на другой пункт назначения

Поэтому я решил использовать iptables на источнике для перенаправления IP-адреса назначения на localhost на порт 1234, используя следующее:

iptables -t nat -A PREROUTING -p tcp -d 10.20.30.40 --dport 22 -j DNAT --to 127.0.0.1:1234

, а затем перенаправить локальный порт 1234 через промежуточный компьютер в пункт назначения следующим образом:

ssh server1.test.com -L 1234:10.20.30.40:22

Это хороший способ сделать это или есть какое-нибудь простое решение?

0
задан 3 May 2016 в 09:16
3 ответа

правила iptables-DNAT будут заменены следующими настройками.

(Script execution user's .ssh/config)
Host 10.20.30.40
    Hostname 127.0.0.1
    Port 1234

Если ssh-portforward запущен с тем же пользователем, я считаю целесообразным использовать ProxyCommand .

Host 10.20.30.40
    ProxyCommand ssh server1.test.com nc %h %p
0
ответ дан 24 November 2019 в 06:35

Либо используйте для этого VPN-подключения (все машины, подключенные через частную сеть), что более безопасно, либо переадресацию портов (что неплохая идея), просто не забудьте ограничить пул IP-соединений на машине в частном порядке сеть.

0
ответ дан 24 November 2019 в 06:35

Остерегайтесь : прочтите это, только если у вас есть root-доступ как к исходным, так и к промежуточным машинам.

Поскольку вы говорите, что исходный компьютер (назовем его A) не имеет возможности чтобы связаться с адресатом (называемым C), я предполагаю, что существуют ограничения маршрутизации или разрешений, которые препятствуют этому. Ограничения, которых может избежать промежуточный продукт (машина B). Вы можете заставить исходный компьютер использовать последний в качестве шлюза для достижения пункта назначения. Поскольку я считаю, что A и B не находятся в одной сети, вы можете создать ssh vpn между A и B (IP tun0: 10.0.0.1, IP tun0 B: 10.0.0.2, оба замаскированы 255.255.255.252 в режиме p2p) и выдайте

# ip route add 10.20.30.40/32 via 10.0.0.2 dev tun0

на A. С другой стороны, на B:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -s 10.0.0.1 -d 10.20.30.40/32 -j MASQUERADE

Я не буду вдаваться в подробности о том, как вызвать ssh vpn, так как это вне вашего вопроса. Проверьте https://help.ubuntu.com/community/SSH_VPN , если вы думаете, что это может вам помочь.

0
ответ дан 24 November 2019 в 06:35

Теги

Похожие вопросы