Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
abills:docs:manual:linux_shaper [2014/02/14 15:39]
kodr
abills:docs:manual:linux_shaper [2018/04/18 17:20] (текущий)
asmodeus [Linux shaper (Управление скоростью)]
Строка 3: Строка 3:
  
 В данном разделе описывается основная концепция управления трафика в Linux В данном разделе описывается основная концепция управления трафика в Linux
 +
 +Чтобы унифицировать настройку шейпера была разаработана схема единого пакетного настройщика шейпера **shaper_start**.
 +Для настройки используется файл ​ /​etc/​rc.conf (внезависимости от ОС). В нем настраиваются:​
 +  * Правила шейпера
 +  * Правила блокировок ресурсов (Netblock)
 +  * Правила NAT
 +  * Редирект при негативном депозите
 +  * Ограничение на количество TCP/IP сессий
  
  
Строка 24: Строка 32:
 **Настройка** \\ **Настройка** \\
  
-**Список rc.conf параметров ​ для shaper_start.sh**+**Список ​/etc/rc.conf параметров ​ для shaper_start.sh**
 ^abills_firewall="​YES" ​ | Включить пред настроенные правила фаервола для Linux |  ^abills_firewall="​YES" ​ | Включить пред настроенные правила фаервола для Linux | 
 ^abills_shaper_enable="​YES"​ | Включить шейпер | ^abills_shaper_enable="​YES"​ | Включить шейпер |
Строка 30: Строка 38:
 ^abills_nas_id="" ​ | ID сервера доступа (по умолчанию 1 ) ^abills_nas_id="" ​ | ID сервера доступа (по умолчанию 1 )
 ^abills_ip_sessions=""​ | лимитирование количества IP сеcсий для клиента | ^abills_ip_sessions=""​ | лимитирование количества IP сеcсий для клиента |
-^abills_nat="​EXTERNAL_IP:​INTERNAL_IPS INTERNAL_IPS2:​NAT_IF"​ | Включение ​ NAT \\ \\  EXTERNAL_IP - IP адрес интерфейса смотрящего в интернет. Если параметр не указан система автоматически первый адрес с интерфейса маршрутизации по умолчанию ​ \\     ​INTERNAL_IPS - Пул адресов которым разрешён доступ в интернет \\   ​INTERNAL_IPS2 - Второй пул адресов которым разрешён доступ в интернет \\   ​NAT_IF - имя интерфейса смотрящего в интернет. Если параметр не указан система автоматически определяет интерфейс маршрутизации по умолчанию |+^abills_nat="​EXTERNAL_IP:​INTERNAL_IPS INTERNAL_IPS2:​NAT_IF;" | Включение ​ NAT \\ \\  EXTERNAL_IP - IP адрес интерфейса смотрящего в интернет. Если параметр не указан система автоматически первый адрес с интерфейса маршрутизации по умолчанию ​ \\     ​INTERNAL_IPS - Пул адресов которым разрешён доступ в интернет \\   ​INTERNAL_IPS2 - Второй пул адресов которым разрешён доступ в интернет \\   ​NAT_IF - имя интерфейса смотрящего в интернет. ​\\ Если параметр не указан система автоматически определяет интерфейс маршрутизации по умолчанию ​. \\ Если нужно указать ​ несколько внешних IP, определяются полностью сети и указываются через точку с запятой (;) |
 ^abills_dhcp_shaper=""​ | Включить IPoE  шейпер. Тольк если у ВАс установлен модуль FreeRADIUS DHCP | ^abills_dhcp_shaper=""​ | Включить IPoE  шейпер. Тольк если у ВАс установлен модуль FreeRADIUS DHCP |
 ^abills_neg_deposit=""​ | Включение пере направления на портал при израсходовано депозите ​  | ^abills_neg_deposit=""​ | Включение пере направления на портал при израсходовано депозите ​  |
Строка 39: Строка 47:
 ^abills_ipn_allow_ip=""​ | список адресов разрешенных без авторизации ​ | ^abills_ipn_allow_ip=""​ | список адресов разрешенных без авторизации ​ |
 ^abills_squid_redirect="​YES"​ | Включение перенаправления ​ на прокси сервер все трафика в 40 таблице. \\ Для работы с перенаправления пользователей нужно указать в фильтре тарифного плана или в фильтре учётной записи занесение IP в 40 таблицу. \\ **настройка squid  версии 2.6 и выше:** \\ squid.conf \\ http_port 192.168.0.1:​3128 transparent ​ | ^abills_squid_redirect="​YES"​ | Включение перенаправления ​ на прокси сервер все трафика в 40 таблице. \\ Для работы с перенаправления пользователей нужно указать в фильтре тарифного плана или в фильтре учётной записи занесение IP в 40 таблицу. \\ **настройка squid  версии 2.6 и выше:** \\ squid.conf \\ http_port 192.168.0.1:​3128 transparent ​ |
 +
 +
 +после добавления правил достаточно рестартануть службу ​
 +
 +  /​etc/​init.d/​shaper_start.sh restart
 +====Дополнительные правила ====
 +**abills_iptables_custom="/​etc/​fw.conf"​ ** 
 +
 +При включении данной опции система добавляет правила из указанного файла в iptables. Данная опция обрабатывается после выполнения всех предыдущих команд. Файл загружается программой ​ iptables-restore.
 +\\
 +**Форма** \\
 +
 +<​code>​
 +-A LOGNDROP -p icmp -m limit --limit 5/min -j LOG --log-prefix "​Denied ICMP: " --log-level 7
 +COMMIT
 +</​code>​
  
  
