iproute2 и проброс портов (Проблмма с пробросом портов в случае с двумя провайдерами.)
Модераторы: SLEDopit, Модераторы разделов
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
iproute2 и проброс портов
Собственно столкнулся со своим недопониманием работы iproute2.
Исходные данные:
Есть шлюз в интернет с тремя алиасами на интерфейсе - алиасы от разных провайдеров.
На шлюзе настроено iproute2 по мануалу с opennet.ru.
На шлюзе оуществлен проброс портов средствами iptables в DMZ (DNAT).
Было замечено, что при прохождении пакета в DMZ ответ идет все равно по default gw.
Я подозреваю, что iproute2 в принципе не может разрулить эту ситуацию,необходимой информации (какой именно??? - не нашел четкой документации по этому вопросу) после DNAT в пакете уже не содержится.
Буду весьма признателен за развернутое обьяснение этого механизма.
Исходные данные:
Есть шлюз в интернет с тремя алиасами на интерфейсе - алиасы от разных провайдеров.
На шлюзе настроено iproute2 по мануалу с opennet.ru.
На шлюзе оуществлен проброс портов средствами iptables в DMZ (DNAT).
Было замечено, что при прохождении пакета в DMZ ответ идет все равно по default gw.
Я подозреваю, что iproute2 в принципе не может разрулить эту ситуацию,необходимой информации (какой именно??? - не нашел четкой документации по этому вопросу) после DNAT в пакете уже не содержится.
Буду весьма признателен за развернутое обьяснение этого механизма.
-
stannum
- Сообщения: 322
- Статус: Свободолюбитель
- ОС: Debian GNU/Linux unstable
Re: iproute2 и проброс портов
Закончите фразу:
- А если подробнее надо чтобы ....
- А если подробнее надо чтобы ....
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
1) Надо чтобы входящие запросы от одного провайдера и днатящиеся на сервис в DMZ уходили по тому же маршруту.
2) Еще интересно по каким критериям выбирается маршрут в iproute2 (хочу разобраться, чтобы не возникало впредь таких ситуаций)
-
user
- Сообщения: 163
- Статус: ~
- ОС: Debian GNU/Linux
-
stannum
- Сообщения: 322
- Статус: Свободолюбитель
- ОС: Debian GNU/Linux unstable
Re: iproute2 и проброс портов
Я не уверен, задача для меня не тривиальная, но я бы попробовал реализовать это посредством маркировки пакетов, при помощи модуля CONNMARK в iptables, на самом шлюзе.
Добавлено: и соответственно SNATить потом в зависимости от марки.
Добавлено: и соответственно SNATить потом в зависимости от марки.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: iproute2 и проброс портов
а вообще ситуация попахивает чистой воды динамической маршрутизацией. со всеми вытекающими…
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
У меня маскарад на выходе в интернет
также
# ip rule show
0: from all lookup local
32763: from (ip1 на интерфейсе) lookup SKY
32764: from (ip2 на интерфейсе) lookup CTS
32765: from (ip3 на интерфейсе) lookup UTK
32766: from all lookup main
32767: from all lookup default
по дефолту идет через CTS
замечено, что если сменить default gw, то конект пропадает из подсети CTS, но с других провайдеров заходит.
можете что сказать или следует детально изучить ситуацию через tcpdump? (просто сервисы кретичные и длительный просто не жлателен)
и еще:
ip route show table default
показывает пустоту. так должно быть? это что за таблица?
также
# ip rule show
0: from all lookup local
32763: from (ip1 на интерфейсе) lookup SKY
32764: from (ip2 на интерфейсе) lookup CTS
32765: from (ip3 на интерфейсе) lookup UTK
32766: from all lookup main
32767: from all lookup default
по дефолту идет через CTS
замечено, что если сменить default gw, то конект пропадает из подсети CTS, но с других провайдеров заходит.
можете что сказать или следует детально изучить ситуацию через tcpdump? (просто сервисы кретичные и длительный просто не жлателен)
и еще:
ip route show table default
показывает пустоту. так должно быть? это что за таблица?
-
Sandle_X
- Сообщения: 117
- ОС: Gentoo Base System
Re: iproute2 и проброс портов
разбей сети по таблицам, и для каждой таблицы назначь свой default маршрут
/The information should be free.../ <Gentoo Base System version 1.12.10>
Конференция форума в Jabber: linuxforum@conference.jabber.ru
Конференция форума в Jabber: linuxforum@conference.jabber.ru
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
[root@gw root]# ip route show table UTK
default via 83.221.197.177 dev eth0
[root@gw root]# ip route show table CTS
default via 213.27.9.65 dev eth0
это сделано было. вот поступила информация от прова CTS - они говорят, что при моем переключении на UTK ответы на запросы из их сети идут все равно по моей цепочке main...
Повторю изначальный вопрос: DNAT не ломает этот механизм? Не должен ли я назначить таблицы для пакетов, возвращающихся из DMZ и перед этим DNAT-ить на разные ip в зависимости от источника?
-
Olden Gremlin
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: iproute2 и проброс портов
Саша, нет тут даже близко динамической маршрутизации... Даже не пахнет... Так-что и вытекать-то нечему...
Вопрос в том в какой канал направить исходящий от внутреннего клиента ответ.
Имхо, задача вполне решаемая. Думать просто лениво... Но...
Совсем бредовая идея, а если делать DNAT с одного провайдера на 192.168.0.1, а с другого на 192.168.1.1. Где 192.168.0.1 и 192.168.1.1 это два адреса на одном и том-же интерфейсе?... Мысль ясна? К сожалению проверить идею нет ни сил, ни времени, ни возможности, ни желанья...
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
Olden Gremlin писал(а): ↑01.11.2007 15:51
Саша, нет тут даже близко динамической маршрутизации... Даже не пахнет... Так-что и вытекать-то нечему...
Вопрос в том в какой канал направить исходящий от внутреннего клиента ответ.
Имхо, задача вполне решаемая. Думать просто лениво... Но...
Совсем бредовая идея, а если делать DNAT с одного провайдера на 192.168.0.1, а с другого на 192.168.1.1. Где 192.168.0.1 и 192.168.1.1 это два адреса на одном и том-же интерфейсе?... Мысль ясна? К сожалению проверить идею нет ни сил, ни времени, ни возможности, ни желанья...
Мысль ясна и понятна. Уже обдумываю ее который день. Просто надеялся что можно решить через iproute2 - думал у меня просто пробел в знаниях. Т.е. я верно думал, что iproute2 спасает только для локального сервера без всяких натов?
-
Olden Gremlin
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: iproute2 и проброс портов
... неверно думал... в принципе наверняка можно еще как-то подумать над описанной проблемой... но...
о! еще одна мысль... например, если мы dnat'им 25-й порт, то...
от первого провайдера dnat на внутренний 2025 порт, от второго на 2125. соответственно эти два порта слушать, ну и отвечать на запросы...
как мысль?
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
Olden Gremlin писал(а): ↑01.11.2007 18:22... неверно думал... в принципе наверняка можно еще как-то подумать над описанной проблемой... но...
о! еще одна мысль... например, если мы dnat'им 25-й порт, то...
от первого провайдера dnat на внутренний 2025 порт, от второго на 2125. соответственно эти два порта слушать, ну и отвечать на запросы...
как мысль?
те же яйца - вид сбоку...
так по каким же тогда критериям выбирается маршрут в iproute2, если я был не прав?
-
Olden Gremlin
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: iproute2 и проброс портов
критерии по роутингу более чем просты:
Код: Выделить всё
ip rule
ip routeКод: Выделить всё
tc qdisc
tc class
tc filter
tc action«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
Olden Gremlin писал(а): ↑02.11.2007 09:52
критерии по роутингу более чем просты:критерии по трафику...Код: Выделить всё
ip rule ip routeи не требуйте с iproute больше чем он может сделать...Код: Выделить всё
tc qdisc tc class tc filter tc action
т.е. он может по полю from маршрутизировать по орпеделенной таблице и все?
про шейпинг я имею представление - хочу имеено маршрутизацию допонять.
-
stannum
- Сообщения: 322
- Статус: Свободолюбитель
- ОС: Debian GNU/Linux unstable
Re: iproute2 и проброс портов
Ради интереса нашел за < 1 минуты: помоему то что надо и причем через iproute2
-
Olden Gremlin
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: iproute2 и проброс портов
нравится мне эта "группа пловцов в полосатых купальниках"... это я про то, что сначала разбираемся с шейпером, а потом уже можо и на роутинг взглянуть и понять... ну да ладно...
тут до меня уже дали замечательную ссылку, но я повторюсь - читаем IP Command Reference. там документированы если не все, то многие возможности ip. итак, какие возможности мы имеем с ip?
- ip link (ip l) - конфигурация сетевого устройства
- ip address (ip a) - управление назначениями адресов устройству
- ip neightbour (ip n) - управление состоянием arp-таблицы
- ip route (ip r) - управление таблицами роутинга (ясень красень, что их может быть, при использовании ip, больше одной)
- ip rule - управление базой политик роутинга (собственно в какую таблицу роутинга направить тот или иной пакет)
- ip maddress - управление мультикастовыми адресами (не разбирался... не помогу...)
- ip mroute - управление мультикастовым роутингом (не разбирался... не помогу...)
- ip tunnel (ip t) - конфигурация туннелей (ipip, gre... есть еще sit - насколько я понял - туннелирование IPv6 трафика через IPv4)
- ip monitor и ip rmon - мониторинг состояние (не разбирался... не помогу...)
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
-
Olden Gremlin
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: iproute2 и проброс портов
ИМХО если человек описывал, что у него два провайдера, если говорил о том, что не работает только DMZ, то при каком ... тут Ваша ссылка?stannum писал(а): ↑02.11.2007 12:37Ради интереса нашел за < 1 минуты: помоему то что надо и причем через iproute2
Я так понимаю, что либо разделенный доступ, либо распределенная нагрузка у человека и так уже настроены... и не работает именно DMZ!
Но опять таки - это только мое ИМХО.
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
-
stannum
- Сообщения: 322
- Статус: Свободолюбитель
- ОС: Debian GNU/Linux unstable
Re: iproute2 и проброс портов
А ссылка как раз про двух провайдеров, и про маршрутизацию обратных ответов к ним, а DMZ (DeMilitary Zone) - демилитаризованная зона; область локальной сети, защищенная от несанкционированного доступа извне с помощью межсетевого экрана или другого средства сетевой защиты, тут мало чего меняет.
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
stannum писал(а): ↑02.11.2007 13:07А ссылка как раз про двух провайдеров, и про маршрутизацию обратных ответов к ним, а DMZ (DeMilitary Zone) - демилитаризованная зона; область локальной сети, защищенная от несанкционированного доступа извне с помощью межсетевого экрана или другого средства сетевой защиты, тут мало чего меняет.
как раз руководствуясь этой статьей и настраивал, но сами видите, что описано как сделать, но не написано почему так и не иначе и как рабтает этот механизм.
все эти инструкции привели именно к тому результату, с которого я начал свое повествование.
-
stannum
- Сообщения: 322
- Статус: Свободолюбитель
- ОС: Debian GNU/Linux unstable
Re: iproute2 и проброс портов
А покажите ваш
Код: Выделить всё
# iptables -t nat -L -vn-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
к сожелению не могу в целях безопасности, да и не разберете вы все мои правила...
На словах: в прероутинге идет днат определенных портов в дмз, в построутинге просто маскрад всех пакетов с внутреннего интерфейса. таблицу iproute2 привел выше.
А маскарад, как я понимаю, идет позже принятия решения о маршрутизации(оно и правильно) и маскарадит по default gw...
В понедельник думаю реализую предложеную схему с 3 различными адресами в дмз для разных провайдеров - на мой взгляд самое верное решение.
кстати спасибо за документацию по iproute2 - очень подробно, жаль правдо что не переведено, но это мелочи.
-
stannum
- Сообщения: 322
- Статус: Свободолюбитель
- ОС: Debian GNU/Linux unstable
Re: iproute2 и проброс портов
А вы проверьте не маскарадятся ли пакеты исходящие от самого шлюза? если да то проблема очевидна.
-
Olden Gremlin
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: iproute2 и проброс портов
не знаю как по поводу шлюза, но идея интересная и можно было бы еще проверить тему (если на машине в DMZ стоит nix) не маскарадятся ли пакеты исходящие оттуда (ну мало ли) - они должны уходить по роутингу и _НИКАКОГО_ маскарадинга.
но, увы, если внутренняя безопасность исключает вывод iptables -t nat -L -n с обеих машин (шлюза и DMZ) то идеи на этом и закончаться...
да по большому-то счету уберите свой реальный ip из вывода командочки, заменив на xxx.xxx.xxx.xxx - все это поймут... имхо это решит вопрос безопасности
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
судя по правилу - маскарадятся... я вас понял...
нужно исключить из маскарада зону DNZ с этими портами.. и тогда по-идее заработает iproute2 как и задумано!
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
Olden Gremlin писал(а): ↑02.11.2007 16:45не знаю как по поводу шлюза, но идея интересная и можно было бы еще проверить тему (если на машине в DMZ стоит nix) не маскарадятся ли пакеты исходящие оттуда (ну мало ли) - они должны уходить по роутингу и _ИКАКОГО_ маскарадинга.
но, увы, если внутренняя безопасность исключает вывод iptables -t nat -L -n с обеих машин (шлюза и DMZ) то идеи на этом и закончаться...
да по большому-то счету уберите свой реальный ip из вывода командочки, заменив на xxx.xxx.xxx.xxx - все это поймут... имхо это решит вопрос безопасности
Да верно товарищ подсказывает - маскарадинг происходит после принятия решения о маршрутизации - вспомните туториал. И соответственно маскарад идет по маршруту по-умолчанию.
А если этот маскарад убрать(он используется только для доступа в интернет из дмз), то обратное преобразование адресов(ответных пакетов) будет происходить по номеру сессии на основании правила DNAT. И тут то iproute2 показать должен себя во всей красе! Этож как маскарад наоборот - нам не нужно делать DNAT для доступа в интернет - хватает маскарада/SNAT.
Наконец-то мой мозг вышел из ступора
Всем удачных праздников
-
AnViar
- Сообщения: 182
- ОС: Linux, Solaris
Re: iproute2 и проброс портов
Путь оказался ложным. Пакеты, приходящие в ответ из DMZ не попадают в правило маскарада - проверено экспериментально добавлением тестовой цепочки. Кстати вопрос почему? Из-за какого-то состояния --state этих пакетов?
Остается вариант с несколькими алиасами в DMZ
Остается вариант с несколькими алиасами в DMZ
-
Olden Gremlin
- Сообщения: 365
- Статус: RAP22-RIPE
- ОС: Debian GNU/Linux Wheezy
Re: iproute2 и проброс портов
Думаю, что экстрасенсы, среди подписчиков этой темы, сегодня в отпуске... А свои правила файрвола (из соображений безопасности(?)) Вы показывать не хотите... Увы, с такими предпосылками врядли кто-то сможет тать Вам более-менее вразумительный ответ/совет.
«Когда у общества нет цветовой дифференциации штанов — то нет цели!»
nic-hdl: RAP22-RIPE
-
mirlas
- Сообщения: 158
- ОС: Gentoo; Mandriva; FreeBSD
Re: iproute2 и проброс портов
У меня обсолютно такая же задача, как и у Вас. Пока понятно, что все прокидывается на локальную машину за фаерволом (Правилом DNAT), а обратно ответ идет только тому хосту, который обратился к IP провайдера, чей DGW стоит по умолчанию на фаерволе для исходящих пакетов. У меня задача принципиальная - нужно прокидывать так, что бы на внутреннем почтовом сервере были реальные IP клиентов. Если это не критично - то помогает rinetd. Он подменяет внешние IP адреса на внутренние и таким образом мы можем получить доступ к SMTP на локальном почтовом сервере с двух разных провайдоров. Поясню: С одного провайдера SMTP доступен через DNAT (через него же и уходит инет), а c дргого через rinetd (в этом случае, все подключения на SMTP с этого провайдера будут выглядеть как подлючения от локального адреса фаервола).
С первым вариантом - без маркировки пакетов видимо не обойтись... Пока думаю, у меня такое чувство, что я скоро что-то придумаю
) Но оно может быть ложным...
))
Кстати, я не знаю, почему так все вкусно описано в документации, когда пакеты приходящие в ответ никак не могут ни по стейтам перенаправляться на нужный маршрут ни по адресу отправителя. Ибо оба этих критерия равнозначны для обоих провайдеров и могли придти отуда угодно.
С первым вариантом - без маркировки пакетов видимо не обойтись... Пока думаю, у меня такое чувство, что я скоро что-то придумаю
Кстати, я не знаю, почему так все вкусно описано в документации, когда пакеты приходящие в ответ никак не могут ни по стейтам перенаправляться на нужный маршрут ни по адресу отправителя. Ибо оба этих критерия равнозначны для обоих провайдеров и могли придти отуда угодно.
-
buklov
- Сообщения: 1
Re: iproute2 и проброс портов
решил пока эту проблемму просто мапя порты через xinetd
service nek
{
disable = no
port = 3388
socket_type = stream
protocol = tcp
user = root
redirect = 192.168.1.201 3389
type = UNLISTED
wait = no
}
и всё работает через обоих провайдеров, правда не красиво что приходится настраивать в нескольких местах и можно забыть, но пока другова выхода не нашёл
service nek
{
disable = no
port = 3388
socket_type = stream
protocol = tcp
user = root
redirect = 192.168.1.201 3389
type = UNLISTED
wait = no
}
и всё работает через обоих провайдеров, правда не красиво что приходится настраивать в нескольких местах и можно забыть, но пока другова выхода не нашёл