LINUX.ORG.RU

SSH: Вопрос по пробросу удаленного порта

 


0

1

Приветствую участников форума!

Необходимо пробросить порт с удаленного сервера на локальный, через SSH туннель.
Удаленный Сервер: арендованный впс с Debian Jessie.
Локальный Сервер: Винда не помню, то ли семерка, то ли восьмерка(не суть), с клиентом Putty открывающим туннель к удаленному серверу.
Конфигурация Putty такая: 4R2323 localhost:2323 Локальный серв при этом мог принимать запросы, только если посылать их непосредственно из удаленного, но не из внешки. То есть прослушивающий интерфейс - 127.0.0.1:2323. Потом начал крутить, вертеть, через iptables пробовал пробросить порт с eth0 сетевого интерфейса на loopback, но потом нашел что, (здесь Внимание! информация не точная, поправьте если ошибаюсь) якобы на loopback нельзя пробрасывать, и не получиться.
Затем случайным образом забрел на топик https://www.linux.org.ru/forum/admin/10117875, подключил опцию «GatewayPorts yes» в конфигурации /etc/ssh/sshd_config и все заработало, при этом уже прослушивался 0.0.0.0:2323. И сам вопрос, когда сервер расположенный на локальной машине, принимает запрос от клиента функцией accept() возвращается клиентский сокет, с удаленным адресом 127.0.0.1, возможно ли перенаправлять клиентов с сохранением удаленного адреса?

Ответ на: комментарий от cyber_eagle

Чем не устаивает вариант с 0.0.0.0:2323 ?

Дело в том что серверу расположенном на винде, необходимо извлекать обратный ip-адрес клиента, при помощи функции getpeername() из сокета, но какой ни подключался бы клиент через туннелированный сервер, всегда возвращается 127.0.0.1, нужно сделать чтобы этот туннель был прозрачным, как будто его нет, как будто этот сервер находится не на локальном а на арендованном. Сами ip-адреса клиентов не имеют особого значения, просто нужно сохранять уникальность каждого клиента.

Как именно ты пытался пробросить их через iptables ?

Настройки взял отсюда: https://www.digitalocean.com/community/tutorials/how-to-forward-ports-through-a-linux-gateway-with-iptables
Если подробнее:
1) # sysctl -w net.ipv4.ip_forward=1
2) # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2323 -j DNAT --to-destination 127.0.0.1
3) # iptables -t nat -A POSTROUTING -o lo -p tcp --dport 2323 -d 127.0.0.1 -j SNAT --to-source <внешний_ip_vps_сервера>

domik_v_derevne ()
Ответ на: комментарий от domik_v_derevne

Чтобы тунель был прозрачный в вашем понимании, это должно быть что-то типа openvpn, с отдельным интерфейсом и маршрутизацией. А через ssh это не сделать, к серверу на винде коннектится putty, а не клиент из интернета.

mky ★★★★★ ()
Ответ на: комментарий от mky

Понятно, если честно то я тоже об этом думал, для полноценной маршрутизации нужен физический интерфейс, ну или хотя бы эмуляция интерфейса, а в этом случае у ssh как таковой ее нет.
Вобщем-то это не проблема, не составит трудности перенести ПО на впс, просто при разработке удобнее когда он на локальной машине крутится.

domik_v_derevne ()
Ответ на: комментарий от domik_v_derevne

Наверное, это правильное решение. Некоторые VPS позволяют создать tun-интерфейс, то есть openvpn там заработает. Но дальше будет нужно, чтобы ответы от виндового сервера шли к клиенту в инет через этот тунель, но там нет маршрутизации по src-адресу, и весь виндовый сервер должен был бы ходить в инет через этот тунель.

mky ★★★★★ ()
Ответ на: комментарий от domik_v_derevne

Помнится во времена xDSL интернета, провайдер позволял пробрасывать порты на локальные машины даже при динамическом ip, но сейчас такой возможности к сожалению нет, в стандартном пакете услуг провайдера.

domik_v_derevne ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.