Строка 98: Строка 122:
 Прописываем правила настройки для шейпера /​etc/​rc.conf Прописываем правила настройки для шейпера /​etc/​rc.conf
  
-  
   abills_shaper_enable="​YES"​   abills_shaper_enable="​YES"​
   abills_ipn_if="​eth2,​eth3" ​ #​интерфейсы для подключения абонентов   abills_ipn_if="​eth2,​eth3" ​ #​интерфейсы для подключения абонентов
  
 запускаем инициализацию шейпера запускаем инициализацию шейпера
-  /etc/rc.d/​init.d/​shaper_start.sh start+  /​etc/​init.d/​shaper_start.sh start
  
  
Строка 147: Строка 170:
 **config.pl** **config.pl**
   ​   ​
-  $conf{IPN_FW_START_RULE}='​SUDO=/​usr/​bin/​sudo;​ LINKUPDOWN=/​usr/​abills/​libexec/​linkupdown;​ IPSET=/​usr/​sbin/  ​ipset;+  $conf{IPN_FW_START_RULE}='​SUDO=/​usr/​bin/​sudo;​ LINKUPDOWN=/​usr/​abills/​libexec/​linkupdown;​ IPSET=ipset;​
   CMD="​${SUDO} ${IPSET} -A allowip %IP ; ${SUDO} ${LINKUPDOWN} ipn up getif %LOGIN %IP LINUX_IPN2 > /dev/null 2>&​1;";​   CMD="​${SUDO} ${IPSET} -A allowip %IP ; ${SUDO} ${LINKUPDOWN} ipn up getif %LOGIN %IP LINUX_IPN2 > /dev/null 2>&​1;";​
-  if [ "​%MASK"​ != "​32"​ ]; then CMD="​${SUDO} ${IPSET} -A allownet %IP/%MASK ; ${SUDO} ${LINKUPDOWN} ipn up getif %LOGIN %IP LINUX_IPN2 > /dev/null 2>&​1;";​+  if [ "​%MASK"​ != "​32"​ ]; then CMD="​${SUDO} ${IPSET} -A allownet %IP/%MASK ; ${SUDO} ${LINKUPDOWN} ipn up getif %LOGIN %IP LINUX_IPN2 >       ​/dev/null 2>&​1;";​
   fi;   fi;
-  if [ "​${GUEST}"​ = "​1"​ ]; then CMD="echo %LOGIN ​${GUEST} > /tmp/shaper_dhcp.log;";+  if [ "​${GUEST}"​ = "​1"​ ]; then CMD="​${SUDOipset -D unknown_clients %IP > /dev/null 2>&​1;;";​ 
 +  fi; 
 +  if [ "​${UNKNOWN_CLIENT}"​ = "​1"​ ]; then CMD="​${SUDO} ipset -A unknown_clients %IP;";
   fi;   fi;
   eval "​${CMD}"';​   eval "​${CMD}"';​
-  ​$conf{IPN_FW_STOP_RULE}='​SUDO=/​usr/​bin/​sudo;​ LINKUPDOWN=/​usr/​abills/​libexec/​linkupdown;​ IPSET=/usr/sbin/ipset;+ 
 +  ​$conf{IPN_FW_STOP_RULE}='​SUDO=/​usr/​bin/​sudo;​ LINKUPDOWN=/​usr/​abills/​libexec/​linkupdown;​ IPSET=ipset;​
   CMD="​${SUDO} ${IPSET} -D allowip %IP; ${SUDO} ${LINKUPDOWN} ipn down getif %LOGIN %IP   ​LINUX_IPN2 > /dev/null 2>&​1;";​   CMD="​${SUDO} ${IPSET} -D allowip %IP; ${SUDO} ${LINKUPDOWN} ipn down getif %LOGIN %IP   ​LINUX_IPN2 > /dev/null 2>&​1;";​
