Jump to content
Калькуляторы

NAT для HTTP

Образовалась хитрая задача, пока теоретическая.

Есть локальная сеть, в ней два веб-сервера, например 192.168.1.1:80 (сервер1) и 192.168.1.2:80 (сервер2).

Выход в интернет в локальной сети предоставляет маршрутизатор, через NAT. Маршрутизатор пока абстрактный, скорее всего это будет компактный сервер на линуксе или FreeBSD.

Нужно опубликовать в интернете оба сервера, причем оба должны быть на 80 порту. И на одном IP-адресе, поскольку предоставляется только один.

 

Пока я вижу только такой работоспособный вариант: в сети есть третий кеширующий веб-сервер (либо прокси-сервер), на который маршрутизатор переадресует все входящие HTTP-запросы. Веб-сервер проверяет заголовок Host и в зависимости от его значения передает запрос на сервер1 или сервер2.

 

А можно ли на самом NAT анализировать пришедший запрос и если это HTTP, то тогда в зависимости от заголовка Host транслировать на 192.168.1.1 или 192.168.1.2?

Share this post


Link to post
Share on other sites

регистрируете домен и всё будет работать, как хотите.

главное чтобы внешний ip был статичным.

Share this post


Link to post
Share on other sites

А можно ли на самом NAT анализировать пришедший запрос и если это HTTP, то тогда в зависимости от заголовка Host транслировать на 192.168.1.1 или 192.168.1.2?

 

На микротике можно через L7 фильтр сделать, правда ресурсов очень много придется затратить, если объем трафика большой.

Share this post


Link to post
Share on other sites

На микротике можно через L7 фильтр сделать

А с каких пор он научился декодировать протокол HTTP?

Если просто по содержанию, то это не подойдет, содержимое "Host: сервер1" может в разных местах встретиться.

Share this post


Link to post
Share on other sites
Образовалась хитрая задача, пока теоретическая.

Ничего хитрого, обычная.

хттп лоад балансинсинг гуглить.

Решается с помощью нгинх или хапрокси (более производительно под линухом) или хз с помощью ещё чего, что жуёт хттп запросы.

Оригинальный IP юзера дописывается в заголовки хттп.

Share this post


Link to post
Share on other sites

Решается с помощью нгинх или хапрокси

Я так понимаю, что это нередкая задача для балансировки нагрузки.

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

Поэтому интересуюсь, можно это на уровне NAT разрулить?

Share this post


Link to post
Share on other sites

Зачэм? Гланды через попу тоже можно вывернуть...

Share this post


Link to post
Share on other sites

Поэтому интересуюсь, можно это на уровне NAT разрулить?

На L4 это сделать нельзя. Нужно нечто, понимающее http headers, например, nginx как было предложено выше

Share this post


Link to post
Share on other sites
Поэтому интересуюсь, можно это на уровне NAT разрулить?

Можно, но лучше отдать это софтине.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this