The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Iptables+NAT доступ к вебсерверу из тойже локальной сети"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (Linux iptables, ipchains)
Изначальное сообщение [ Отслеживать ]

"Iptables+NAT доступ к вебсерверу из тойже локальной сети"  +/
Сообщение от Yukko email on 10-Окт-04, 04:28 
Ткните носом... Есть линукс ASP 7.3 одним интерфейсом 213.227.206.32(eth0) смотрит в инет, другим 10.5.1.8 (eth1) в локалку.
Внутри локалки есть вебсервер 10.5.1.5. Он через DNAT выкинут наружу с адресом 213.227.206.30. При заходе из инета на адрес вебсервера, все ОК, но я хочу большего, а именно заходить на свой же вебсервер из той самой локальной сети, в которой находится вебсервер. Читаю ман по IPTables, гуглю и яндексю уже третий день, но, видимо, где-то зациклился.

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

#!/bin/bash
#установка политики FORWARD по-умолчанию в DROP, т.е. все что не
#разрешено явно, то запрещено
/sbin/iptables -P FORWARD /
DROP              
#я своей локалке доверяю, поэтому разрешаю прохождение пакетов из локалки
#без ограничений                                    
/sbin/iptables -A FORWARD -i eth1 -o eth0 /
-j ACCEPT      
#пропускаю внутрь локалки пакеты установленных
#соединений                      
/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state /
ESTABLISHED,RELATED -j/
ACCEPT
#Я разрешаю прохождение всех пакетов, которые приходят на вебсервер с
#внешнего интерфейса файрвола на локальный интерфейс вебсервера.
/sbin/iptables -A FORWARD -d 10.5.1.5 -i eth0 -o eth1 -p tcp /
-m tcp --dport 80 /
-j/
allowed
#выкидываю все открытые порты машины в инет с адресом 213.227.206.30
/sbin/iptables -t nat -A PREROUTING -d 213.227.206.30 /
-i eth0 -p tcp -m tcp -j DNAT --to-destination /
10.5.1.5
#даю доступ в интернет приложениям моей машины с адреса 213.227.206.30
#т.е. переписываю адрес источника на внешний присвоенный адрес.
/sbin/iptables -t nat -A POSTROUTING -s 10.5.1.5 /
-o eth0 -j SNAT --to-source /
213.227.206.30                                                                    
#теперь согласно написанного в мануале, мне надо сделать нижеприведенное,
#смысл которого я понимаю (надо переписать исходящий адрес с адреса
#клиента на адрес файрвола, чтобы вебсервер ответил файрволу,а не клиенту
#напрямую):
iptables -t nat -A POSTROUTING -p tcp --dst 10.5.1.5 --dport 80 -j SNAT \
--to-source 10.5.1.8

Команда выполняется, но
- при попытке доступа из той же локальной сети соединение установить не удается
- все приложения, которые крутятся на вебсервере стали видеть $_SERVER['REMOTE_ADDRESS'] (адрес клиента) как внутренний адерс файрвола

Я подозреваю, что я
а. где-то не разрешил прохождение пакетов с адресом источника из локальной сети на внешний интерфейс, а потом обратно.
б. неправильно написал правила SNAT

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Iptables+NAT доступ к вебсерверу из тойже локальной сети"  +/
Сообщение от fantom (??) on 11-Окт-04, 17:45 
>Ткните носом... Есть линукс ASP 7.3 одним интерфейсом 213.227.206.32(eth0) смотрит в инет,
>другим 10.5.1.8 (eth1) в локалку.
>Внутри локалки есть вебсервер 10.5.1.5. Он через DNAT выкинут наружу с адресом
>213.227.206.30. При заходе из инета на адрес вебсервера, все ОК, но
>я хочу большего, а именно заходить на свой же вебсервер из
>той самой локальной сети, в которой находится вебсервер. Читаю ман по
>IPTables, гуглю и яндексю уже третий день, но, видимо, где-то зациклился.
>
>
>Привожу скрипт, которым делаю вышеперчисленные действия и сразу пишу, как я это
>понимаю, чтобы могли указать, где я неправ в своих размышлениях:
>
>#!/bin/bash
>#установка политики FORWARD по-умолчанию в DROP, т.е. все что не
>#разрешено явно, то запрещено
>/sbin/iptables -P FORWARD /
>DROP
>#я своей локалке доверяю, поэтому разрешаю прохождение пакетов из локалки
>#без ограничений
>/sbin/iptables -A FORWARD -i eth1 -o eth0 /
>-j ACCEPT
>#пропускаю внутрь локалки пакеты установленных
>#соединений
>/sbin/iptables -A FORWARD -i eth0 -o eth1 -m state --state /
>ESTABLISHED,RELATED -j/
>ACCEPT
>#Я разрешаю прохождение всех пакетов, которые приходят на вебсервер с
>#внешнего интерфейса файрвола на локальный интерфейс вебсервера.
>/sbin/iptables -A FORWARD -d 10.5.1.5 -i eth0 -o eth1 -p tcp /
>
>-m tcp --dport 80 /
>-j/
>allowed
>#выкидываю все открытые порты машины в инет с адресом 213.227.206.30
>/sbin/iptables -t nat -A PREROUTING -d 213.227.206.30 /
>-i eth0 -p tcp -m tcp -j DNAT --to-destination /
>10.5.1.5
>#даю доступ в интернет приложениям моей машины с адреса 213.227.206.30
>#т.е. переписываю адрес источника на внешний присвоенный адрес.
>/sbin/iptables -t nat -A POSTROUTING -s 10.5.1.5 /
>-o eth0 -j SNAT --to-source /
>213.227.206.30
>#теперь согласно написанного в мануале, мне надо сделать нижеприведенное,
>#смысл которого я понимаю (надо переписать исходящий адрес с адреса
>#клиента на адрес файрвола, чтобы вебсервер ответил файрволу,а не клиенту
>#напрямую):
>iptables -t nat -A POSTROUTING -p tcp --dst 10.5.1.5 --dport 80 -j
>SNAT \
>--to-source 10.5.1.8
>
>Команда выполняется, но
>- при попытке доступа из той же локальной сети соединение установить не
>удается
>- все приложения, которые крутятся на вебсервере стали видеть $_SERVER['REMOTE_ADDRESS'] (адрес клиента)
>как внутренний адерс файрвола
>
>Я подозреваю, что я
>а. где-то не разрешил прохождение пакетов с адресом источника из локальной сети
>на внешний интерфейс, а потом обратно.
>б. неправильно написал правила SNAT

