Различия
Показаны различия между двумя версиями страницы.
| Следующая версия | Предыдущая версия | ||
| dpi:dpi_options:use_cases:wifi_hotspot_session_management:start [2024/08/07 13:20] – создано elena.krasnobryzh | dpi:dpi_options:use_cases:wifi_hotspot_session_management:start [Дата неизвестна] (текущий) – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | {{indexmenu_n> | ||
| - | ======Настройка GUI, СКАТ и WiFi HotSpot при включенном менеджменте сессий====== | ||
| - | =====Топология сети===== | ||
| - |   - Подключить оборудование согласно топологии сети.\\ {{ : | ||
| - | |||
| - | =====Последовательность действий при авторизации===== | ||
| - | - Абонент подключается к сети WiFi | ||
| - |   - Появляется welcome page с информацией, | ||
| - |   - Абонент отрывает браузер, | ||
| - | - Абонент вводит телефонный номер, запрашивает код доступа | ||
| - | - Код доступа отправляется на телефонный номер через SMS | ||
| - | - Абонент вводит полученный код доступа | ||
| - | - Происходит запись сессионной куки на абонентское устройство с сохранением в заданного периода и происходит переход на запрошенный пользователем URL | ||
| - | |||
| - | =====Установка виртуальных машин (ВМ)===== | ||
| - |   - Создаём 2 виртуальные машины со следующими минимальными характеристиками: | ||
| - | * dpiui_vm – 1 cpu, 2Gb Ram, 50G hard disk, Guest OS Centos 7, nic 1 | ||
| - |     * cp_wifi_vm – 1 cpu, 1Gb Ram, 30G hard disk, Guest OS Centos 7, nic</ | ||
| - |   - Устанавливаем последнюю версию CentOS-7 (build-2009 на момент написания) на обе виртуальные машины. По ходу установки выбираем (minimal install) минимальную установку.\\ После установки ОС, входим в консоль и устанавливаем пакеты на обе ВМ:< | ||
| - | - Выключить selinux на обоих ВМ: | ||
| - |     * Отредактировать файл / | ||
| - | * SELINUX=disabled и перезагрузить ВМ | ||
| - | |||
| - | =====Установка и настройка dpiui_vm===== | ||
| - | |||
| - |   - Установить dpiui на dpiui_vm по [[dpi: | ||
| - |   - Настроить сеть на обоих ВМ и СКАТ:< | ||
| - | ONBOOT=yes | ||
| - | IPADDR=10.0.0.x | ||
| - | NETMASK=255.255.255.0 | ||
| - | GATEWAY=10.0.0.1 | ||
| - | DNS1=10.0.0.2</ | ||
| - |   - Войти в GUI и добавить обе ВМ и СКАТ в разделе «ОБОРУДОВАНИЕ», | ||
| - | |||
| - | =====Установка и настройка cp_wifi_vm===== | ||
| - | |||
| - |   - Установить пакет wifi_hotspot на cp_wifi_vm по [[dpi: | ||
| - |   - Отредактируем конфиг файл для hotspot:< | ||
| - |     - AAA_HOTSPOT_IP – 10.0.0.4\\ Адрес NAS сервера, | ||
| - |     - AAA_HOTSPOT_PORT – 0\\ Порт NAS сервера, | ||
| - |     - AAA_HOTSPOT_ID – 2\\ ИД точки подключения к сети передачи данных, | ||
| - | - AAA_EXPORT_ENABLED=1\\ Включить экспорт ААА | ||
| - | - AUTH_CODE_LENGTH=4\\ Поменять кол-во символов в коде для SMS авторизации | ||
| - | |||
| - | Если прописали параметр AUTH_CODE_LENGTH, | ||
| - | |||
| - | В конце выполнить команду:< | ||
| - | |||
| - | =====Установка и настройка dhcp-isc на cp_wifi_vm===== | ||
| - | |||
| - | - Установить пакет dhcp-isc — yum install dhcp expect | ||
| - | - Далее настраиваем скрипты статического arp и конфиг файл dhcpd.conf: | ||
| - |     * Сначала конфиг файл dhcpd — nano / | ||
| - | authoritative; | ||
| - | db-time-format local; | ||
| - | |||
| - | |||
| - | log-facility local7; | ||
| - | |||
| - | |||
| - | subnet 100.64.0.0 netmask 255.255.252.0 { | ||
| - |   range 100.64.0.3 100.64.3.254; | ||
| - | default-lease-time 600; | ||
| - | max-lease-time 600; | ||
| - |   option subnet-mask 255.255.252.0; | ||
| - |   option broadcast-address 100.64.3.255; | ||
| - | option routers 100.64.0.1; | ||
| - |   option ntp-servers < | ||
| - | option domain-name-servers 10.0.0.2; | ||
| - |   option domain-name " | ||
| - | |||
| - | |||
| - | on commit { | ||
| - |       set ClientIP = binary-to-ascii(10, | ||
| - | set ClientMac = concat ( | ||
| - |       suffix (concat (" | ||
| - |       suffix (concat (" | ||
| - |       suffix (concat (" | ||
| - |       suffix (concat (" | ||
| - |       suffix (concat (" | ||
| - |       suffix (concat (" | ||
| - |       log(concat(" | ||
| - | |||
| - |   | ||
| - | on release { | ||
| - |       set ClientIP = binary-to-ascii(10, | ||
| - | set ClientMac = concat ( | ||
| - |       suffix (concat (" | ||
| - | substring(hardware, | ||
| - |       suffix (concat (" | ||
| - |       suffix (concat (" | ||
| - |       suffix (concat (" | ||
| - |       suffix (concat (" | ||
| - |       suffix (concat (" | ||
| - | |||
| - | |||
| - |       log(concat(" | ||
| - |       execute("/ | ||
| - | on expiry { | ||
| - |       set ClientIP = binary-to-ascii(10, | ||
| - |       log(concat(" | ||
| - |       execute("/ | ||
| - | } | ||
| - | subnet 10.0.0.0 netmask 255.255.255.0 { | ||
| - | }</ | ||
| - | |||
| - | |||
| - | touch / | ||
| - | && chown dpiacc: | ||
| - | |||
| - | chmod 755 / | ||
| - | |||
| - | |||
| - | chmod 755 / | ||
| - | |||
| - | |||
| - | set METHOD [lindex $argv 0] | ||
| - | set IP_ADDR [lindex $argv 1] | ||
| - | set MAC_ADDR [lindex $argv 2] | ||
| - | set MAC_ADDR [string toupper $MAC_ADDR] | ||
| - | # клиентский интерфейс на микротике: | ||
| - | set INT_ClIENT " | ||
| - | set status 0 | ||
| - | |||
| - | |||
| - | # | ||
| - | spawn / | ||
| - | |||
| - | |||
| - | expect " | ||
| - | |||
| - | |||
| - | # | ||
| - | spawn ssh -i / | ||
| - | expect { | ||
| - |     " | ||
| - |     " | ||
| - |     ">" | ||
| - | } | ||
| - | if { $METHOD == " | ||
| - | send "ip arp add address=$IP_ADDR mac-address=$MAC_ADDR interface=$INT_ClIENT\r"; | ||
| - | expect ">"; | ||
| - | |||
| - | |||
| - | send "ip firewall address-list remove \[find address=$IP_ADDR list=DROP_CLIENTS\]\r"; | ||
| - | expect ">"; | ||
| - | send "log info \"ADD: $IP_ADDR -- $MAC_ADDR\" | ||
| - | expect ">" | ||
| - | send " | ||
| - | expect eof | ||
| - | } elseif { $METHOD == " | ||
| - | send "ip arp remove \[find mac-address=$MAC_ADDR\]\r"; | ||
| - | expect ">"; | ||
| - | send "ip firewall address-list add address=$IP_ADDR list=DROP_CLIENTS\r"; | ||
| - | expect ">"; | ||
| - | send "log info \" | ||
| - | expect ">" | ||
| - | send " | ||
| - | expect eof | ||
| - | } elseif { $METHOD == " | ||
| - | send "ip arp remove \[find address=$IP_ADDR\]\r"; | ||
| - | expect ">"; | ||
| - | send "ip firewall address-list add address=$IP_ADDR list=DROP_CLIENTS\r"; | ||
| - | expect ">"; | ||
| - | send "log info \" | ||
| - | expect ">" | ||
| - | send " | ||
| - | expect eof | ||
| - | } elseif {$status == 0} { | ||
| - | send " | ||
| - | |||
| - | |||
| - | expect eof | ||
| - | exit 1; | ||
| - | } | ||
| - | |||
| - | |||
| - | set status 0 | ||
| - | |||
| - | |||
| - | # | ||
| - | spawn ssh -i / | ||
| - | |||
| - | |||
| - | expect { | ||
| - |     " | ||
| - |     " | ||
| - |     " | ||
| - | } | ||
| - | if {$status == 0} { | ||
| - | send "/ | ||
| - | expect " | ||
| - | send " | ||
| - | expect eof | ||
| - | }< | ||
| - | METHOD=$1 | ||
| - | IP_ADDR=$2 | ||
| - | MAC_ADDR=$3 | ||
| - | |||
| - | |||
| - | MYSQL_CONNECT_LEASEDB=" | ||
| - | |||
| - | |||
| - | if [ " | ||
| - |     echo " | ||
| - | elif | ||
| - |    [ " | ||
| - |     echo " | ||
| - | |||
| - | |||
| - | elif | ||
| - |    [ " | ||
| - |     echo " | ||
| - | fi | ||
| - | |||
| - | echo "end mysql"</ | ||
| - | systemctl start dhcpd | ||
| - | firewall-cmd --permanent —add-service=dhcp | ||
| - | firewall-cmd --reload</ | ||
| - |   - Создадим скрипт для переноса файла сессий на ftp:< | ||
| - | mkdir  / | ||
| - | mkdir  / | ||
| - | touch / | ||
| - | |||
| - | |||
| - | FTP_ADDR="< | ||
| - | FTP_USER="< | ||
| - | FTP_PASS="< | ||
| - | |||
| - | |||
| - | # | ||
| - | DIR="/ | ||
| - | |||
| - | |||
| - | ls $DIR | while read f; do | ||
| - |     curl --user $FTP_USER: | ||
| - |     mv $DIR/$f / | ||
| - | */5 * * * * / | ||
| - |   - Создадим открытый и закрытый ключ:< | ||
| - | ssh-keygen -t rsa</ | ||
| - | |||
| - | Секретную фразу оставляем пустой\\  | ||
| - | **Внимание! Переносим id.pub на скат (10.0.0.6) и микротик (100.64.0.1)!** | ||
| - |   * скат (10.0.0.6): перенести файл по ssh на скат и добавить в authorized_keys <code bash>cat id.pub >>  | ||
| - |   * микротик (100.64.0.1): | ||
| - | |||
| - | =====Настройка СКАТ===== | ||
| - | |||
| - |   - Настроим на скате db для юзеров:< | ||
| - | udr=1</ | ||
| - |   - Настроим фильтрацию по федеральному списку:< | ||
| - | federal_black_list=1 | ||
| - | # | ||
| - | black_list_redirect=http:// | ||
| - |   - Сделаем класс по умолчанию: | ||
| - | - Включим выгрузку ipfix: | ||
| - |     * Настроить интерфейс eth1: nano / | ||
| - | ONBOOT=yes | ||
| - | IPADDR=< | ||
| - | PREFIX=24</ | ||
| - | netflow_dev=eth1 | ||
| - | netflow_timeout=20 | ||
| - | netflow_full_collector_type=2 | ||
| - | netflow_full_collector=127.0.0.1: | ||
| - | netflow_passive_timeout=10 | ||
| - | netflow_active_timeout=20 | ||
| - | netflow_rate_limit=30 | ||
| - | ipfix_dev=eth1 | ||
| - | |||
| - | ipfix_tcp_collectors=< | ||
| - | ipfix_meta_tcp_collectors=< | ||
| - | ipfix_observation=127 | ||
| - | ipfix_dns_tcp_collectors=< | ||
| - | ipfix_nat_udp_collectors=< | ||
| - |   - Сделаем трафик в class 7 минимальным:< | ||
| - | tbf_inbound_class7=rate 1kbit</ | ||
| - | - Включим редирект на captive portal: cp_server=10.0.0.4 (ip cp) | ||
| - |   - Выключим nat для приватных адресов: | ||
| - |   - Остальные настройки СКАТ:< | ||
| - | ctrl_dev=lo | ||
| - | scale_factor=1 | ||
| - | num_threads=2 | ||
| - | class_order=0 | ||
| - | mem_tracking_flow=1500000 | ||
| - | mem_tracking_ip=3000000 | ||
| - | http_parse_reply=1 | ||
| - | rlimit_fsize=32000000000</ | ||
| - |   - Заменить содержимое скрипта / | ||
| - | fdpi_ctrl load --service 5 --profile.name=' | ||
| - | fdpi_ctrl load --service 11 --profile.name=' | ||
| - | fdpi_ctrl load --policing --profile.name=' | ||
| - |   - Добавить открытый ключ для доступа с hotspot на скат в файл / | ||
| - | fdpi_ctrl load --service 5 --profile.name=' | ||
| - | fdpi_ctrl load --service 11 --profile.name=' | ||
| - | fdpi_ctrl load --policing --profile.name=' | ||
| - |   - Настроим интерфейс eth0 для доступа к hotspot и dpiui< | ||
| - | ONBOOT=yes | ||
| - | IPADDR=10.0.0.6 | ||
| - | PREFIX=24 | ||
| - | DNS1=10.0.0.2</ | ||
| - | |||
| - | =====Настройка DPI и Hotspot через DPIUI===== | ||
| - | Настройка приоритизации по протоколам | ||
| - | |||
| - | 1. Переходим во вкладку Управление DPI → ПРИОРИТИЗАЦИЯ ПО ПРОТОКОЛАМ (DSCP) → Редактор | ||
| - | * cs0 – что пропускаем | ||
| - | * cs1 – что зажимаем тарифом | ||
| - |   * cs7 – что зажимаем глобально< | ||
| - | default cs1 | ||
| - | dns cs0 | ||
| - | http cs0 | ||
| - | https cs0</ | ||
| - | 2. CG-NAT в СКАТе: | ||
| - | |||
| - | **Настройка Hotspot:** | ||
| - |   - Переходим во вкладку Управление услугами → Hotspot\\ Web сервер: | ||
| - |   - Включаем WiFi и SMS авторизацию\\ SMS авторизацию через сервис sms.ru:\\ Метод: Post\\ Url:  https:// | ||
| - |   - Тело (From):< | ||
| - | to = [PHONE] | ||
| - | msg  =  Ваш код для WIFI: [CODE]</ | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Настройка тарифов Hotspot (в редакторе): | ||
| - | |||
| - | |||
| - | Тариф для авторизации: | ||
| - | |||
| - | |||
| - | htb_inbound_root=rate 5mbit ceil 5mbit burst 2500kbit cburst 2500kbit | ||
| - | htb_inbound_class0=rate 8bit ceil 5mbit burst 8bit cburst 2500kbit | ||
| - | htb_inbound_class1=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_inbound_class2=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_inbound_class3=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_inbound_class4=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_inbound_class5=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_inbound_class6=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_inbound_class7=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_root=rate 100kbit ceil 100kbit burst 50kbit cburst 50kbit | ||
| - | htb_class0=rate 8bit ceil 100kbit burst 8bit cburst 50kbit | ||
| - | htb_class1=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_class2=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_class3=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_class4=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_class5=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_class6=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_class7=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Тариф для бесплатного WiFi: | ||
| - | |||
| - | |||
| - | htb_inbound_root=rate 10mbit ceil 10mbit burst 5mbit cburst 5mbit | ||
| - | htb_inbound_class0=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_inbound_class1=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_inbound_class2=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_inbound_class3=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_inbound_class4=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_inbound_class5=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_inbound_class6=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_inbound_class7=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | htb_root=rate 10mbit ceil 10mbit burst 5mbit cburst 5mbit | ||
| - | htb_class0=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_class1=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_class2=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_class3=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_class4=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_class5=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_class6=rate 8bit ceil 10mbit burst 8bit cburst 5mbit | ||
| - | htb_class7=rate 8bit ceil 8bit burst 8bit cburst 8bit | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Услуги: | ||
| - | Переходим к управлению услугами и включаем CGNAT и выбираем профиль NAT_WIFI | ||
| - | Белый список: | ||
| - | Переходим во вкладку Управление услугами → услуги → черные и белые списки. | ||
| - | Выбираем нужный профиль и создаем список: | ||
| - | ip 10.0.0.4 (ip cp) | ||
| - | |||
| - | Если для cp есть запись в dns, то добавляем так: | ||
| - | cn example.com | ||
| - | |||
| - | Сохраняем настройки через интерфейс. | ||