Как получить информацию с машины, находящейся за серым ip адресом?

Есть машина, назовем ее целевой компьютер (ЦК или target.host), на которой крутится апач. У target'а серый динамический айпи-адрес, т.е. из вне к нему не подключиться. Есть еще одна машина со статическим айпи и привязанным доменом example.com. Назовем ее сервером. Есть пользователь, который хочет получить доступ к сайту на целевом компьютере.


Вопрос: есть ли уже готовые решения для создания тунеля, способные пробрасывать запросы, адресованные серверу, на целевой компьютер, а ответы ЦК отдавать пользователю? При этом хотелось бы, чтобы пользователь мог в браузере зайти на test.example.com и ему бы показывалось содержимое test.target.host.


Или же это можно сделать только написанием своей программы? И в этом случае пользователь уже будет заходить на сайт через дополнительное ПО, установленное на его компьютере (в виде отдельной программы или плагина в браузере).
  • Вопрос задан
  • 5087 просмотров
Решения вопроса 1
Alukardd
@Alukardd
ssh -CND user@remote.host -R 80:127.0.0.1:apache_port
вообще не уверен что такое сработает, т.к. вы попытаетесь занять 80 порт, на котором как я понял из объяснения и так висит apache. Так что лучше заменить 80 на что-то левое (например. 8791), а на «сервере» описать как и хотел TC virtualhost (test.example.com) и указать ему ProxyPass на 127.0.0.1:8791/.
К тому же пример с 80 портом и пользователем «user» неработоспособен, т.к. порт привилегированный и пользователь не сможет его слушать.

> Опции -CND нужны для того, чтобы ssh сжимал трафик и не запускал оболочку.
Опция -D нужна для динамического проброса портов в другую сторону (читай создание локального socks через удалённый сервер). А все ключи, включая нужный нам -R стоит писать до имени хоста к которому мы подключаемся, хотя ssh, наверное, «съест» и такой вариант.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
sledopit
@sledopit
Писать своего ничего не нужно.
С target.host настраиваете беспарольную ssh авторизацию и запускаете команду
ssh -CND user@remote.host -R 80:127.0.0.1:apache_port

и собственно после этого можете обращаться на remote.host на порт 80 так, как будто апач у вас запущен на нём, а не на target.host.
чтобы в случае разрывов ssh самостоятельно восстанавливал соединение, можете использовать утилиту autossh.
Опции -CND нужны для того, чтобы ssh сжимал трафик и не запускал оболочку.
Ответ написан
@smartlight
можно все сделать проще с помощью dns
1. на хосте с серым ip подымаете dyndns сервис
2. в доменной зоне example.com делаете запись test.example.com CNAME my.dyndns.host
Ответ написан
BuriK666
@BuriK666
Компьютерный псих
Поставьте на сервер со статическим IP nginx и перенаправляйте нужные запросы на target.host.
Ну или DNAT
Ответ написан
eaa
@eaa
Ну например маппинг портов. Я делал так на домашнем роутере, за которым стоял комп, штатными средствами, что были в прошивке девайса.
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Есть, ssh называется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы