Такой вопросик, встала нужда ограничивать кол-во сессий во Фряхе, кто-то делал что-то подобное?
делал:
Код: Выделить всё
ipfw add allow tcp from 192.168.1.0/24 to any setup limit src-addr 40
Модератор: terminus
Код: Выделить всё
ipfw add allow tcp from 192.168.1.0/24 to any setup limit src-addr 40
Код: Выделить всё
local="{192.168.1.21}"
nat on bge0 from 192.168.1.0/24 to any -> {bge0}
pass quick from $local to any keep state (source-track, max-src-states 15)
Аааа.... Знаменитый PF, да наслышан про него....Khuman писал(а):на PF, но это работает:Максимум 15 стейтов.Код: Выделить всё
local="{192.168.1.21}" nat on bge0 from 192.168.1.0/24 to any -> {bge0} pass quick from $local to any keep state (source-track, max-src-states 15)
Да проблем нема...terminus писал(а):правила с limit это keep-state с ограничением на количество динамических правил...
Вы весь свой конфиг ipfw покажите, тогда вам какая-нить "кабацкая теребень" чо-нить и насоветует.
Код: Выделить всё
#!/bin/sh -
f='/sbin/ipfw'
ifOut='fxp0'
ifIn5='rl0'
ifIn6='rl1'
${f} -f flush
${f} add 50 allow tcp from any to me 22
${f} add 51 allow tcp from me 22 to any
${f} add 100 deny tcp from any to any 445
${f} add 101 allow ip from any to any via ${ifIn6}
${f} add 110 allow ip from any to any via lo0
${f} add 120 skipto 1000 ip from me to any
${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${f} add 140 deny ip from any to "table(120)"
${f} add 150 deny ip from "table(120)" to any
${f} add 160 skipto 2000 ip from any to me
${f} add 200 skipto 500 ip from any to any via ${ifOut}
${f} add 300 skipto 4500 ip from any to any in
${f} add 400 skipto 450 ip from any to any recv ${ifOut}
${f} add 420 divert 1 ip from any to any
${f} add 450 divert 2 ip from any to any
${f} add 490 allow ip from any to any
${f} add 500 skipto 32500 ip from any to any in
${f} add 510 divert 1 ip from any to any
${f} add 540 allow ip from any to any
#Ограничение TCP сессий
#${f} add 590 allow log tcp from any to 192.168.5.0/24 setup limit dst-addr 3
${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state
${f} add 1020 allow udp from any to any keep-state
${f} add 1100 allow ip from any to any
${f} add 2000 check-state
${f} add 2010 allow icmp from any to any
${f} add 2020 allow tcp from any to any 80,443
${f} add 2050 deny ip from any to any via ${ifOut}
${f} add 2060 allow udp from any to any 53,7723
${f} add 2100 deny ip from any to any
${f} add 32490 deny ip from any to any
Да, и ещё, а почему максимум, больше низя?Khuman писал(а):на PF, но это работает:Максимум 15 стейтов.Код: Выделить всё
local="{192.168.1.21}" nat on bge0 from 192.168.1.0/24 to any -> {bge0} pass quick from $local to any keep state (source-track, max-src-states 15)
+1hizel писал(а):чото я вижу что до вашего лимита на 590 строке оно тупо не доходит : )
в логах то чтонибудь е?
Код: Выделить всё
${f} add 101 allow tcp from 192.168.5.0/24 to any setup limit dst-addr 3 via ${ifIn6}
${f} add 102 allow ip from any to any via ${ifIn6}
Такое расположение должно быть, я там поставил биллинг http://nodeny.com.ua/ и там требования к размещениям правил. Там типа используется принцип "два окна" один фиксированый, второй под шейпинг и всё такое.terminus писал(а):+1hizel писал(а):чото я вижу что до вашего лимита на 590 строке оно тупо не доходит : )
в логах то чтонибудь е?
куды правило нумер 32500 дел?
много букав в правилах - глаза разбегаются.
Мне надо ограничить юзеровские тачки, может быть вирусная активность а так же препятствовать перепродажи трафика. Предложил им нормальный канал, их цена не устроила. Они типа хотят по проще взять и перепродавать его, поставить юзергейт какой-то для раздачи. Думаю до 100 сессий вполне достаточно будет.terminus писал(а):Конкретней задачу поставьте - ограничивать надо соединения от 192.168.5.0/24 наружу или наоборот?
Код: Выделить всё
${f} add 101 allow tcp from 192.168.5.0/24 to any setup limit dst-addr 3 via ${ifIn6} ${f} add 102 allow ip from any to any via ${ifIn6}
Код: Выделить всё
#!/bin/sh -
f='/sbin/ipfw'
ifOut='fxp0'
ifIn5='rl0'
ifIn6='rl1'
${f} -f flush
${f} add 50 allow tcp from any to me 22
${f} add 51 allow tcp from me 22 to any
${f} add 100 deny tcp from any to any 445
${f} add 101 allow ip from any to any via ${ifIn6}
${f} add 110 allow ip from any to any via lo0
${f} add 120 skipto 1000 ip from me to any
${f} add 130 deny icmp from any to any in icmptype 5,9,13,14,15,16,17
${f} add 140 deny ip from any to "table(120)"
${f} add 150 deny ip from "table(120)" to any
${f} add 160 skipto 2000 ip from any to me
${f} add 200 skipto 500 ip from any to any via ${ifOut}
${f} add 300 skipto 4500 ip from any to any in
${f} add 400 skipto 450 ip from any to any recv ${ifOut}
${f} add 420 divert 1 ip from any to any
${f} add 450 divert 2 ip from any to any
${f} add 490 allow ip from any to any
${f} add 500 skipto 32500 ip from any to any in
# limitim sessii it ip istochnika - max=3
${f} add 501 skipto 510 ip from any to any out xmit ${ifOut} limit src-addr 3
${f} add 510 divert 1 ip from any to any
${f} add 540 allow ip from any to any
${f} add 1000 allow udp from any 53,7723 to any
${f} add 1010 allow tcp from any to any setup keep-state
${f} add 1020 allow udp from any to any keep-state
${f} add 1100 allow ip from any to any
${f} add 2000 check-state
${f} add 2010 allow icmp from any to any
${f} add 2020 allow tcp from any to any 80,443
${f} add 2050 deny ip from any to any via ${ifOut}
${f} add 2060 allow udp from any to any 53,7723
${f} add 2100 deny ip from any to any
${f} add 32490 deny ip from any to any