Это старая версия документа.
Internet IPoE
Предоставление некоммутируемых услуг Internet
Ручное вкючение
Правила включение выключения при помощи внешних команд
$conf{INTERNET_IPOE_START}='' | Правила для открытия доступа. Программе всегда передаются следующие параметры: %IP - ип адрес %MASK - битная маска (32,24) %NUM - номер правила ($conf{INTERNET_IPOE_FIRST_RULE} + (PORT или последняя цифра IP адреса) ) %LOGIN - Логин Примеры: FreeBSD «/usr/local/bin/sudo /sbin/ipfw -q delete %NUM; /usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from %IP to any; /usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from any to %IP»; Пример с шейпером $conf{INTERNET_IPOE_START}=«/usr/local/bin/sudo /usr/abills/libexec/linkupdown ipn up fxp1 %LOGIN %IP». ' > /dev/null 2>&1;'. «/usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from %IP to any; /usr/local/bin/sudo /sbin/ipfw -q add %NUM allow ip from any to %IP»; Linux «/usr/bin/sudo /sbin/iptables -t nat -I PREROUTING 1 -s %IP/%MASK -j ACCEPT; /usr/bin/sudo iptables -I FORWARD 1 -s %IP -d 0/0 -j ACCEPT; /usr/bin/sudo iptables -I FORWARD 1 -s 0/0 -d %IP -j ACCEPT»; |
---|---|
$conf{INETRNET_IPOE_STOP}=«« | Правила для закрытия доступа. FreeBSD »/usr/local/bin/sudo /sbin/ipfw -q delete %NUM; /usr/local/bin/sudo /sbin/ipfw -q add %NUM deny ip from %IP to any; /usr/local/bin/sudo /sbin/ipfw -q add %NUM deny ip from any to %IP»; Пример с шейпером $conf{INETRNET_IPOE_STOP}=«/usr/local/bin/sudo /usr/abills/libexec/linkupdown ipn down fxp1 %LOGIN %IP». ' > /dev/null 2>&1;'. «/usr/local/bin/sudo /sbin/ipfw -q delete %NUM»; Linux «/usr/bin/sudo /sbin/iptables -t nat -D PREROUTING -s %IP/%MASK -j ACCEPT; /usr/bin/sudo iptables -D FORWARD -s 0/0 -d %IP -j ACCEPT; /usr/bin/sudo iptables -D FORWARD -s %IP -d 0/0 -j ACCEPT»; |
Контроль доступа и нарезка трафика
При включении сессии выполняется правило указанное в конфигурационном файле (config.pl) $conf{INTERNET_IPOE_START} при завершении $conf{INTERNET_IPOE_STOP}. Система данным командам передаёт следующие атрибуты
%IP | IP адрес клиента |
%MASK | битная маска (32,24) |
%NUM | номер правила ($conf{INTERNET_IPOE_FIRST_RULE} + (PORT или последняя цифра IP адреса) ) |
%LOGIN | Логин |
%SPEED_IN | входящая скорость |
%SPEED_OUT | исходящая скорость |
а также переменные окружения
NAS_IP_ADDRESS | IP адрес сервера доступа |
NAS_MNG_USER | Пользователь для управления сервером доступа |
NAS_MNG_IP_PORT | IP:PORT управления сервером доступа |
NAS_ID | Номер сервера доступа |
NAS_TYPE | Тип сервера доступа |
В качестве шейпера удобно использовать /usr/abills/libexec/linkupdown.
- Пример правила открытия доступа
abills/libexec/config.pl
$conf{INTERNET_IPOE_START}='SUDO=/usr/local/bin/sudo; CMD="${SUDO} /usr/abills/libexec/linkupdown ipn up getif %LOGIN %IP %DEBUG > /dev/null 2>&1"; if [ "${NAS_TYPE}" = "mikrotik" ]; then CMD="/usr/abills/libexec/linkupdown mikrotik up - %LOGIN %IP NAS_HOST=${NAS_MNG_IP_PORT} NAS_ADMIN=${NAS_MNG_USER}"; elif [ "${NAS_MNG_IP_PORT}" != "" ]; then CMD="/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_rsa.${NAS_MNG_USER} ${NAS_MNG_USER}@${NAS_MNG_IP_PORT} \"${CMD}\""; fi; eval "${CMD}"'; $conf{INTERNET_IPOE_STOP}='SUDO=/usr/local/bin/sudo; CMD="${SUDO} /usr/abills/libexec/linkupdown ipn down getif %LOGIN %IP %DEBUG > /dev/null 2>&1"; if [ "${NAS_TYPE}" = "mikrotik" ]; then CMD="/usr/abills/libexec/linkupdown mikrotik down - %LOGIN %IP NAS_HOST=${NAS_MNG_IP_PORT} NAS_ADMIN=${NAS_MNG_USER}"; elif [ "${NAS_MNG_IP_PORT}" != "" ]; then CMD="/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_rsa.${NAS_MNG_USER} ${NAS_MNG_USER}@${NAS_MNG_IP_PORT} \"${CMD}\""; fi; eval "${CMD}"';
Для типа сервера - mikrotik-dhcp:
$conf{INTERNET_IPOE_START_RULE}='SUDO=/usr/local/bin/sudo; CMD="${SUDO} /usr/abills/libexec/linkupdown ipn up getif %LOGIN %IP %DEBUG > /dev/null 2>&1"; if [ "${NAS_TYPE}" = "mikrotik_dhcp" ]; then CMD="/usr/abills/libexec/linkupdown mikrotik up - %LOGIN %IP NAS_HOST=${NAS_MNG_IP_PORT} NAS_ADMIN=${NAS_MNG_USER}"; elif [ "${NAS_MNG_IP_PORT}" != "" ]; then CMD="/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_rsa.${NAS_MNG_USER} ${NAS_MNG_USER}@${NAS_MNG_IP_PORT} \"${CMD}\""; fi; eval "${CMD}"'; $conf{INTERNET_IPOE_STOP_RULE}='SUDO=/usr/local/bin/sudo; CMD="${SUDO} /usr/abills/libexec/linkupdown ipn down getif %LOGIN %IP %DEBUG > /dev/null 2>&1"; if [ "${NAS_TYPE}" = "mikrotik_dhcp" ]; then CMD="/usr/abills/libexec/linkupdown mikrotik down - %LOGIN %IP NAS_HOST=${NAS_MNG_IP_PORT} NAS_ADMIN=${NAS_MNG_USER}"; elif [ "${NAS_MNG_IP_PORT}" != "" ]; then CMD="/usr/bin/ssh -o StrictHostKeyChecking=no -i /usr/abills/Certs/id_rsa.${NAS_MNG_USER} ${NAS_MNG_USER}@${NAS_MNG_IP_PORT} \"${CMD}\""; fi; eval "${CMD}"';
Также внизу указано настройка дополнительных параметров для разных операционных систем и удалённых серверов доступа