LINUX.ORG.RU
ФорумAdmin

Занимательный роутинг...


0

0

У меня не совсем стандартная задача, пока не смог додуматься самостоятельно как её реализовать. У меня есть шлюз на линукс, который смотрит в интернет, есть комп с виндой, на которой стоит система билинга, есть локалка, подключенная к шлюзу. Нужно чтобы инет трафик попадал на вход шлюза (не заходя внутрь), затем на комп с биллингом и только потом в локалку. И самое важное здесь это то чтобы внутренний интернет трафик шлюза тоже проходил через биллинг %)

В общем, меня бы спасло, если бы в таблице маршрутизации, для подбора маршрута можно было бы учитывать интерфейс источника. Но там такой возможности нету :(

Может как-то через iptables можно извернуться?

Ответ на: Re: Занимательный роутинг... от zgen

Re: Занимательный роутинг...

А в какую хоть сторону рыть iproute2 ? В сторону tc? Я так понимаю в таблице роутинга при использовании ip route все равно не появится проверка исходного интерфейса?

navrocky ()
Ответ на: Re: Занимательный роутинг... от hizel

Re: Занимательный роутинг...

Очень не хочется, чтобы винда обслуживала подключение к инету... и вообще реального компа на винде у меня судя по всему не будет, его роль будет исполнять virtualbox :)

navrocky ()
Ответ на: Re: Занимательный роутинг... от hizel

Re: Занимательный роутинг...

Ну там прога шо пипец, делает всё, и фаервол и кэш и биллинг и пр. я не уверен что по netflow она сможет все это делать %) и особо с ней разбираться не хочется, хочется проэмулировать для нее окружающую среду.

navrocky ()
Ответ на: Re: Занимательный роутинг... от true_admin

Re: Занимательный роутинг...

это только учет трафика, насколько я понял, а блокировка, ограничение скорости?

navrocky ()

Re: Занимательный роутинг...

в iptables есть правило -j ROUTE.
уиспользуя его можешь заворачивать трафик с селектором -i интерфейс_абонетнов на виндовый билинг.

на винде скорей всего необходимо будет поставить два интерфейса.
в один трафик будет приходить со шлюза, со второго трафик будет уходить обратно на шлюз по дефолтроуту.

на шлюзе с селектором -i интерфейс_от_винды форвардишь/снатишь.

только так

chocholl ★★ ()
Ответ на: Re: Занимательный роутинг... от navrocky

Re: Занимательный роутинг...

Нашел, что это можно доставить патчем от patch-o-matic-ng, блин, неохота ядро свое собирать :( А всё-таки нет ли возможности такой маршрут задать через ip route?

что-то типа:

ip route add default via [шлюз1] src [локалка1]

ip route add default via [шлюз2] src [локалка2]

navrocky ()
Ответ на: Re: Занимательный роутинг... от navrocky

Re: Занимательный роутинг...

так тоже можно сделать. это еще один вариант.

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

только не забудь про обратный трафик, он должен идти также.
придеться освоить пакет iproute2

chocholl ★★ ()
Ответ на: Re: Занимательный роутинг... от chocholl

Re: Занимательный роутинг...

Хех, так вот я не пойму как мне такой маршрут то задать? Ман по ip route никак не разберу. То что я писал выше не срабатывает, это плод моей фантазии :) не подскажешь как задать этот маршрут с условием, лучше примером ;)

еще не совсем понял, зачем натить, по идее пакет из локалки должен попадать на шлюз, затем с шлюза на внутренний интерфейс виндовой машины, с нее с внешнего интерфейса, опять на шлюз, и уже после этого на шлюзе маскарадиться в инет. Тут никаких NATов нету вроде, только маршруты.

navrocky ()
Ответ на: Re: Занимательный роутинг... от navrocky

Re: Занимательный роутинг...

если с iproute2, то как-то так



ip route add default via WIN_IP1 table T1
ip rule add from ЛОКАЛЬНАЯ_СЕТЬ1 table T1

ip route add default via PROV_IP1 table T2
ip rule add from ЛОКАЛЬНАЯ_СЕТЬ2 table T2

ну и создать их в rt_tables (если не ошибаюсь с названием)

локальнаясеть1 - это реальные адреса пользователей.
локальнаясеть2 - это любые адреса, в которые натит винда.

дополнительный нат нужен, что разделить трафик на две таблицы.
подробности тут http://www.opennet.ru/docs/RUS/LARTC/

естественно должны быть static роуты для обратного трафика в локальнаясеть2.



или патчить ядро и использовать -j ROUTE

chocholl ★★ ()

Re: Занимательный роутинг...

http://sourceforge.net/projects/xtables-addons
Там есть модуль TEE (делает то же, что когда-то делал модуль ROUTE:
iptables ... -j ROUTE --tee ):

   TEE
       The TEE target will clone a packet and redirect this clone  to  another
       machine  on the local network segment. In other words, the nexthop must
       be the target, or you will have to configure the nexthop to forward  it
       further if so desired.

       --gw ipaddr
              Send  the  cloned  packet  to the host reachable at the given IP
              address.  Use of 0.0.0.0 (for IPv4  packets)  or  ::  (IPv6)  is
              invalid.

Думаю это проще, чем реально пропускать весь трафик через биллинговый комп (извращаться с маршрутизацией и т.п.)

spirit ★★★★★ ()

Re: Занимательный роутинг...

И вообще, может есть возможность не пихать трафик на биллинговую тачилу, а отдавать только счётчики, или биллинг на столько суров ? :-)

spirit ★★★★★ ()
Ответ на: Re: Занимательный роутинг... от spirit

Re: Занимательный роутинг...

ну я думаю использовать все возможности билинговой проги. Щас пока перевариваю полученную информацию, но вроде мне должно хватить маршрутов с условием через ip route. Если что буду патчить ядро. Всем ответившим спасибо.

navrocky ()
Ответ на: Re: Занимательный роутинг... от spirit

Re: Занимательный роутинг...

Дык, мне же и нужно весь трафик пропускать через биллинг, он (биллинг), трафик будет ограничивать. И желательно чтобы потребление инет трафика самим шлюзом тоже было учтено, чтобы разрешать споры с провом.

navrocky ()

Re: Занимательный роутинг...

Я не совсем понял задачу. Есть ли в этой схеме NAT? Какие пакеты нужно отправлять на биллинг (прямо как пришли из кабеля провайдера или после обратного SNAT)? И как настроены клиенты (кто у них шлюз по умолчанию)?

А так пакеты можно маркировать в iptables (-j MARK 123) и потом "раскидывать" по разным таблицам маршрутизации "ip rule add fwmark 123 table XXX". Но если ip-адрес назначен на интерфейс, то его так просто не смаршрутизировать (см. вывод команды "ip rule show").

mky ★★★★★ ()

Re: Занимательный роутинг...

А чего-то не догоняю. Если весь траф всё равно идёт через биллинг то почему бы его вместо твоего шлюза не поставить? В чём профит такого закольцовывания трафика?

true_admin ★★★★★ ()
Ответ на: Re: Занимательный роутинг... от navrocky

Re: Занимательный роутинг...

+1
>и фаервол и кэш и биллинг и пр.

Зачем вам тогда так жизненеобходим шлюз с linux? По-моему, проблема мегазакручена. Если хочется поиграться с linux+iproute, поставьте 2 компутера (шлюза, win&lin) последовательно.

>ip route add default via [шлюз1] src [локалка1]

>ip route add default via [шлюз2] src [локалка2]

смотрите man ip, про ip rule в частности.
google -> "linux anvadced routing and traffic control перевод"
раздел про маршрутизицию по источнику

markevichus ★★★ ()

Re: Занимательный роутинг...

или тред о том, что детишки не освоили brctl + NAT... и таки да, гонять весь траф - это конечно сильно...

sda00 ★★★ ()
Ответ на: Re: Занимательный роутинг... от navrocky

Re: Занимательный роутинг...

Отвечу сразу всем :) Я бы конечно мог бы упростить задачу, но тут присутствует спортивный интерес, и плюс не вкайф ставить еще один физический комп, и абсолютно не прельщает подключение к инету настраивать под виндой с ее этими ярлыками на рабочем столе, и шлюз уже давно как работает, как часы. Вот и подумал впихнуть этот виндовый биллинг под виртуалкой, но надо чтобы трафик весь полностью учитывался, т.к. на шлюзе много чего крутится и жрет трафик.

Вроде для себя уже придумал, с вашей помощью, как эту ситуацию разрулить на маршрутах и фильтрации. Теперь вот думаю как виртуалбоксе поднять 2 интерфейса, там модуль ядра предоставляет только 1 интерфейс vboxnet0 и хз как второй создать.

navrocky ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.