Всем добрый вечер!
Столкнулся с торентами... Необходимо ограничить количество сессий для одного ай пи адреса.
Система Дебиан, версия ядра 2.6.18.
Подскажите как в Iptables обрезать сессии... для конкретного айпи. а для остальных ничего не блокировать. Компьютеры работают в сети через НАТ.
Ограничение количество сессий для 1 IP
TCP сессия открывается SYN пакетом, вот их и надо поставить на подсчет с этого или на этот IP, а потом блокировать их при привышении.
Это делается через примерно такую конструкцию -m recent --rcheck --seconds 60 --hitcount 2 -j DROP, здесь допускается не более одного в течении минуты.
iptables -t nat -I POSTROUTING -s %ip lan pc% -p tcp -m iplimit --iplimit-above 3 -j REJECT
наверное как то так, тут ограничение на 3 соединения
А можно подробнее
А что значит %ip и pc% ? Так в точности и нужно использовать или вместо них нужно что то вписывать?
Например
iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -p tcp -m iplimit --iplimit-above 3 -j REJECT
Но я бы попробывал бы так
iptables -t nat -I PREROUTING -s 192.168.0.0/24 -p tcp -m iplimit --iplimit-above 3 -j REJECT
Но это не есть хорошо
Лучше для отдельного ип просто закрыть все порты и открыть токо нужные
Так получается что если я хочу для отдельного ип ограничить количество tcp сессий до 10, то мне нужно сделать примерно так
iptables -t nat -I PREROUTING -s 192.168.0.1 -p tcp -m iplimit --iplimit-above 10 -j REJECT
???
я так понял что правило Ваше ограничивает на подсеть 3 соединения...?
типо того надо ток проверить но ещё раз говорю это не есть хорошо
... а как будет хорошо?
чтобы просто для одного ип ограничивать количество сессий....
Смотря на что и для чего.
Есть ип которые количесвом tcp соединений забивают канал и инета нет из-за них...
Есть ип которые количесвом tcp соединений забивают канал и инета нет из-за них...
Забивают обычно тореннты и p2p сети.
Просто для начала надо закрыть все лишние порты и оставить ток необходимые.
Если дальше будут забивать надо смотреть чем забивают, тут лучше логирование.
Тут нескоко выходов или порты блокировать или по сайтам а насчёт ограниченний ссесий надо делать по портам (я так думаю не уверен что возможно ибо не было необходимости).
А поидее вот так tcp до 15 сессий (не проверял).
iptables -A FORWARD -s 172.16.0.0/12 -p tcp --syn connlimit --connlimit-above 15 -j REJECT
не ограничивает. У меня клиент по nat ходит. Может это имеет значение...
ИМХО проще сделать политику для всех цепочек DROP, а потом в FORWARD открывать только тем IP которым можно наружу, и только те порты, которые им нужны, например 80, и только по тем протоколам которые используются TCP или/и UDP и всё.
У меня так и никаких проблем с торентами нет.
[console]
/sbin/iptables -P FORWARD DROP
/sbin/iptables -A FORWARD -p tcp -s 192.169.0.22 -d 188.120.241.125 -m multiport --dport 80,443 -j ACCEPT
/sbin/iptables -A FORWARD -p udp -s 192.169.0.22 -d 188.120.241.125 -m multiport --dport 80,443 -j ACCEPT
[/console]
IP -тут только для примера, подставьте свои.
ИМХО проще сделать политику для всех цепочек DROP, а потом в FORWARD открывать только тем IP которым можно наружу, и только те порты, которые им нужны, например 80, и только по тем протоколам которые используются TCP или/и UDP и всё.
У меня так и никаких проблем с торентами нет.
[console]
/sbin/iptables -P FORWARD DROP
/sbin/iptables -A FORWARD -p tcp -s 192.169.0.22 -d 188.120.241.125 -m multiport --dport 80,443 -j ACCEPT
/sbin/iptables -A FORWARD -p udp -s 192.169.0.22 -d 188.120.241.125 -m multiport --dport 80,443 -j ACCEPT
[/console]
IP -тут только для примера, подставьте свои.
53 порт забыл)
Так не получается. торенты выдь разные порты используют, и если их разрешить то на количество соединений это никак не отобраиться. Получается что нет никакого решения для этого вопроса? Что бы определенному ip адресу клиента ограничить количество соединений ?
Чего-то не туда ушли. Закрытие портов к ограничению торрентов по нагрузке в сети никак проблему не решает, разве что радикально, т.е. отсутствию торрента.
Ограничить количество соединений можно средствами iptables, как уже было сказано. Но это окончательно не решит проблему нагрузки на канал, т.к. его можно нагрузить и одним соединением, тогда в помощь tc, т.е. шейпер.
Шейпер стоит! Но шейпер ограничивает скорость! Я понимаю что средствами iptables возможно это как то решить. Но как? Так как торент могут ставить на скачку по 20 штук сразу и это то и забивает канал из-за количества соединений!
Шейпер стоит! Но шейпер ограничивает скорость! Я понимаю что средствами iptables возможно это как то решить. Но как? Так как торент могут ставить на скачку по 20 штук сразу и это то и забивает канал из-за количества соединений!
Сначала найди проблему а потом решай
разве что радикально
Конечно радикально.
Отрубил торенты и можно спокойно спать. Пусть дома качают.