The OpenNET Project / Index page

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

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

"iproute и локальные пакеты"  
Сообщение от Konstantin email(??) on 16-Ноя-06, 12:39 
Есть LAN шлюз на Линуксе с двумя интерфейсами в Интернет.
Связка стандартная.
LAN - Linux - Internet
             - Internet

С помощью iproute2 и iptables настроил чтобы почта из LAN в Инет ходила по одному интерфейсу, а Веб и все остальное по другому.
На шлюзе ставлю MARK - в цепочке PREROUTING И потом iproute разруливает. Никаких вопросов

Но дело в том, что на Линуксе есть почтовый сервер, который тоже надо пускать по "почтовому" интерфейсу. Вся беда в том, что локальные пакеты в Линуксе поступают сразу на маршрутизацию, через mangle они проходят потом. И до iproute2 bи НЕГДЕ ПОСТАВИТЬ MARK.
Как быть в таком случае?

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

 Оглавление

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


1. "iproute и локальные пакеты"  
Сообщение от perece on 16-Ноя-06, 18:25 
>Есть LAN шлюз на Линуксе с двумя интерфейсами в Интернет.
>Связка стандартная.
> LAN - Linux - Internet
>            
> - Internet
>
>С помощью iproute2 и iptables настроил чтобы почта из LAN в Инет
>ходила по одному интерфейсу, а Веб и все остальное по другому.
>
>На шлюзе ставлю MARK - в цепочке PREROUTING И потом iproute разруливает.
>Никаких вопросов
>
>Но дело в том, что на Линуксе есть почтовый сервер, который тоже
>надо пускать по "почтовому" интерфейсу. Вся беда в том, что локальные
>пакеты в Линуксе поступают сразу на маршрутизацию, через mangle они проходят
>потом. И до iproute2 bи НЕГДЕ ПОСТАВИТЬ MARK.
>Как быть в таком случае?
как вариант:
у тебя на обоих ифейсах в инет реальные адреса?
можешь ли ты заставить почтовик биндиться к ip того ифейса, через который летает почта?
если да, то просто разрули при помощи iproute2 используя src addr как routing key

\^P^/

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

2. "iproute и локальные пакеты"  
Сообщение от Digiman email(ok) on 25-Окт-08, 02:15 
У меня проблема другого плана: шлюз на Debian 4.0 (ядро 2.6.18) Маршрутизатор на 3 интерфейса, непосредственно к шлюзу интернет не подключен.
eth0: 192.168.20.3
eth1: 192.168.33.2
eth2: 192.168.31.2

дефолтным шлюзом в таблице main стоит 192.168.31.222 через eth2, но трём пользователям из подсети 192.168.31.0/24 нужно сделать таблицу, чтобы они ходили в инет через 192.168.33.26.
Простая маршрутизация по источнику даёт им только дефолтный шлюз на инет. а локалка не работает (двадцать одна подсеть! Из них 19 подсетей клиент не видит)
маркировка пакетов (один из проблемных адресов клиентов 192.168.31.217):
iptables -t mangle -A PREROUTING -s 192.168.31.217 -d 192.168.0.0/16 -j MARK --set-mark 1

т е пакеты исходящие с адреса 192.168.31.217 с адресом назначения, который начинается на 192.168 (таких в инете нет)маркируются меткой 1

далее задаём правило для пакетов с меткой 1:
ip rule add fwmark 1 table main

Не работает! всё пакеты идут на дефолтный шлюз из личной таблицы клиента.
При этом раскладе клиент видит только 2 подсети: свою и ту, в которой его интернет-шлюз
Пробовал прописывать в личную таблицу клиента локальные маршруты, но похоже там какой то замудрёный синтаксис, который нигде не описан. Локальные маршруты не принимаются из за ошибки в синтаксисе. Как ни бился, ничего не получилось.

Пробовал делать наоборот. Создавал таблицу с 192.168.33.26 в качестве дефолтного шлюза.
Только не привязывал по источнику, а направлял в эту таблицу только маркированные пакеты с меткой 1:

iptables -t mangle -A PREROUTING -s 192.168.31.217 -d ! 192.168.0.0/16 -j MARK --set-mark 1

т е теоретически должно быть так:
если пакет от 31,217 адресован в локалку. он попадает в таблицу main и направляется по соответствующему маршруту в нужную подсеть. если пакет с 31,217 адресован в интернет (не соответствует шаблону 192.168.0.0/16) то он маркируется меткой 1 и попадает в таблицу inet3326, где прописан только дефолтный шлюз 192.168.33.26.
На практике: локалка у клиента работает нормально, инет не работает. При попытке протрассировать какой нибудь интернет сервер, например ya.ru, трассировка идёт только до интерфейса интернет шлюза 192.168.33.26, далее превышен интервал ожидания для запроса. То есть пакеты в инет идут не через таблицу main, а через таблицу inet3326. Я подозреваю, что не доходят обратные пакеты из интернета.

Что посоветуете? как поступить? Мне больше нравится последний описанный вариант, если бы он работал. он более гибкий и по моему мнению, правильный.

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

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

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




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

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