Одного немогу понять - нафига такой гемор творить, если все в одной локалке???
1. разреши к http серверу ходить по IP адресу, набираешь в строке адреса 10.5.1.5 и попадаешь на свой сервак...
2. или сделать чтобы твой DNS отдавал в локалку адрес 10.5.1.5 (или какой он там у тебя на серваке) о твоем серваке.

а правило твое работать небудет, т.к. адреса из одной подсети, и при обращении с 10.5.1.х на 10.5.1.5 пакеты через твой шлюз НЕ ПРОХОДЯТ!

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Iptables+NAT доступ к вебсерверу из тойже локальной сети"  +/
Сообщение от Yukko on 11-Окт-04, 17:52 
>а правило твое работать небудет, т.к. адреса из одной подсети, и при
>обращении с 10.5.1.х на 10.5.1.5 пакеты через твой шлюз НЕ ПРОХОДЯТ!
Можно хотя объяснить почему они не проходят через шлюз? Читаю мануал, там сказано, что проходят:
А теперь посмотрим, что произойдет, если запрос посылается с узла, расположенного в той же локальной сети. Для простоты изложения примем адрес клиента в локальной сети равным $LAN_BOX.

Пакет покидает $LAN_BOX.

Поступает на брандмауэр.

Производится подстановка адреса назначения, однако адрес отправителя не подменяется, т.е. исходный адрес остается в пакете без изменения.

Пакет покидает брандмауэр и отправляется на HTTP сервер.

HTTP сервер, готовясь к отправке ответа, обнаруживает, что клиент находится в локальной сети (поскольку пакет запроса содержал оригинальный IP адрес, который теперь превратился в адрес назначения) и поэтому отправляет пакет непосредственно на $LAN_BOX.

Пакет поступает на $LAN_BOX. Клиент "путается", поскольку ответ пришел не с того узла, на который отправлялся запрос. Поэтому клиент "сбрасывает" пакет ответа и продолжает ждать "настоящий" ответ.

Проблема решается довольно просто с помощью SNAT. Ниже приводится правило, которое выполняет эту функцию. Это правило вынуждает HTTP сервер передавать ответы на наш брандмауэр, которые затем будут переданы клиенту.


И дальше написано:
Каждый должен понять, что эти правила предназначены только лишь для корректной обработки адресации пакетов. В дополнение к этим правилам вам может потребоваться написать дополнительные правила для цепочки FORWARD таблицы filter. Не забудьте при этом, что пакеты уже прошли цепочку PREROUTING и поэтому их адреса назначения уже изменены действием DNAT.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Iptables+NAT доступ к вебсерверу из тойже локальной сети"  +/
Сообщение от Yukko on 12-Окт-04, 00:49 
По хорошей сложившейся традиции тот, кто задал вопрос и решил сам проблему, выкладывает ее решение на форум, где задал вопрос. Переписывать долго, поэтому даю ссылку:
http://www.k31.kiev.ua/board/viewtopic.php?t=825&postdays=0&...
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Iptables+NAT доступ к вебсерверу из тойже локальной сети"  +/
Сообщение от i.tuzhilkin email on 31-Июл-13, 10:38 
> По хорошей сложившейся традиции тот, кто задал вопрос и решил сам проблему,
> выкладывает ее решение на форум, где задал вопрос. Переписывать долго, поэтому
> даю ссылку:
> http://www.k31.kiev.ua/board/viewtopic.php?t=825&postdays=0&...

Приветствую!

Решение видимо сгинуло куда-то, может быть можете его актуаизировать?


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Iptables+NAT доступ к вебсерверу из тойже локальной сети"  +/
Сообщение от i.tuzhilkin email on 31-Июл-13, 11:23 
>> По хорошей сложившейся традиции тот, кто задал вопрос и решил сам проблему,
>> выкладывает ее решение на форум, где задал вопрос. Переписывать долго, поэтому
>> даю ссылку:
>> http://www.k31.kiev.ua/board/viewtopic.php?t=825&postdays=0&...
> Приветствую!
> Решение видимо сгинуло куда-то, может быть можете его актуализировать?

Видимо так должно быть:
iptables -t nat -A POSTROUTING -p tcp -m tcp -s 10.5.1.0/24 -d 10.5.1.5 --dport 80 -j SNAT --to-source 10.5.1.8

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

4. "Iptables+NAT доступ к вебсерверу из тойже локальной сети"  +/
Сообщение от fantom (??) on 12-Окт-04, 12:16 
Когда компы в одной подсети, общаются они напрямую, без участия шлюзов...

Читал, думал...
Сорри за категоричное сообщение по поводу правила,
я забыл что DNS вернет не IP из локалки, а IP реальный, все действительно побежит через шлюз...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру