Программа для инициализации шейпера и управления фаерволом для OS FreeBSD.
Установка
Code Block | ||
---|---|---|
| ||
cp /usr/abills/misc/freebsd/shaper_start.sh /usr/local/etc/rc.d/ |
Аргументы программы
start [test] | Включить шейпер |
---|---|
stop [test] | Отключить шейпер |
test | Включить шейпер на 10 минут. Сделано с целью тестирования и предотвращения блокировки сервера |
Список rc.conf параметров для шейпера
abills_shaper_enable=«YES» | Включить шейпер. При включении шейпера удаляются все текущие настройки фаервола и устанавливаются только те, которые прописаны для shaper_start.sh. Если нужно добавить дополнительные параметры их стоит внести в файл /etc/fw.conf |
---|---|
abills_shaper_if=«em0» | Интерфейс шейпера (по умолчанию ng* ) |
abills_nas_id=«» | |
abills_ip_sessions=«» | Лимитирование количества IP сесий для клиента |
abills_nat=«EXTERNAL_IP:INTERNAL_IPS,INTERNAL_IPS2:NAT_IF» | Включение NAT EXTERNAL_IP - IP адрес интерфейса смотрящего в интернет. Если параметр не указан система автоматически выбирает первый адрес с интерфейса маршрутизации по умолчанию INTERNAL_IPS - пул адресов, которым разрешён доступ в интернет INTERNAL_IPS2 - второй пул, адресов которым разрешён доступ в интернет NAT_IF - имя интерфейса смотрящего в интернет. Если параметр не указан система автоматически определяет интерфейс маршрутизации по умолчанию. Можно указать несколько правил для трансляции во внешний адрес через точку с запятой ; |
abills_dhcp_shaper=«» | Включить IPoE шейпер. Только если у Вас установлен модуль FreeRADIUS DHCP |
abills_neg_deposit=«» | Включение перенаправления на портал при израсходованом депозите |
abills_portal_ip=«me» | IP адрес портала. По умолчанию me |
abills_mikrotik_shaper=«» | Поднятие правил шейпера на Mikrotik серверах доступа, аргумент номера серверов доступа |
abills_ipn_nas_id=«1» | Номер IPN сервера доступа |
abills_ipn_if=«» | Интерфейс для IPN шейпера |
abills_ipn_allow_ip=«» | Список адресов, разрешенных без авторизации |
abills_squid_redirect=«YES» | Включение перенаправления на прокси сервер всего трафика в 40-й таблице (ipfw table 40 list) Для работы с перенаправления пользователей нужно указать в фильтре тарифного плана или в фильтре учётной записи занесение IP в 40-. таблицу: настройка squid версии 2.6 и выше: squid.conf http_port 192.168.0.1:3128 transparent |
Шейпер ng_car
При использовании шейпера ng_car в abills/libexec/config.pl добавьте $conf{ng_car}=1;
Шейпер DUMMYNET
При использовании шейпера DUMMYNET в abills/libexec/config.pl ничего добавлять не надо.
Дополнительные параметры
2 внешних канала
Code Block | ||
---|---|---|
| ||
GW2_IF_IP="192.168.0.2" # IP адрес второго интерфейса смотрящего в интернет GW2_IP="192.168.0.1" # IP адрес второго шлюза GW2_REDIRECT_IPS="10.0.0.0/24" # Пул адресов которым разрешён доступ в интернет по второму каналу |
Внесение дополнительных правил в фаервол
Для внесения дополнительных правил в фаервол нужно занести в их в файл /etc/fw.conf и прописать в /etc/rc.conf. Дополнительные правила берутся исключительно с файла /etc/fw.conf
Code Block | ||
---|---|---|
| ||
firewall_type="/etc/fw.conf" |
Правила вносятся в таком формате
Code Block | ||
---|---|---|
| ||
add 10 allow ip from any to 10.0.0.1 via em0 add 12 allow ip from 10.0.0.1 to any via em0 |
NAT
для работы NAT необходимо скомпилировать ядро системы с опцией
Code Block | ||
---|---|---|
| ||
options IPFIREWALL_NAT |
Таблици NAT
33 | Таблица с исходящими IP адреса |
---|---|
34 | Таблица с внутренними IP адреса |
Активация нетблок
Номера правил
115 | Перенаправление на страницу предупреждения |
---|---|
116 | Блокировка ресурса |
Таблицы
13 | Адреса для блокировки |
---|
Временный доступ для пополнения
/etc/rc.conf
Code Block | ||
---|---|---|
| ||
abills_paysys_tmp_access="YES" |
Правило
120 | Открытие временного доступа для пополнения счета |
---|---|
121 | Открытие временного доступа для пополнения счета |
Таблицы
16 | Адреса клиентов с временным доступом. Аргумент передается как UID |
---|
Code Block | ||
---|---|---|
| ||
${IPFW} add 120 allow all from "table(16)" to any via ${IF} ${IPFW} add 121 allow all from any to "table(16)" via ${IF} |