The OpenNET Project / Index page

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

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

"Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от Anton email(??) on 31-Янв-08, 14:20 
Сервер - Linux Debian 4
Есть 3 интерфейса inp0, out0, out1.
Интерфейс out0 имеет внутренний ip $IP0.
За интерфейсом out0 есть шлюз $GIP0 и это шлюз по умолчанию.
Интерфейс out1 имеет реальный ip $IP1.
За интерфейсом out1 есть шлюз $GIP1.

Хочу, чтобы UDP пакеты из локальной сети натились на сервере через сетевой интерфейс out1. Шлюз $GIP0 настроен натить все, но перед этим почти все (udp в том числе) фильтрует.

Локальная сеть имеет внутренний адрес $LIP и доступна через интерфейс inp0.

Делаю так:
1.iptables -t mangle -A PREROUTING -s $LIP -p udp -j MARK --set-mark 0x1
2.iptables -t nat -A POSTROUTING -s $LIP -p udp -j SNAT --to-source $IP1
3.iptables -t mangle -A OUTPUT -s $IP1 -j MARK --set-mark 0x1
4.echo 0 >/proc/sys/net/ipv4/conf/out1/rp_filter
5.ip route add default via $IP1 table 1
6.ip rule add fwmark 0x1 lookup 1
После этого udp пакеты совсем никуда из сервера не уходят.
Если п.1 отменить, пакеты появляются на интерфейсе out0 от адреса $IP1. То есть SNAT работает.

На сервере работает squid и он в зависимости от запрошенного контента, выбирает себе выходной IP ($IP0 или $IP1). Чтобы пакеты перенаправлялись в другой интерфейс добавлен п.3. Пакеты от sauid-а ходят правильно, через нужные интерфейсы и с нужными адресами. То есть маршрутизация по условию тоже работает.

Почему UDP совсем никуда не уходят?
Что надо сделать чтобы работала маршрутизация для UDP из локальной сети?
Доки читал.
Остался вопрос - после каких цепочек в iptables принимается решение о отправке пакета через требуемый интерфейс (то есть когда выполняется правило п.6)?
Правильно-ли я понимаю, что сейчас такие задачи надо решать через -j ROUTE?
Я использовать -j ROUTE похоже пока что не смогу. В Debian даже в експериментальных версиях поддержки этого нет.

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

 Оглавление

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


1. "Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от ComP email on 31-Янв-08, 15:56 
>[оверквотинг удален]
>Интерфейс out0 имеет внутренний ip $IP0.
>За интерфейсом out0 есть шлюз $GIP0 и это шлюз по умолчанию.
>Интерфейс out1 имеет реальный ip $IP1.
>За интерфейсом out1 есть шлюз $GIP1.
>
>Хочу, чтобы UDP пакеты из локальной сети натились на сервере через сетевой
>интерфейс out1. Шлюз $GIP0 настроен натить все, но перед этим почти
>все (udp в том числе) фильтрует.
>
>Локальная сеть имеет внутренний адрес $LIP и доступна через интерфейс inp0.

Сделай default gw gw для out1, и пусть все летит туда.
На сквиде соответственно настраивай как надо.
А вообще используй source routing, т.к. от одного клиента в разные шлюзы трафик пихать почти не реально!

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

3. "Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от Anton email(??) on 31-Янв-08, 16:30 
>Сделай default gw gw для out1, и пусть все летит туда.

Нет. Так мне не надо, у меня за out0 ресурсы локальные и трафик бесплатный. Пусть по умолчанию все туда сыпется. И только если что-то туда не проходит или скорость не устраивает, а оно нам надо, то это я на платный out1 заворачиваю.
Вот понадобился udp.
>На сквиде соответственно настраивай как надо.
>А вообще используй source routing, т.к. от одного клиента в разные шлюзы
>трафик пихать почти не реально!

squid-же пихает.


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

