The OpenNET Project / Index page

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

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

"Маршрутизация по UID"  
Сообщение от Alex (??) on 03-Июл-08, 15:50 
Есть компьютер с Linux подключенный к 2 провайдерам.
Необходимо сделать, чтобы некоторые сервисы(процессы) ходили через один канал, а остальные через другой.

Была сделана попытка пометить пакеты от определенного процесса ...
iptables -t mangle -A OUTPUT -m owner --uid-owner 510 -j MARK --set-mark 5

... и применить необходимую таблицу маршрутизации
ip route add all via 192.168.1.1 dev eth1 table 100
ip rule add fwmark 5 table 100
ip route flush cache

Но это не имело результата, вероятно из-за того что решение о маршрутизации принимается до прохождения пакета в таблице mangle, судя по схеме в "Руководстве по iptables" (http://www.opennet.me/docs/RUS/iptables/).

Как решить данную проблему.

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

 Оглавление

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


1. "Маршрутизация по UID"  
Сообщение от Z0termaNN (ok) on 03-Июл-08, 16:56 
>[оверквотинг удален]
>... и применить необходимую таблицу маршрутизации
>ip route add all via 192.168.1.1 dev eth1 table 100
>ip rule add fwmark 5 table 100
>ip route flush cache
>
>Но это не имело результата, вероятно из-за того что решение о маршрутизации
>принимается до прохождения пакета в таблице mangle, судя по схеме в
>"Руководстве по iptables" (http://www.opennet.me/docs/RUS/iptables/).
>
>Как решить данную проблему.

а что в prerouting нельзя было это правило занести ?

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

2. "Маршрутизация по UID"  
Сообщение от Romik (??) on 03-Июл-08, 17:39 
Если bindaddr серверу указать не 0.0.0.0 а определенный, то и запросы он на нем принимать будет, и ответы с него слать.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Маршрутизация по UID"  
Сообщение от Аноним (??) on 03-Июл-08, 21:01 
>Если bindaddr серверу указать не 0.0.0.0 а определенный, то и запросы он
>на нем принимать будет, и ответы с него слать.

С него, это точно :)
Но через что? Через какой линк/шлюз?

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

4. "Маршрутизация по UID"  
Сообщение от skgennady email(ok) on 04-Июл-08, 09:12 
>>Если bindaddr серверу указать не 0.0.0.0 а определенный, то и запросы он
>>на нем принимать будет, и ответы с него слать.
>
>С него, это точно :)
>Но через что? Через какой линк/шлюз?

А так нельзя?
iptables -t nat -A POSTROUTING -m owner --uid-owner 510 -j SNAT --to-source x.x.x.x

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

10. "Маршрутизация по UID"  
Сообщение от Аноним (??) on 04-Июл-08, 18:12 
>А так нельзя?

Не нужно.

Проще пометить iptables, правилами (ip rule) загнать в нужные (разные) таблицы, и в таблицах уже маршрутизировать как надо.

Автор темы, не просёк фишки таблицы правил и таблицы маршрутизации. И кстати не первый раз вижу как их путают ))

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

5. "Маршрутизация по UID"  
Сообщение от Romik (??) on 04-Июл-08, 11:12 
Скажем так:
eth0 192.168.1.2 255.255.255.0 gw 192.168.1.1
eth2 192.168.2.2 255.255.255.0 gw 192.168.2.1

bindaddr: 192.168.1.2

запросы будет принимать на нем и с него же отвечать через свой шлюз (!)

Проверьте.

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

6. "Маршрутизация по UID"  
Сообщение от Alex (??) on 04-Июл-08, 13:03 
>Скажем так:
>eth0 192.168.1.2 255.255.255.0 gw 192.168.1.1
>eth2 192.168.2.2 255.255.255.0 gw 192.168.2.1
>
>bindaddr: 192.168.1.2
>
>запросы будет принимать на нем и с него же отвечать через свой
>шлюз (!)
>
>Проверьте.

eth0 192.168.1.2 255.255.255.0
eth2 192.168.2.2 255.255.255.0
default via 192.168.2.1
bindaddr: 192.168.1.2

Работает если применить к пакетам исходящим с адреса 192.168.1.2 отдельную таблицу маршрутизации, иначе (вероятно) пакеты все равно идут на шлюз по умолчанию.
echo 200 ISP2 >> /etc/iproute2/rt_tables         //Создает таблицу
ip route add default via 192.168.1.1 table ISP2  //Добавляем маршрут на нужный шлюз
ip rule add from 192.168.1.2 table ISP2          //Назначем для пакетов с 192.168.1.2 нужную таблицу

Проверяем.
traceroute -s 192.168.1.2 www.yandex.ru /идет через 192.168.1.1
traceroute -s 192.168.2.1 www.yandex.ru /идет через 192.168.2.1
traceroute www.yandex.ru                /идет через 192.168.2.1


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

Но, например в lartc указана возможность маршрутизации на основе UID (по тексту даже с восклицательным знаком) http://www.opennet.me/docs/RUS/LARTC/x113.html
Но способа сделать это пока я так и не нашел

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

7. "Маршрутизация по UID"  
Сообщение от PavelR (??) on 04-Июл-08, 13:21 

>Но, например в lartc указана возможность маршрутизации на основе UID (по тексту
>даже с восклицательным знаком) http://www.opennet.me/docs/RUS/LARTC/x113.html
>Но способа сделать это пока я так и не нашел

промаркировать пакеты в -t mangle OUTGOING через connmark и дальше использовать маркер при выборе маршрута ?


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

