Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

Ссылка на это сравнение

uaixshape [2013/03/03 23:31]
nightfly
uaixshape [2013/03/03 23:32] (текущий)
nightfly
Строка 1: Строка 1:
 +====== Отдельная скорость на UA-IX ======
 +Среди некоторых провайдеров до сих пор является популярной выдача большей скорости "на Украину" абонентам. В случае получения префиксов UA-IX сетей при помощи BGP и заруливания их через другой интерфейс - все более менее понятно. В противном случае возможно использование следующего скрипта:
  
 +<file php update_uaix.php>
 +<?php
 +/////////////////////// CONFIG SECTION ///////////////////
 +
 +//URL to get UA-IX prefixes
 +$prefixes_url='http://www.colocall.net/ua/prefixes.txt';
 +// ipfw command path
 +$ipfw='/sbin/ipfw -q';
 +
 +//ukrainian prefixes table
 +$uaix_table=6;
 +
 +//pipe to shape ukrainian prefixes, upload pipe will be +1
 +$uaix_pipe=6;
 +
 +//UA-IX speed - download and upload
 +$uaix_speed='10Mbit/s';
 +$uaix_upload='5Mbit/s';
 +
 +//shape interface
 +$shape_interface='em2';
 +
 +///////////////////////////////////////////////////////
 +set_time_limit (0);
 +
 +$allprefixes_raw=file_get_contents($prefixes_url);
 +
 +if (!empty($allprefixes_raw)) {
 +
 +$allprefixes=explode("\n", $allprefixes_raw);
 +
 +//flushing old prefixes
 +$table_flush_cmd=$ipfw.' table '.$uaix_table.' flush';
 +shell_exec($table_flush_cmd);
 +
 +//refreshing pipes
 +$pipe_refresh_cmd=$ipfw.' pipe '.$uaix_pipe.' config bw '.$uaix_speed.' queue 32Kbytes mask dst-ip 0xffffffff';
 +shell_exec($pipe_refresh_cmd);
 +
 +$pipe_refresh_cmd=$ipfw.' pipe '.($uaix_pipe+1).' config bw '.$uaix_upload.' queue 32Kbytes mask src-ip 0xffffffff';
 +shell_exec($pipe_refresh_cmd);
 +
 +//extracting ua-ix prefixes
 +foreach ($allprefixes as $each) {
 + $each=trim($each);
 + if (!empty($each)) {
 + $table_add_cmd=$ipfw.' table '.$uaix_table.' add '.$each;
 + shell_exec($table_add_cmd);
 +    }
 +}
 +
 +//adding shaper rules for active ubilling users
 +$unshape_cmd=$ipfw.' delete 11000 11001';
 +shell_exec($unshape_cmd);
 +$shape_cmd=$ipfw.' add 11000 pipe '.($uaix_pipe+1).' ip from table\(3\) to table\('.$uaix_table.'\) via '.$shape_interface.' in';
 +shell_exec($shape_cmd);
 +$shape_cmd=$ipfw.' add 11001 pipe '.$uaix_pipe.' ip from table\('.$uaix_table.'\)  to table\(4\)  via '.$shape_interface.' out';
 +shell_exec($shape_cmd);
 +
 +//all done
 +print(sizeof($allprefixes).' UA-IX prefixes processed'."\n");
 +
 +} else {
 + print("Error receiving UA-IX prefixes");
 +}
 +
 +?>
 +</file> 
 +Как минимум изменения под вашу персональную реальность, требуют опции: $uaix_speed, $uaix_upload, $shape_interface.\\
 +Вызывать мы можем его при помощи команды
 +  php -q /etc/stargazer/update_uaix.php
 +
 +когда и как нам угодно: на старте системы - после инициализации фаервола, либо скажем при помощи crontab.\\
 +
 +После отработки скрипта, мы получим следующие правила в фаерволе:
 +<code>
 +11000 pipe 7 ip from table(3) to table(6) via em2 in
 +11001 pipe 6 ip from table(6) to table(4) via em2 out
 +</code>
 +
 +Собственно в табличке 6 у нас будут все UA-IX префиксы, а в 3,4 как водиться наши активные абоненты. Что откуда тут береться разобраться не должно представлять особых проблем.
uaixshape.txt · Последние изменения: 2013/03/03 23:32 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki