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

Перенаправить порт по хосту?

У меня 2 машины и роутер с DD-WRT. Мои машины,

  1. Windows 2008, под управлением моего DNS и IIS7
  2. Сервер Ubuntu 11.4 под управлением Apache 2.

В настоящее время у меня есть все запросы на мой внешний IP-адрес через порт 80, которые пересылаются на мой компьютер с Windows 2008. Недавно я добавил дополнительный сервер Ubuntu, и я хотел бы направить его на IP-адрес на основе хоста. В настоящее время существует только отношение 1 к 1 между портом и сервером, при этом все запросы на порт 80 поступают на компьютер с Windows 2008. В качестве примера я бы хотел сделать следующее:

Если бы у меня был запрос на мой роутер для example-a.com, Я бы отправил его 192.168.1.2.

Если бы у меня был запрос на example-b.com', I would forward it to192.168.1.3`

Это что-то, что нужно сначала маршрутизировать через мою машину 2008 года, или я могу сделать это с маршрутизатора?

для этой функциональности вам потребуется обратный прокси, если вы используете apache на своем сервере ubuntu или nginx, этого достаточно легко добиться с минимальной дополнительной работой.

вкратце, что вы должны сделать, это настроить переадресацию порта маршрутизатора на ваш сервер ubuntu, а затем настроить веб-сервер для прослушивания как example-a.com, так и example-b.com

предполагая, что example-a.com находится на сервере Windows, вы должны затем настроить example-a.com на сервере ubuntu для обратного прокси-сервера на ваш сервер Windows

для apache это выглядит примерно так:

1 - убедитесь, что следующие строки находятся в вашем файле apache2.conf и не прокомментированы:

LoadModule  proxy_module         modules/mod_proxy.so
LoadModule  proxy_http_module    modules/mod_proxy_http.so

2- создайте виртуальный хост для example-a.com: и добавьте к нему следующее:

<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http:/internalexample-a.com
ProxyPassReverse / http://internalexample-a.com

3- перезапустите apache на вашем сервере ubuntu

это позволит вам прокси на сервер Windows заменить internalexaple-a.com либо IP-адресом, на который example-a.com отвечает на сервере win, либо внутренним именем DNS, которое указывает на тот же сайт на сервере Windows

Я не верю, что маршрутизатор когда-либо увидит имя хоста. DNS разрешается клиентом перед отправкой запроса. Таким образом, IP-адрес назначения будет установлен в маршруте запроса и маршрутизатора на основе IP-адреса назначения.

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

Это может помочь нам узнать, с каким приложением / протоколом вам нужно это сделать. HTTP? SSH?

FWIW, я делаю это с помощью SSH, указывая два разных порта. Запросы для одного сервера идут на порт 22, а другого на порт 29. YMMV