8. "Маршрутизация по UID"  
Сообщение от Alex (??) on 04-Июл-08, 13:54 
>
>>Но, например в lartc указана возможность маршрутизации на основе UID (по тексту
>>даже с восклицательным знаком) http://www.opennet.me/docs/RUS/LARTC/x113.html
>>Но способа сделать это пока я так и не нашел
>
>промаркировать пакеты в -t mangle OUTGOING через connmark и дальше использовать маркер
>при выборе маршрута ?

Ставил маркер типа
iptables -t mangle -A OUTPUT ... MARK --set-mark 5

К сожалению сейчас не могу проверить CONNMARK (), но исходить из документации к CONNMARK
"The CONNMARK target is used to set a mark on a whole connection, much the same way as the MARK target does." - т.е. маркирует также как и MARK, но канал целиком - можно предположить что результат будет таким же, т.к. решение о маршрутизации принимается до прохождения пакета в таблице mangle, судя по схеме в "Руководстве по iptables" (http://www.opennet.me/docs/RUS/iptables/).

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

9. "Маршрутизация по UID"  
Сообщение от PavelR (??) on 04-Июл-08, 15:57 

>К сожалению сейчас не могу проверить CONNMARK (), но исходить из документации
>к CONNMARK
>"The CONNMARK target is used to set a mark on a whole
>connection, much the same way as the MARK target does." -
>т.е. маркирует также как и MARK, но канал целиком - можно
>предположить что результат будет таким же, т.к. решение о маршрутизации принимается
>до прохождения пакета в таблице mangle, судя по схеме в "Руководстве
>по iptables" (http://www.opennet.me/docs/RUS/iptables/).

man iptables:

mangle:
  This table is used for specialized packet alteration.  Until kernel 2.4.17 it had two built-in chains: PREROUTING (for altering incoming pack-ets before routing) and OUTPUT (for altering locally-generated packets before routing).  Since kernel 2.4.18, three other built-in chains  are also  supported:  INPUT (for packets coming into the box itself), FORWARD (for altering packets being routed through the box), and POSTROUTING for altering packets as they are about to go out).

обратите внимание на предложение:

OUTPUT (for altering locally-generated packets before routing).  

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

11. "Маршрутизация по UID"  
Сообщение от Alex (??) on 04-Июл-08, 18:17 
>[оверквотинг удален]
>kernel 2.4.17 it had two built-in chains: PREROUTING (for altering incoming
>pack-ets before routing) and OUTPUT (for altering locally-generated packets before routing).
> Since kernel 2.4.18, three other built-in chains  are also
> supported:  INPUT (for packets coming into the box itself),
>FORWARD (for altering packets being routed through the box), and POSTROUTING
>for altering packets as they are about to go out).
>
>обратите внимание на предложение:
>
>OUTPUT (for altering locally-generated packets before routing).

Согласен.
Но тем ни менее - пакеты в mangle OUTPUT маркируются (для проверки в filter OUTPUT ставил DROP, они отбрасывались), но по привязанной таблице не маршрутизируются. Возможно их как-то по другому нужно маршрутизировать, не через iproute2.
Возможно CONNTRACK в этом поможет - но нету его в моем iptables к сожалению, не мог сейчас проверить.
  По интернету видел пару аналогичных тем, но безрезультатных

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

12. "Маршрутизация по UID"  
Сообщение от PavelR (??) on 04-Июл-08, 19:25 
>Согласен.
>Но тем ни менее - пакеты в mangle OUTPUT маркируются (для проверки
>в filter OUTPUT ставил DROP, они отбрасывались), но по привязанной таблице
>не маршрутизируются. Возможно их как-то по другому нужно маршрутизировать, не через
>iproute2.

когда найдете этот способ, расскажите. Имхо его просто не существует.

>Возможно CONNTRACK в этом поможет - но нету его в моем iptables
>к сожалению, не мог сейчас проверить.
>  По интернету видел пару аналогичных тем, но безрезультатных

У меня всё маршрутизировалось. Попробуйте проверить последовательность применения правил маршрутизации ip rule sh / ip table xxx list.

http://www.opennet.me/tips/info/1651.shtml

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

14. "Маршрутизация по UID"  
Сообщение от Alex (??) on 07-Июл-08, 12:53 
На ядре 2.6 получилось (на тестовой машине).
Но на 2.4 такой же набор правил не работает (во всяком случае у меня), а используется именно 2.4

>когда найдете этот способ, расскажите. Имхо его просто не существует.

  iptables ... -j ROUTE --gw xx.xx.xx.xx
  "ROUTE
    This  is  used  to explicitly override the core network stack's routing decision.  mangle table."
  Вот только его в iptables на рабочей машине тоже нету :(

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

13. "Маршрутизация по UID"  
Сообщение от Oyyo on 05-Июл-08, 09:47 
имею такие же нужды, проблема решалась подбором маркера
следующее правило верное
ip rule add fwmark 5 table 100
не не пробовал именно маркер пять, а смакой 2 у менгя возникала проблема
утилита ip её не правильно ставила, поставил макер 100 в таком виде
ip rule add fwmark 0х64 table 100
всё отлично заработало
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Маршрутизация по UID"  
Сообщение от Alex (??) on 07-Июл-08, 12:55 
>имею такие же нужды, проблема решалась подбором маркера
>следующее правило верное
>ip rule add fwmark 5 table 100
>не не пробовал именно маркер пять, а смакой 2 у менгя возникала
>проблема
>утилита ip её не правильно ставила, поставил макер 100 в таком виде
>
>ip rule add fwmark 0х64 table 100
>всё отлично заработало

Да, на ядре 2.6 работает.
Но на 2.4 такой же набор правил не хочет (во всяком случае пока)

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

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

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




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

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