The OpenNET Project / Index page

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

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

"iptables балансировка SNAT"  +/
Сообщение от cth on 23-Ноя-10, 15:53 
Есть пул реальных адресов /28 на linux-маршрутизаторе.
За маршрутизатором много-много - около сотни - клиентов с приватными адресами.

Сейчас все клиенты натятся через один реальный адрес посредством iptables.
Но хотелось бы чтобы был задействован весь /28 пул реальников.

Возможно ли с помощью iptables сделать так:

Чтобы пакеты от любого клиента каждый раз транслировались бы в случайным образом выбранный реальник из /28 пула.
Причем все коннекты бы от этого клиента биндились к каждому конкретному реальнику на какое-то заданное время.

В деталях, что я хочу:
клиент: 10.10.1.108
пул: 2.2.2.0/28


1. клиент посылает запрос на opennet.ru(77.234.201.242)
2. iptables создает трансляцию, выбирая из реального пула /28 какой-то адрес. допустим: 10.10.1.108:25628 <- 2.2.2.8 -> 77.234.201.242:80
3. всё последующие коннекты от этого клиента к серверу 77.234.201.242 на любой порт транслируются через тот же реальник(2.2.2.8).
4. по прошествии какого-то времени, если клиент к этому серверу больше не шлет коннектов, то срабатывает таймаут и любое последующее соединение от этого же клинта к этому же, либо любому другому серверу, транслировалось бы уже через другой случайным образом выбранный реальник из 2.2.2.0/28 пула.

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

в манах нашел для своей ситуации только nth патч, с помощью которого можно, например, матчить каждый 3й пакет и назначать ему соответствующий --to-source, но в моем случае это не подходит по причинам, что я рписал выше.

For example, if you want to balance the load to the 3 addresses 10.0.0.5, 10.0.0.6 and 10.0.0.7, then you can do as follows :

    # iptables -t nat -A POSTROUTING -o eth0 -m nth --counter 7 --every 3 --packet 0 -j SNAT --to-source 10.0.0.5
    # iptables -t nat -A POSTROUTING -o eth0 -m nth --counter 7 --every 3 --packet 1 -j SNAT --to-source 10.0.0.6
    # iptables -t nat -A POSTROUTING -o eth0 -m nth --counter 7 --every 3 --packet 2 -j SNAT --to-source 10.0.0.7

    # iptables -t nat --list
    Chain POSTROUTING (policy ACCEPT)
    target     prot opt source               destination        
    SNAT       all  --  anywhere             anywhere           every 3th packet #0 to:10.0.0.5
    SNAT       all  --  anywhere             anywhere           every 3th packet #1 to:10.0.0.6
    SNAT       all  --  anywhere             anywhere           every 3th packet #2 to:10.0.0.7

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "iptables балансировка SNAT"  +/
Сообщение от reader (ok) on 24-Ноя-10, 11:55 
>[оверквотинг удален]
>      anywhere    
>      every 3th packet #0 to:10.0.0.5
>     SNAT       all
>  --  anywhere      
>      anywhere    
>      every 3th packet #1 to:10.0.0.6
>     SNAT       all
>  --  anywhere      
>      anywhere    
>      every 3th packet #2 to:10.0.0.7

может SAME
http://www.netfilter.org/documentation/HOWTO//netfilter-exte...
http://www.protocols.ru/modules.php?name=News&file=article&s...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "iptables балансировка SNAT"  +/
Сообщение от cth on 24-Ноя-10, 14:20 
спасибо, попробую!

>[оверквотинг удален]
>>  --  anywhere      
>>      anywhere    
>>      every 3th packet #1 to:10.0.0.6
>>     SNAT       all
>>  --  anywhere      
>>      anywhere    
>>      every 3th packet #2 to:10.0.0.7
> может SAME
> http://www.netfilter.org/documentation/HOWTO//netfilter-exte...
> http://www.protocols.ru/modules.php?name=News&file=article&s...

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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