morfey 82 Posted 2010-02-13 15:56:16 Share Posted 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 Перестали працювати Онлайн ігри... не розумію чому Link to post Share on other sites
Enferno 163 Posted 2010-02-13 15:58:06 Share Posted 2010-02-13 15:58:06 фаер в студию! Link to post Share on other sites
morfey 82 Posted 2010-02-13 16:03:10 Author Share Posted 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 Link to post Share on other sites
morfey 82 Posted 2010-02-13 16:26:40 Author Share Posted 2010-02-13 16:26:40 ID в стг не унікальне в скрипті OnConnect? ~ # id - уникальный целочисленный идентификатор пользователя # принимает значений от 0 до максимального кол-ва пользователей в мене це значення повторюється, стг 2406 (( Link to post Share on other sites
blackjack 250 Posted 2010-02-13 16:55:33 Share Posted 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 штук, я в шоці. Link to post Share on other sites
morfey 82 Posted 2010-02-13 17:02:52 Author Share Posted 2010-02-13 17:02:52 ха-ха... і? Link to post Share on other sites
blackjack 250 Posted 2010-02-13 17:16:34 Share Posted 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 Link to post Share on other sites
morfey 82 Posted 2010-02-13 19:48:03 Author Share Posted 2010-02-13 19:48:03 Хе) До таблиць в ipfw я не "довчився" ще) Щоб не переривати весь гугл і форуми, не могли б ви кинути робочий конфіг ? Link to post Share on other sites
nightfly 1,250 Posted 2010-02-13 23:08:49 Share Posted 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. Link to post Share on other sites
morfey 82 Posted 2010-02-14 08:14:40 Author Share Posted 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 мбіт, чи це швидкість на всю таблицю? Дякую Link to post Share on other sites
blackjack 250 Posted 2010-02-14 09:31:41 Share Posted 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 клієнта Link to post Share on other sites
nightfly 1,250 Posted 2010-02-14 11:16:27 Share Posted 2010-02-14 11:16:27 І чи буде в таблиці 22 нарізатися швидкість для кожного іп в 1 мбіт, чи це швидкість на всю таблицю? dst-ip 0xffffffff же - кожному. Link to post Share on other sites
morfey 82 Posted 2010-02-15 14:09:06 Author Share Posted 2010-02-15 14:09:06 Тепер я заплутався, мій варіант правильний, чи не буде працювати? Link to post Share on other sites
nightfly 1,250 Posted 2010-02-15 16:11:12 Share Posted 2010-02-15 16:11:12 спробуйте, все приходить тільки з практикою Link to post Share on other sites
morfey 82 Posted 2010-02-15 16:56:39 Author Share Posted 2010-02-15 16:56:39 спробуйте, все приходить тільки з практикою Це точно))) Link to post Share on other sites
morfey 82 Posted 2010-02-16 13:17:45 Author Share Posted 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 Link to post Share on other sites
nightfly 1,250 Posted 2010-02-16 13:39:45 Share Posted 2010-02-16 13:39:45 Є 1 проблема. Якщо я зиіню тариф користувачу, який в онлайні то ІП залишиться в старій табличці на страрій швидкості ( . Тобто ІП клієнта буде в 2 таблицях одночасно. Думаю це виправить видаленням ІП в скрипті onchange. Правильно? є такий ефект, але на справді враховуючи той факт шо в ончейндж потрібно виловлювати ІР по логіну простіше просто при заміні тарифного плану робити автоматом юзеру disabled/change_tariff/enabled. Власне так і роблю. І ще в догонку. Як зробити редірект, користувачу в якого негативний баланс, з будь-якого сайту на сторінку з повідомленням типу host:8080. засунути в табличку неактивних юзерів і зробити fwd куди треба. Link to post Share on other sites
morfey 82 Posted 2010-02-16 15:30:42 Author Share Posted 2010-02-16 15:30:42 fwd HOST_WITH_MESSAGE,80 tcp from CLIENT_IP to any Якби пакети через фаєрвол проходять, але все одно відкривається сторінка, а не перенаправляється Link to post Share on other sites
nightfly 1,250 Posted 2010-02-16 15:44:14 Share Posted 2010-02-16 15:44:14 to not me або to not HOST_WITH_MESSAGE це поперше, а по друге - dst-port 80 Link to post Share on other sites
morfey 82 Posted 2010-02-16 16:05:23 Author Share Posted 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 те саме( Link to post Share on other sites
Kucher2 122 Posted 2010-02-17 17:36:19 Share Posted 2010-02-17 17:36:19 Я делал виртуалхост на 81-ом порту в Апаче и форвардил в Онконнекте клиента на него. Link to post Share on other sites
Queeq 0 Posted 2010-02-17 17:45:08 Share Posted 2010-02-17 17:45:08 Я делал виртуалхост на 81-ом порту в Апаче и форвардил в Онконнекте клиента на него. Прикольное решение. Link to post Share on other sites
morfey 82 Posted 2010-02-17 18:26:42 Author Share Posted 2010-02-17 18:26:42 Я делал виртуалхост на 81-ом порту в Апаче и форвардил в Онконнекте клиента на него. як форвардив? Link to post Share on other sites
morfey 82 Posted 2010-02-19 11:47:48 Author Share Posted 2010-02-19 11:47:48 ап, як форвардив ? Link to post Share on other sites
morfey 82 Posted 2010-02-19 15:35:25 Author Share Posted 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 Не перекидає на потрібну сторінку Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now