5. "Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от ComP email on 04-Фев-08, 17:36 
>[оверквотинг удален]
>Нет. Так мне не надо, у меня за out0 ресурсы локальные и
>трафик бесплатный. Пусть по умолчанию все туда сыпется. И только если
>что-то туда не проходит или скорость не устраивает, а оно нам
>надо, то это я на платный out1 заворачиваю.
>Вот понадобился udp.
>>На сквиде соответственно настраивай как надо.
>>А вообще используй source routing, т.к. от одного клиента в разные шлюзы
>>трафик пихать почти не реально!
>
>squid-же пихает.

Тебе надо пихать UDP? или TCP?, Squid проксирует только http(tcp:80) и ftp(tcp:21) но ни как не UDP

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

6. "Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от Anton email(??) on 05-Фев-08, 08:15 
>>>А вообще используй source routing, т.к. от одного клиента в разные шлюзы
>>>трафик пихать почти не реально!
>>
>>squid-же пихает.
>
>Тебе надо пихать UDP? или TCP?, Squid проксирует только http(tcp:80) и ftp(tcp:21)
>но ни как не UDP

UDP. Правила-то примерно одинаково пишутся. За исключением -p UDP. И логика работы вроде одинаковая должна быть.
Ну еще разница в том, что в случае squid mark ставится в OUTPUT...
Пока сделал gateway на платный канал и зарезал на нем все кроме того что надо. Для бесплатного настроил squid чтобы народ туда по https мог ходить.


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

7. "Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от ComP email on 05-Фев-08, 11:15 
>[оверквотинг удален]
>>Тебе надо пихать UDP? или TCP?, Squid проксирует только http(tcp:80) и ftp(tcp:21)
>>но ни как не UDP
>
>UDP. Правила-то примерно одинаково пишутся. За исключением -p UDP. И логика работы
>вроде одинаковая должна быть.
>Ну еще разница в том, что в случае squid mark ставится в
>OUTPUT...
>Пока сделал gateway на платный канал и зарезал на нем все кроме
>того что надо. Для бесплатного настроил squid чтобы народ туда по
>https мог ходить.

Ну, вроде как все и получилось, или я чего-то не понял?

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

9. "Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от Anton email(??) on 05-Фев-08, 12:34 

>>Пока сделал gateway на платный канал и зарезал на нем все кроме
>>того что надо. Для бесплатного настроил squid чтобы народ туда по
>>https мог ходить.
>Ты не можешь TCP пихать в один шлюз а UDP в другой

Я нигде не видел такого ограничения. Синтаксис iptables+iproute2 это позволяет. Почему не работает - не понятно.
>Ну, вроде как все и получилось, или я чего-то не понял?

Получилось, но не так как хотелось-бы.

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

8. "Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от ComP email on 05-Фев-08, 11:41 
>[оверквотинг удален]
>>Тебе надо пихать UDP? или TCP?, Squid проксирует только http(tcp:80) и ftp(tcp:21)
>>но ни как не UDP
>
>UDP. Правила-то примерно одинаково пишутся. За исключением -p UDP. И логика работы
>вроде одинаковая должна быть.
>Ну еще разница в том, что в случае squid mark ставится в
>OUTPUT...
>Пока сделал gateway на платный канал и зарезал на нем все кроме
>того что надо. Для бесплатного настроил squid чтобы народ туда по
>https мог ходить.

Ты не можешь TCP пихать в один шлюз а UDP в другой - это не реально(либо у меня мало знаний), Squid не занимается маршрутизацией - Это всего лишь прокси!!!

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

2. "Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от ComP email on 31-Янв-08, 15:58 
Так буде правильнее ip rule add fwmark 1 lookup 1


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

4. "Помогите с iptables+MASK+SNAT+iproute"  
Сообщение от Anton email(??) on 01-Фев-08, 07:18 
>Так буде правильнее ip rule add fwmark 1 lookup 1

Попробовал. Никаких изменений.

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

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

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




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

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