-  if [ "​%MASK"​ != "​32"​ ]; then CMD="​${SUDO} ${IPSET} -D allownet %IP/%MASK ; ${SUDO} ${LINKUPDOWN} ipn down   getif %LOGIN %IP LINUX_IPN2 > /dev/null 2>&​1";​+  if [ "​%MASK"​ != "​32"​ ]; then CMD="​${SUDO} ${IPSET} -D allownet %IP/%MASK ; ${SUDO} ${LINKUPDOWN} ipn down   getif %LOGIN %IP LINUX_IPN2 ​  ​> /dev/null 2>&​1";​
   fi;   fi;
   eval "​${CMD}"';​   eval "​${CMD}"';​
- 
  
 **Копируем shaper_start.sh** **Копируем shaper_start.sh**
Строка 181: Строка 206:
   #####​Включить новый шейпер "​YES"​ или "​NO"​ #####   #####​Включить новый шейпер "​YES"​ или "​NO"​ #####
   abills_shaper2_enable="​YES"​   abills_shaper2_enable="​YES"​
 +  ​
 +  #####​Указать номера нас серверов модуля IPN разделитель ","#####​
 +  abills_ipn_nas_id=""​
 +  ​
 +  #####​Включить NAT "​Внешний_IP:​подсеть;​Внешний_IP:​подсеть;"#####​
 +  abills_nat=""​
 +  ​
 +  #####​Втлючть FORWARD на определённую подсеть разделитель ";"#####​
 +  abills_ipn_allow_ip=""​
 +  ​
 +  #####Пул перенаправления на страницу заглушку разделитель ";"#####​
 +  abills_redirect_clients_pool=""​
 +  ​
 +  #####​Внутренний интерфейс (нужен для нового шейпера)#####​
 +  #####​Пример "​vlan2,​vlan10,​vlan20-30,​vlan40"#####​
 +  abills_ipn_if=""​
 +  ​
 +  #####​Указать ID IPoE NAS серверов#####​
 +  #####​Пример "​10-20,​31,​26-44"#####​
 +  abills_dhcp_shaper="​YES"​
 +  ​
 +  #####​Указать IPoE NAS серверов "​nas_id;​nas_id;​nas_id"​ #####
 +  abills_dhcp_shaper_nas_ids=""​
 +  ​
 +  #####​Указать подсети IPoE серверов доступа разделитель ";"#####​
 +  abills_allow_dhcp_port_67=""​
 +  ​
 +  #####​Ожидать загрузку сервера с базой "​YES"​ или "​NO"​ #####
 +  abills_mysql_server_status="​NO"​
 +  ​
 +  #####​Указать адрес сервера mysql#####
 +  abills_mysql_server=""​
 +  ​
 +  #####​Привязать серевые перывания интерфейсы к ядрам "​YES"​ или "​NO"​ #####    ​
 +  abills_irq2smp=""​
 +  ​
 +  #####​Указать внутриниие интерфейсы#####​
 +  #####​Пример "​vlan2,​vlan10,​vlan20-30,​vlan40"#####​
 +  #​abills_unnumbered_iface=""​
 +====Shaper IPMARK==== ​  
 +Установка IPMARK: ​
 +
 +  apt-get install xtables-addons-dkms
 +  apt-get install ipset
 +  cd /​usr/​src  ​
 +  wget http://​mirror.yandex.ru/​ubuntu/​pool/​universe/​x/​xtables-addons/​xtables-addons_2.3.orig.tar.xz
 +  tar zxvf  xtables-addons_2.3.orig.tar.xz ​
 +  cd xtables-addons-2.3/​
 +  ./configure
 +  make
 +  make install ​
 +   
 +**Создаём и правим rc.conf**
 +  touch /​etc/​rc.conf
 +    ​
 +  nano /​etc/​rc.conf
 +  ​
 +вставляем
 +  #####​Включить фаервол "​YES"​ или "​NO"​ #####
 +  abills_firewall="​YES"​
 +  ​
 +  #####​Включить старый шейпер "​YES"​ или "​NO"​ #####
 +  abills_shaper_enable="​NO"​
 +  ​
 +  #####​Включить шейпер IPMARK"​YES"​ или "​NO"​ #####
 +  abills_shaper3_enable="​YES"​
   ​   ​
   #####​Указать номера нас серверов модуля IPN разделитель ","#####​   #####​Указать номера нас серверов модуля IPN разделитель ","#####​
Строка 204: Строка 295:
   ​   ​
   #####​Указать подсети IPoE серверов доступа разделитель ";"#####​   #####​Указать подсети IPoE серверов доступа разделитель ";"#####​
-  ​abills_allow_dhcp_popt_67=""​+  ​abills_allow_dhcp_port_67=""​
   ​   ​
   #####​Ожидать загрузку сервера с базой "​YES"​ или "​NO"​ #####   #####​Ожидать загрузку сервера с базой "​YES"​ или "​NO"​ #####
Строка 216: Строка 307:
  
  
-    ​