The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"непонятки с пробросом портов "
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"непонятки с пробросом портов "  
Сообщение от besarg on 17-Июл-06, 15:32 
Привет. везде linux c ядром 2.6.16.18
для упрощения задачи, везде полиси файрволов ставим в ACCEPT.
дано:
router.ext 20.0.0.1 внешний и router.int 10.0.0.1 внутренний
server 10.0.0.2
host   10.0.0.3

необходимо с host сделать: telnet router.int 80 (или router.ext) и попасть на сервис на server
делаем стандартный проброс портов:
$any="0.0.0.0/0"
iptables -t nat -A PREROUTING -p tcp -d 20.0.0.1 --dport 80 -s $any -j DNAT --to 10.0.0.2:80                    
iptables -t nat -A PREROUTING -p tcp -d 10.0.0.1 --dport 80 -s $any -j DNAT --to 10.0.0.2:80                          
iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.2 --dport 80 -s 10.0.0.0/24 -j SNAT --to 10.0.0.1                            
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d $any -j SNAT --to 20.0.0.1

радуемся жизни: выход через 20.0.0.1 для сети 10.0.0.0/24 работает, порт пробрасывается для всех.

но вот в router появляется router.ext2 30.0.0.1 и мы только для host делаем его гейтвеем
ip rule add from 10.0.0.3 table 1
ip route add default via 30.0.0.1 dev eth2 table 1
ну и в таблицу нат-а, в самое начало добавляем
iptables -t nat -A POSTROUTING -s 10.0.0.3 -d $any -j SNAT --to 30.0.0.1
наружу от 30.0.0.1 всё работает, внутри сети 10.0.0.10 всё также работает, однако проброс порта c host на server не работает.. отваливается с ошибкой no route to host

Помогите вникнуть, где грабли? ведь добавленный гейтвей никаким боком не должен тут влиять, ведь к router.ext обращаюсь как host, а не как заНАТченный router.ext2... или я неправильно понял маршрутизацию


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

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


1. "непонятки с пробросом портов "  
Сообщение от Beginner email(??) on 17-Июл-06, 16:59 
>Привет. везде linux c ядром 2.6.16.18
>для упрощения задачи, везде полиси файрволов ставим в ACCEPT.
>дано:
>router.ext 20.0.0.1 внешний и router.int 10.0.0.1 внутренний
>server 10.0.0.2
>host   10.0.0.3
>
>необходимо с host сделать: telnet router.int 80 (или router.ext) и попасть на
>сервис на server
>делаем стандартный проброс портов:
>$any="0.0.0.0/0"
>iptables -t nat -A PREROUTING -p tcp -d 20.0.0.1 --dport 80 -s
>$any -j DNAT --to 10.0.0.2:80
>iptables -t nat -A PREROUTING -p tcp -d 10.0.0.1 --dport 80 -s
>$any -j DNAT --to 10.0.0.2:80
>iptables -t nat -A POSTROUTING -p tcp -d 10.0.0.2 --dport 80 -s
>10.0.0.0/24 -j SNAT --to 10.0.0.1
>iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -d $any -j SNAT --to
>20.0.0.1
>
>радуемся жизни: выход через 20.0.0.1 для сети 10.0.0.0/24 работает, порт пробрасывается для
>всех.
>
>но вот в router появляется router.ext2 30.0.0.1 и мы только для host
>делаем его гейтвеем
>ip rule add from 10.0.0.3 table 1
>ip route add default via 30.0.0.1 dev eth2 table 1
>ну и в таблицу нат-а, в самое начало добавляем
>iptables -t nat -A POSTROUTING -s 10.0.0.3 -d $any -j SNAT --to
>30.0.0.1
>наружу от 30.0.0.1 всё работает, внутри сети 10.0.0.10 всё также работает, однако
>проброс порта c host на server не работает.. отваливается с ошибкой
>no route to host
>
>Помогите вникнуть, где грабли? ведь добавленный гейтвей никаким боком не должен тут
>влиять, ведь к router.ext обращаюсь как host, а не как заНАТченный
>router.ext2... или я неправильно понял маршрутизацию

Подозреваю что проблема в следующем
Запрос приходит на 20.0.0.1 или  10.0.0.1, а ответ приходит с 30.0.0.1. Хост его сбрасывает как незапрошенный, а ответа на свой запрос так и не получает.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "непонятки с пробросом портов "  
Сообщение от besarg on 18-Июл-06, 06:27 
>Подозреваю что проблема в следующем
>Запрос приходит на 20.0.0.1 или  10.0.0.1, а ответ приходит с 30.0.0.1.

интересно как это получается? ведь
30.0.0.1 не default gateway у router
30.0.0.1 default gateway только для host
10.0.0.3 в который пробрасывается порт, отвечает через router только как 20.0.0.1

>Хост его сбрасывает как незапрошенный, а ответа на свой запрос так
>и не получает.

точнее получается так: запрос с 10.0.0.3 преобразованный в 30.0.0.1 нормально пробрасывается на 10.0.0.2. Ответ с 10.0.0.2 идет на 30.0.0.1-> а вот тут router почему-то не делает обратный nat для 10.0.0.3 и  ответный пакет висит на интерфейса 30.0.0.1 и потом отваливается по таймауту. Почему? загадка..
Мне кажется дело в недоделанной маршрутизации, но где именно, догадаться не могу.

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "непонятки с пробросом портов "  
Сообщение от Beginner email(??) on 18-Июл-06, 11:37 
>>Подозреваю что проблема в следующем
>>Запрос приходит на 20.0.0.1 или  10.0.0.1, а ответ приходит с 30.0.0.1.
>
>интересно как это получается? ведь
>30.0.0.1 не default gateway у router
>30.0.0.1 default gateway только для host
>10.0.0.3 в который пробрасывается порт, отвечает через router только как 20.0.0.1
>
>
>
>>Хост его сбрасывает как незапрошенный, а ответа на свой запрос так
>>и не получает.
>
>точнее получается так: запрос с 10.0.0.3 преобразованный в 30.0.0.1 нормально пробрасывается на 10.0.0.2. Ответ с 10.0.0.2 идет на 30.0.0.1-> а вот тут router почему-то не делает обратный nat для 10.0.0.3 и  ответный пакет висит на интерфейса 30.0.0.1 и потом отваливается по таймауту. Почему? загадка..
>Мне кажется дело в недоделанной маршрутизации, но где именно, догадаться не могу.
>

Извини, стормозил и неверно понял вопрос. Про конкретные причины говорить сложно - надо детально смотреть трафик на портах, но, вероятно, должно помочь следующее
замени правило
iptables -t nat -A POSTROUTING -s 10.0.0.3 -d $any -j SNAT --to 30.0.0.1
на
iptables -t nat -A POSTROUTING -s 10.0.0.3 -d ! 10.0.0.0/24 -j SNAT --to 30.0.0.1

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

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

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




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

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