Консультация № 15667
27.12.2004, 16:33
0.00 руб.
0 5 5
Есть сеть (локальная) стандартные IP адресса 192.168.1.0/24 роутер (построен на базе Freesco v 027) соединяет ее с инетом все работает нормально доступ к интернету почта ,ася, веб.
В локальной сети стоит WEB сервер ,возможно осуществить доступ к этому серверу из интернета и как?

Обсуждение

Неизвестный
28.12.2004, 01:46
общий
это ответ
Здравствуйте, petro!
если у сервера веб нет внешнего айпи то настраивать NAT
Неизвестный
28.12.2004, 09:23
общий
это ответ
гДПЮБЯРБСИРЕ, petro!
Da, mozhno. Na routere nuzhno propisat‘ pravilo dlja probrosa paketov v nutr‘ seti s dejstviem DNAT
Vot kak eto budet vygljadit dlja iptables:
iptables -t nat -A PREROUTING -p tcp -m tcp -d ip_outside_router --dport 80 -j DNAT --to-destination ip_web_server
+ pravilo v FORWARD dlja prohoda paketov
Неизвестный
28.12.2004, 15:14
общий
это ответ
Здравствуйте, petro!
Либо ему дать внешний адрес, либо сделать переадресацию входящих соединений на внешнюю машину (шлюз) на 80 порт на 80 порт (или на каком порту висит веб-сайт) веб-сервера.
Неизвестный
28.12.2004, 15:40
общий
это ответ
Здравствуйте, petro!
Надо поднять нат с редиректом во внутреннею сеть , командой типа : #./natd -redirect_port tcp 192.168.1.i:80 x.x.x.x:80 -interface <внешний интерфейс>
(i - адрес твоего weba, x.x.x.x - адрес на внешнем интерфейсе)
Неизвестный
29.12.2004, 10:17
общий
это ответ
Здравствуйте, petro!
Для этого необходимо настроить маскарадинг.
В аттаче фрагмент из iptables-tutorial.

Приложение:
Действие DNAT достаточно сложно в использовании и требует дополнительного пояснения. Рассмотрим простой пример. У нас есть WEB сервер и мы хотим разрешить доступ к нему из Интернет. Мы имеем только один реальный IP адрес, а WEB-сервер расположен в локальной сети. Реальный IP адрес $INET_IP назначен брандмауэру, HTTP сервер имеет локальный адрес $HTTP_IP и, наконец брандмауэр имеет локальный алрес $LAN_IP. Для начала добавим простое правило в цепочку PREROUTING таблицы nat:iptables -t nat -A PREROUTING --dst $INET_IP -p tcp --dport 80 -j DNAT \--to-destination $HTTP_IPВ соответствии с этим правилом, все пакеты, поступающие на 80-й порт адреса $INET_IP перенаправляются на наш внутренний WEB-сервер. Если теперь обратиться к WEB-серверу из Интернет, то все будет работать прекрасно. Но что же произойдет, если попробовать соединиться с ним из локальной сети? Соединение просто не установится. Давайте посмотрим как маршрутизируются пакеты, идущие из Интернет на наш WEB-сервер. Для простоты изложения примем адрес клиента в Интернет равным $EXT_BOX.Пакет покидает клиентский узел с адресом $EXT_BOX и направляется на $INET_IPПакет приходит на наш брандмауэр.Брандмауэр, в соответствии с вышеприведенным правилом, подменяет адрес назначения и передает его дальше, в другие цепочки.Пакет передается на $HTTP_IP.Пакет поступает на HTTP сервер и сервер передает ответ через брандмауэр, если в таблице маршрутизации он обозначен как шлюз для $EXT_BOX. Как правило, он назначается шлюзом по-умолчанию для HTTP сервера.Брандмауэр производит обратную подстановку адреса в пакете, теперь все выглядит так, как будто бы пакет был сформирован на брандмауэре.Пакет передается клиенту $EXT_BOX.А теперь посмотрим, что произойдет, если запрос посылается с узла, расположенного в той же локальной сети. Для простоты изложения примем адрес клиента в локальной сети равным $LAN_BOX.Пакет покидает $LAN_BOX.Поступает на брандмауэр.Производится подстановка адреса назначения, однако адрес отправителя не подменяется, т.е. исходный адрес остается в пакете без изменения.Пакет покидает брандмауэр и отправляется на HTTP сервер.HTTP сервер, готовясь к отправке ответа, обнаруживает, что клиент находится в локальной сети (поскольку пакет запроса содержал оригинальный IP адрес, который теперь превратился в адрес назначения) и поэтому отправляет пакет непосредственно на $LAN_BOX.Пакет поступает на $LAN_BOX. Клиент "путается", поскольку ответ пришел не с того узла, на который отправлялся запрос. Поэтому клиент "сбрасывает" пакет ответа и продолжает ждать "настоящий" ответ.Проблема решается довольно просто с помощью SNAT. Ниже приводится правило, которое выполняет эту функцию. Это правило вынуждает HTTP сервер передавать ответы на наш брандмауэр, которые затем будут переданы клиенту.iptables -t nat -A POSTROUTING -p tcp --dst $HTTP_IP --dport 80 -j SNAT \--to-source $LAN_IPЗапомните, цепочка POSTROUTING обрабатывается самой последней и к этому моменту пакет уже прошел процедуру преобразования DNAT, поэтому критерий строится на базе адреса назначения $HTTP_IP.Если вы думаете, что на этом можно остановиться, то вы ошибаетесь! Представим себе ситуацию, когда в качестве клиента выступает сам брандмауэр. Тогда, к сожалению, пакеты будут передаваться на локальный порт с номером 80 самого брандмауэра, а не на $HTTP_IP. Чтобы разрешить и эту проблему, добавим правило:iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT \--to-destination $HTTP_IPТеперь никаких проблем, с доступом к нашему WEB-серверу, уже не должно возникать.
Форма ответа