morfey 82 Опубликовано: 2010-02-13 15:56:16 Share Опубликовано: 2010-02-13 15:56:16 було на freebsd 7 ${fwcmd} pipe `expr ${ID} + 101` config bw ${SPEED}"."Kbit/s"); ${fwcmd} pipe `expr ${ID} + 102` config bw ${SPEED}"."Kbit/s"); ${fwcmd} add `expr ${ID} '*' 10 + 10002` pipe `expr ${ID} + 101` ip from any to ${IP} ${fwcmd} add `expr ${ID} '*' 10 + 10003` pipe `expr ${ID} + 102` ip from ${IP} to any Поставив 8ку, скопіював ті самі скрипти спідтести показували рівно в 2 рази меншу швидкість. Погуглив, додав in,out , все стабілізувалося : ${fwcmd} add `expr ${ID} '*' 10 + 10002` pipe `expr ${ID} + 101` ip from any to ${IP} out ${fwcmd} add `expr ${ID} '*' 10 + 10003` pipe `expr ${ID} + 102` ip from ${IP} to any in Перестали працювати Онлайн ігри... не розумію чому Ссылка на сообщение Поделиться на других сайтах
Enferno 163 Опубліковано: 2010-02-13 15:58:06 Share Опубліковано: 2010-02-13 15:58:06 фаер в студию! Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-13 16:03:10 Автор Share Опубліковано: 2010-02-13 16:03:10 ИИ)) шось з нумерацією незрозуміле, для кожного послідуючого юзера одна труба на вхід і вихід O_o 12183 pipe 320 ip from 10.10.0.2 to any in 12192 pipe 320 ip from any to 10.10.5.10 out 12193 pipe 321 ip from 10.10.5.10 to any in 12232 pipe 324 ip from any to 10.10.3.25 out 12233 pipe 325 ip from 10.10.3.25 to any in 12242 pipe 325 ip from any to 10.10.0.38 out Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-13 16:26:40 Автор Share Опубліковано: 2010-02-13 16:26:40 ID в стг не унікальне в скрипті OnConnect? ~ # id - уникальный целочисленный идентификатор пользователя # принимает значений от 0 до максимального кол-ва пользователей в мене це значення повторюється, стг 2406 (( Ссылка на сообщение Поделиться на других сайтах
blackjack 250 Опубліковано: 2010-02-13 16:55:33 Share Опубліковано: 2010-02-13 16:55:33 ИИ)) шось з нумерацією незрозуміле, для кожного послідуючого юзера одна труба на вхід і вихід O_o 12183 pipe 320 ip from 10.10.0.2 to any in 12192 pipe 320 ip from any to 10.10.5.10 out 12193 pipe 321 ip from 10.10.5.10 to any in 12232 pipe 324 ip from any to 10.10.3.25 out 12233 pipe 325 ip from 10.10.3.25 to any in 12242 pipe 325 ip from any to 10.10.0.38 out ааааааааааааа, і таких правил для 500 юзерів онлайн рівно 1000 штук, я в шоці. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-13 17:02:52 Автор Share Опубліковано: 2010-02-13 17:02:52 ха-ха... і? Ссылка на сообщение Поделиться на других сайтах
blackjack 250 Опубліковано: 2010-02-13 17:16:34 Share Опубліковано: 2010-02-13 17:16:34 не і а трохи подумавши можна розробити схемку. наприклад, таблиця 10 містить адреси і номери пайпів з інету до юзерів таблиця 11 містить адреси і номери пайпів від юзерів в інет тоді всі ці правила можна замінити лише двома ipfw add 1000 pipe tablearg ip from any to "table(10)" ipfw add 1100 pipe tablearg ip from "table(11)" to any якщо one_pass = 0, тоді треба додати ще два правила ipfw add 1200 allow ip from any to "table(10)" ipfw add 1300 allow ip from "table(11)" to any тепер від старгезера все що потрібно це тільки конфігурувати пайпи і додавати/забирати адреси з номером пайпа в таблиці 10 і 11 Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-13 19:48:03 Автор Share Опубліковано: 2010-02-13 19:48:03 Хе) До таблиць в ipfw я не "довчився" ще) Щоб не переривати весь гугл і форуми, не могли б ви кинути робочий конфіг ? Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2010-02-13 23:08:49 Share Опубліковано: 2010-02-13 23:08:49 в мене це значення повторюється, стг 2406 (( унрил pipe 10256 ip from table(22) to any in recv em1 pipe 10512 ip from table(23) to any in recv em1 pipe 11024 ip from table(24) to any in recv em1 pipe 12048 ip from table(25) to any in recv em1 pipe 14096 ip from table(26) to any in recv em1 pipe 20256 ip from any to table(22) out xmit em1 pipe 20512 ip from any to table(23) out xmit em1 pipe 21024 ip from any to table(24) out xmit em1 pipe 22048 ip from any to table(25) out xmit em1 pipe 24096 ip from any to table(26) out xmit em1 Пам парам пам пам. При онконнект робимо add table $SOMESPEED_TABLE $IP тай всьо. При дісконнект вєстімо del. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-14 08:14:40 Автор Share Опубліковано: 2010-02-14 08:14:40 Тобто завести таблиці зі швидкостями і видаляти/додавати користувачів? в фаєрволі при завантаженні,створюєм таблиці, нарізаєм для них швидкості , от наприклад таблиця з 1 мбіт: ipfw add pipe 1000 ip from any to table(22) out xmit IFACE ipfw add pipe 1001 ip from table(22) to any in recv IFACE2 ipfw pipe 1000 config mask dst-ip 0xffffffff bw 1024kbit/s ipfw pipe 1001 config mask src-ip 0xffffffff bw 1024kbit/s стг просто додає видаляє іпи: #додаєм ipfw add table 22 $IP #Видаляєм ipfw del table 22 $IP Правильно? І чи буде в таблиці 22 нарізатися швидкість для кожного іп в 1 мбіт, чи це швидкість на всю таблицю? Дякую Ссылка на сообщение Поделиться на других сайтах
blackjack 250 Опубліковано: 2010-02-14 09:31:41 Share Опубліковано: 2010-02-14 09:31:41 правильно, але трошки не так в фаєрволі стврюєм правила ipfw add 1000 pipe tablearg ip from any to "table(22)" via $localiface out ipfw add 1001 pipe tablearg ip from "table(23)" to any via $localiface in в скрипті onConnect чи як там він називаеться в старгезері робим так ipfw table 22 add $ip $num_pipe_in ipfw table 23 add $ip $num_pipe_out ipfw pipe $num_pipe_in config bw ${speed_in)Kbit/s ipfw pipe $num_pipe_out config bw ${speed_out)Kbit/s тобто, все що треба передати в скрипт це адрес клієнта, номери пайпа на вхід і вихід, швидкість або номер пакету і в залежності відномеру вказати макрос із швидкістю, якщо швидкості симетричні то вистачить одного номера пайпа. номери пайпів можна генерувати на основі id або ip клієнта Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2010-02-14 11:16:27 Share Опубліковано: 2010-02-14 11:16:27 І чи буде в таблиці 22 нарізатися швидкість для кожного іп в 1 мбіт, чи це швидкість на всю таблицю? dst-ip 0xffffffff же - кожному. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-15 14:09:06 Автор Share Опубліковано: 2010-02-15 14:09:06 Тепер я заплутався, мій варіант правильний, чи не буде працювати? Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2010-02-15 16:11:12 Share Опубліковано: 2010-02-15 16:11:12 спробуйте, все приходить тільки з практикою Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-15 16:56:39 Автор Share Опубліковано: 2010-02-15 16:56:39 спробуйте, все приходить тільки з практикою Це точно))) Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-16 13:17:45 Автор Share Опубліковано: 2010-02-16 13:17:45 Просю перевірить: Протестив з 2 компів, швидкість нарізається, в таблички додається/видаляється. Є 1 проблема. Якщо я зиіню тариф користувачу, який в онлайні то ІП залишиться в старій табличці на страрій швидкості ( . Тобто ІП клієнта буде в 2 таблицях одночасно. Думаю це виправить видаленням ІП в скрипті OnChange. Правильно? І ще в догонку. Як зробити редірект, користувачу в якого негативний баланс, з будь-якого сайту на сторінку з повідомленням типу host:8080. Можна з ipnat, але як це зробити динамічно, так як потрібно додати правило потім перезавантажити... Фух, дякую Скрипти: rc.firewall #!/bin/sh fwcmd="/sbin/ipfw -q add" fw="/sbin/ipfw -q" flush=`${fw} -f flush` flush_table=`${fw} table all flush` flush_pipe=`${fw} pipe flush` local_if="em0" global_if="em1" ${flush} ${flush_table} ${flush_pipe} ${fwcmd} pipe 1000 ip from any to table\(1\) out xmit ${local_if} ${fwcmd} pipe 1001 ip from table\(1\) to any in recv ${local_if} ${fw} pipe 1000 config mask dst-ip 0xffffffff bw 128kbit/s ${fw} pipe 1001 config mask src-ip 0xffffffff bw 128kbit/s ${fwcmd} pipe 1002 ip from any to table\(2\) out xmit ${local_if} ${fwcmd} pipe 1003 ip from table\(2\) to any in recv ${local_if} ${fw} pipe 1002 config mask dst-ip 0xffffffff bw 256kbit/s ${fw} pipe 1003 config mask src-ip 0xffffffff bw 256kbit/s ${fwcmd} pipe 1004 ip from any to table\(3\) out xmit ${local_if} ${fwcmd} pipe 1005 ip from table\(3\) to any in recv ${local_if} ${fw} pipe 1004 config mask dst-ip 0xffffffff bw 512kbit/s ${fw} pipe 1005 config mask src-ip 0xffffffff bw 512kbit/s ${fwcmd} pipe 1006 ip from any to table\(4\) out xmit ${local_if} ${fwcmd} pipe 1007 ip from table\(4\) to any in recv ${local_if} ${fw} pipe 1006 config mask dst-ip 0xffffffff bw 1024kbit/s ${fw} pipe 1007 config mask src-ip 0xffffffff bw 1024kbit/s ${fwcmd} pipe 1008 ip from any to table\(5\) out xmit ${local_if} ${fwcmd} pipe 1009 ip from table\(5\) to any in recv ${local_if} ${fw} pipe 1008 config mask dst-ip 0xffffffff bw 1536kbit/s ${fw} pipe 1009 config mask src-ip 0xffffffff bw 1536kbit/s ${fwcmd} pipe 1010 ip from any to table\(6\) out xmit ${local_if} ${fwcmd} pipe 1011 ip from table\(6\) to any in recv ${local_if} ${fw} pipe 1010 config mask dst-ip 0xffffffff bw 2048kbit/s ${fw} pipe 1011 config mask src-ip 0xffffffff bw 2048kbit/s ${fwcmd} pipe 1012 ip from any to table\(7\) out xmit ${local_if} ${fwcmd} pipe 1013 ip from table\(7\) to any in recv ${local_if} ${fw} pipe 1012 config mask dst-ip 0xffffffff bw 3072kbit/s ${fw} pipe 1013 config mask src-ip 0xffffffff bw 3072kbit/s ${fwcmd} pipe 1014 ip from any to table\(8\) out xmit ${local_if} ${fwcmd} pipe 1015 ip from table\(8\) to any in recv ${local_if} ${fw} pipe 1014 config mask dst-ip 0xffffffff bw 4096kbit/s ${fw} pipe 1015 config mask src-ip 0xffffffff bw 4096kbit/s ${fwcmd} pipe 1016 ip from any to table\(9\) out xmit ${local_if} ${fwcmd} pipe 1017 ip from table\(9\) to any in recv ${local_if} ${fw} pipe 1016 config mask dst-ip 0xffffffff bw 5120kbit/s ${fw} pipe 1017 config mask src-ip 0xffffffff bw 5120kbit/s ${fwcmd} pipe 1018 ip from any to table\(10\) out xmit ${local_if} ${fwcmd} pipe 1019 ip from table\(10\) to any in recv ${local_if} ${fw} pipe 1018 config mask dst-ip 0xffffffff bw 10240kbit/s ${fw} pipe 1019 config mask src-ip 0xffffffff bw 10240kbit/s ${fwcmd} pipe 1020 ip from any to table\(11\) out xmit ${local_if} ${fwcmd} pipe 1021 ip from table\(11\) to any in recv ${local_if} ${fw} pipe 1020 config mask dst-ip 0xffffffff bw 20480kbit/s ${fw} pipe 1021 config mask src-ip 0xffffffff bw 20480kbit/s ${fwcmd} pipe 1000 ip from any to table\(12\) out xmit ${local_if} ${fwcmd} pipe 1001 ip from table\(12\) to any in recv ${local_if} ${fw} pipe 1000 config mask dst-ip 0xffffffff bw 102400kbit/s ${fw} pipe 1001 config mask src-ip 0xffffffff bw 102400kbit/s OnConnect billing-host# cat stargazer/OnConnect #!/bin/sh LOGIN=$1 IP=$2 CASH=$3 ID=$4 fwcmd="/sbin/ipfw" SPEED=`/etc/stargazer/speed $LOGIN` if [ ${SPEED} = 128 ] then ${fwcmd} table 1 add ${IP} else fi if [ ${SPEED} = 256 ] then ${fwcmd} table 2 add ${IP} else fi if [ ${SPEED} = 512 ] then ${fwcmd} table 3 add ${IP} else fi if [ ${SPEED} = 1024 ] then ${fwcmd} table 4 add ${IP} else fi if [ ${SPEED} = 1536 ] then ${fwcmd} table 5 add ${IP} else fi if [ ${SPEED} = 2048 ] then ${fwcmd} table 6 add ${IP} else fi if [ ${SPEED} = 3072 ] then ${fwcmd} table 7 add ${IP} else fi if [ ${SPEED} = 4096 ] then ${fwcmd} table 8 add ${IP} else fi if [ ${SPEED} = 5120 ] then ${fwcmd} table 9 add ${IP} else fi if [ ${SPEED} = 10240 ] then ${fwcmd} table 10 add ${IP} else fi if [ ${SPEED} = 20480 ] then ${fwcmd} table 11 add ${IP} else fi if [ ${SPEED} = 102400 ] then ${fwcmd} table 12 add ${IP} else echo NO SPEED fi OnDisconnect #!/bin/sh LOGIN=$1 IP=$2 CASH=$3 ID=$4 fwcmd="/sbin/ipfw -q" SPEED=`/etc/stargazer/speed $LOGIN` if [ ${SPEED} = 128 ] then ${fwcmd} table 1 delete ${IP} else fi if [ ${SPEED} = 256 ] then ${fwcmd} table 2 delete ${IP} else fi if [ ${SPEED} = 512 ] then ${fwcmd} table 3 delete ${IP} else fi if [ ${SPEED} = 1024 ] then ${fwcmd} table 4 delete ${IP} else fi if [ ${SPEED} = 1536 ] then ${fwcmd} table 5 delete ${IP} else fi if [ ${SPEED} = 2048 ] then ${fwcmd} table 6 delete ${IP} else fi if [ ${SPEED} = 3072 ] then ${fwcmd} table 7 delete ${IP} else fi if [ ${SPEED} = 4096 ] then ${fwcmd} table 8 delete ${IP} else fi if [ ${SPEED} = 5120 ] then ${fwcmd} table 9 delete ${IP} else fi if [ ${SPEED} = 10240 ] then ${fwcmd} table 10 delete ${IP} else fi if [ ${SPEED} = 20480 ] then ${fwcmd} table 11 delete ${IP} else fi if [ ${SPEED} = 102400 ] then ${fwcmd} table 12 delete ${IP} else fi Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2010-02-16 13:39:45 Share Опубліковано: 2010-02-16 13:39:45 Є 1 проблема. Якщо я зиіню тариф користувачу, який в онлайні то ІП залишиться в старій табличці на страрій швидкості ( . Тобто ІП клієнта буде в 2 таблицях одночасно. Думаю це виправить видаленням ІП в скрипті onchange. Правильно? є такий ефект, але на справді враховуючи той факт шо в ончейндж потрібно виловлювати ІР по логіну простіше просто при заміні тарифного плану робити автоматом юзеру disabled/change_tariff/enabled. Власне так і роблю. І ще в догонку. Як зробити редірект, користувачу в якого негативний баланс, з будь-якого сайту на сторінку з повідомленням типу host:8080. засунути в табличку неактивних юзерів і зробити fwd куди треба. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-16 15:30:42 Автор Share Опубліковано: 2010-02-16 15:30:42 fwd HOST_WITH_MESSAGE,80 tcp from CLIENT_IP to any Якби пакети через фаєрвол проходять, але все одно відкривається сторінка, а не перенаправляється Ссылка на сообщение Поделиться на других сайтах
nightfly 1 239 Опубліковано: 2010-02-16 15:44:14 Share Опубліковано: 2010-02-16 15:44:14 to not me або to not HOST_WITH_MESSAGE це поперше, а по друге - dst-port 80 Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-16 16:05:23 Автор Share Опубліковано: 2010-02-16 16:05:23 ipfw add 50 fwd HOST_WITH_MESSAGE,80 ip from CLIENT_IP to not HOST_WITH_MESSAGE dst-port 80 те саме( Ссылка на сообщение Поделиться на других сайтах
Kucher2 122 Опубліковано: 2010-02-17 17:36:19 Share Опубліковано: 2010-02-17 17:36:19 Я делал виртуалхост на 81-ом порту в Апаче и форвардил в Онконнекте клиента на него. Ссылка на сообщение Поделиться на других сайтах
Queeq 0 Опубліковано: 2010-02-17 17:45:08 Share Опубліковано: 2010-02-17 17:45:08 Я делал виртуалхост на 81-ом порту в Апаче и форвардил в Онконнекте клиента на него. Прикольное решение. Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-17 18:26:42 Автор Share Опубліковано: 2010-02-17 18:26:42 Я делал виртуалхост на 81-ом порту в Апаче и форвардил в Онконнекте клиента на него. як форвардив? Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-19 11:47:48 Автор Share Опубліковано: 2010-02-19 11:47:48 ап, як форвардив ? Ссылка на сообщение Поделиться на других сайтах
morfey 82 Опубліковано: 2010-02-19 15:35:25 Автор Share Опубліковано: 2010-02-19 15:35:25 HOST_WITH_MESSAGE - той же хост, на 8080 порту висить сторінка з повідомленням, що нема грошей CLIENT_IP - ip клієнта ipfw add 50 fwd HOST_WITH_MESSAGE,8080 ip from CLIENT_IP to not HOST_WITH_MESSAGE dst-port 8080 Не перекидає на потрібну сторінку Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас