Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
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="${SUDO} ipset -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: | ||
- | |