Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
dpi:dpi_options:use_cases:wifi_hotspot_session_management [2024/08/07 13:20] – elena.krasnobryzh | dpi:dpi_options:use_cases:wifi_hotspot_session_management [2025/01/15 10:46] (текущий) – [Установка виртуальных машин (ВМ)] elena.krasnobryzh | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ======wifi_hotspot_session_management====== | + | {{indexmenu_n> |
+ | ======Настройка GUI, СКАТ и WiFi HotSpot при включенном менеджменте сессий====== | ||
+ | =====Топология сети===== | ||
+ | - Подключить оборудование согласно топологии сети.\\ {{ : | ||
+ | |||
+ | =====Последовательность действий при авторизации===== | ||
+ | - Абонент подключается к сети WiFi | ||
+ | - Появляется welcome page с информацией, | ||
+ | - Абонент отрывает браузер, | ||
+ | - Абонент вводит телефонный номер, запрашивает код доступа | ||
+ | - Код доступа отправляется на телефонный номер через SMS | ||
+ | - Абонент вводит полученный код доступа | ||
+ | - Происходит запись сессионных куки на абонентское устройство с сохранением заданного периода, | ||
+ | |||
+ | =====Установка виртуальных машин (ВМ)===== | ||
+ | - Создать две виртуальные машины со следующими минимальными характеристиками: | ||
+ | * ВМ '' | ||
+ | * ВМ '' | ||
+ | - Установить ОС на обе виртуальные машины. По ходу установки выбрать минимальную установку (minimal install).\\ После установки ОС открыть консоль и установить пакеты на обе ВМ: сначала< | ||
+ | - Выключить selinux на обоих ВМ: | ||
+ | * Отредактировать файл ''/ | ||
+ | * Задать значение параметра '' | ||
+ | |||
+ | =====Установка и настройка dpiui_vm===== | ||
+ | - Установить DPIUI на '' | ||
+ | - Настроить сеть на обоих ВМ и СКАТ:< | ||
+ | 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===== | ||
+ | - Установить пакет '' | ||
+ | - Отредактировать конфиг файл для Hotspot:< | ||
+ | - **'' | ||
+ | - **'' | ||
+ | - **'' | ||
+ | - **'' | ||
+ | - **'' | ||
+ | |||
+ | Если прописан параметр '' | ||
+ | |||
+ | В конце выполнить команду:< | ||
+ | |||
+ | =====Установка и настройка dhcp-isc на cp_wifi_vm===== | ||
+ | - Установить пакет '' | ||
+ | - Настроить скрипты статического ARP и конфигурационный файл '' | ||
+ | * Сначала конфигурационный файл '' | ||
+ | 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) и Mikrotik (100.64.0.1)!** | ||
+ | * СКАТ (10.0.0.6): перенести файл по SSH на СКАТ и добавить в '' | ||
+ | * Mikrotik (100.64.0.1): | ||
+ | |||
+ | =====Настройка СКАТ===== | ||
+ | - Настроить на СКАТе DB для юзеров:< | ||
+ | udr=1</ | ||
+ | - Настроить фильтрацию по федеральному списку:< | ||
+ | federal_black_list=1 | ||
+ | # | ||
+ | black_list_redirect=http:// | ||
+ | - Задать класс по умолчанию: | ||
+ | - Включить выгрузку IPFIX: | ||
+ | * Настроить интерфейс '' | ||
+ | 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: '' | ||
+ | - Выключить 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=' | ||
+ | - Настроить интерфейс '' | ||
+ | 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:\\ Метод: '' | ||
+ | - Тело (From):< | ||
+ | to = [PHONE] | ||
+ | msg = Ваш код для WIFI: [CODE]</ | ||
+ | |||
+ | **Настройка тарифов Hotspot (в редакторе): | ||
+ | - Тариф для авторизации:< | ||
+ | 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_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</ | ||
+ | |||
+ | 3. Услуги: | ||
+ | Перейти к управлению услугами, | ||
+ | |||
+ | 4. Белый список: | ||
+ | Перейти во вкладку Управление услугами → Услуги → Черные и белые списки.\\ | ||
+ | Выбрать нужный профиль и создать список: | ||
+ | Если для CP есть запись в DNS, то добавить так: '' | ||
+ | Сохранить настройки через интерфейс. | ||
+ | |||
+ | =====Настройка Mikrotik 100.64.0.1===== | ||
+ | - Настроить клиентский интерфейса Mikrotik\\ Обновить до Router OS 6.48.x< | ||
+ | add arp=reply-only arp-timeout=10m interface=sfp1 name=vWifi vlan-id=40 | ||
+ | |||
+ | /ip settings | ||
+ | set icmp-rate-limit=5 rp-filter=strict | ||
+ | |||
+ | /ip address | ||
+ | add address=100.64.0.1/ | ||
+ | |||
+ | /ip dhcp-relay | ||
+ | add dhcp-server=10.0.0.4 disabled=no interface=vWifi local-address=100.64.0.1 name=relay1 | ||
+ | |||
+ | /ip dns | ||
+ | set servers=10.0.0.2 | ||
+ | |||
+ | /ip route | ||
+ | add distance=1 dst-address=10.0.0.4/ | ||
+ | |||
+ | /system clock | ||
+ | set time-zone-name=Europe/ | ||
+ | |||
+ | /system ntp client | ||
+ | set enabled=yes primary-ntp=< | ||
+ | |||
+ | /tool bandwidth-server | ||
+ | set authenticate=no enabled=no</ | ||
+ | - Настроить IP связь между DHCP/ | ||
+ | |||
+ | =====Настройка unifi network===== | ||
+ | - Настроить точки ubiquiti: | ||
+ | * Установить unifi network на сервер | ||
+ | * Настроить DHCP для выдачи настроек точкам | ||
+ | * Если точки и контроллер в разных подсетях, | ||
+ | - Настроить Сеть и прочее: | ||
+ | * Перейти в настройки и далее в Network\\ Создать новою сеть и указать vlan 40 и название WiFi-Client, | ||
+ | * Перейти в настройки и далее в Guest Control\\ В Pre-Authorization Access указать IP Hotspot (10.0.0.4) | ||
+ | * Перейти в настройки и далее в Wireless Networks | ||
+ | * Создать WiFi сеть | ||
+ | * Сразу открыть ADVANCED OPTIONS | ||
+ | * Вписать любое имя/ | ||
+ | * Поставить галочку напротив Enabled | ||
+ | * Поставить галочку напротив Open | ||
+ | * Поставить галочку напротив Guest Policy | ||
+ | * В Network выбрать WiFi-Client | ||
+ | * Поставить галочку напротив Block LAN to WLAN Multicast and Broadcast Data | ||
+ | * Поставить галочку напротив Allow BSS Transition with WNM | ||
+ | * Поставить галочку напротив Block Tunneled Link Direct Setup (TDLS) connections | ||
+ | * Поставить галочку напротив Isolates stations on layer 2 (ethernet) level | ||
+ | * Нажать Save | ||
+ |