====== Налаштування доступу користувачів за технологією DOCSIS ====== {{:motorola_bsr2000.jpg?|}} Починаючи з релізу 0.3.8 повністю ліквідовано стару модель роботи з DOCSIS і замість неї реалізовано максимально просту, без перезбірки конфігів модемів на льоту, під кожного користувача. Для того, щоб мати приблизне розуміння того, як це все працює - рекомендуємо ознайомитися з наступною [[http://habrahabr.ru/post/102429/|статтям]]. У стислості схема наступна: "користувач" -> "модем" -> "CMTS" -> "сервер". При "вставанні" модем спочатку здійснює пошук DS і US, після чого намагається отримати по tftp валідний конфіг і якщо це вдалося передає DHCP запити від користувача крізь DHCP Relay на CMTS до нашого сервера. Для забезпечення хоч якоїсь авторизації, з урахуванням того, що CMTS не вміють бріджинг, використовується заборона на проходження трафіку від IP, які не були отримані за допомогою нашого DHCP сервера. ====== Угоди: ====== **CMTS** - валідно налаштована Motorola BSR 2000, Motorola BSR1000, Cisco UBR або Arris Cadant\\ **інтерфейс em1** - дивиться на налаштовану CMTS\\ **10.10.100.0/24** - мережа DOCSIS модемів\\ **10.10.200.0/24** - мережа користувачів\\ **10.10.10.10.10/24** - адреса нашого сервера, висить аліасом на em1\\ **10.10.10.9/24** - адреса CMTS ethernet 0/0\\ **10.10.100.1/24** - адреса CMTS cable 0/0\\ **10.10.200.1/24** - адреса CMTS cable 0/0 secondary\\ ====== Авторизація на CMTS ====== Заборона для проходження трафіку від IP отриманих не крізь наш DHCP-сервер (для вписаних вручну, припустимо) здійснюється в режимі конфігурації кабельного інтерфейсу: Motorola: **host authorization on** \\ Cisco: **cable source-verify dhcp** \\ Arris: **ip verify-ip-address-filter** \\ ====== Налаштування tftpd ====== # mkdir /tftpboot далі # vim /etc/inetd.conf розкоментуємо наступний рядок: tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot і перезапустимо inetd # /etc/rc.d/inetd restart перевіримо працездатність tftp # touch /tftpboot/testme # tftp 127.0.0.1 tftp> get testme tftp> q # ls -la testme -rw-r--r---- 1 root wheel 0 Feb 4 13:55 testme # rm testme /tftpboot/testme ====== Збірка початкового конфіга ====== Для складання файлу конфігурації модему нам знадобиться утиліта docsis, встановлюємо: # cd /usr/ports/net-mgmt/docsis/ && make install На 64 бітних системах docsis 0.9.5 генерує биті файли і може не зібратися з портів. У такому разі доведеться вдатися до ручного збирання. Забираємо останню версію з [[http://sourceforge.net/projects/docsis/files/docsis/|сайту розробників]], і збираємо ручками: # tar zxvf docsis-0.9.6.tar.gz # cd docsis-0.9.6 # ./configure && make && make install Після чого ми можемо спробувати зібрати найпростіший тестовий конфіг такого змісту з ключем "docsis123" (він же має бути сконфігурований на CMTS). Конфіг (**/root/modems.s** ) у нас матиме такий вигляд: Main { NetworkAccess 1; GlobalPrivacyEnable 0; UsServiceFlow { UsServiceFlowRef 200; QosParamSetType 7; MaxRateSustained 0; SchedulingType 2; } DsServiceFlow { DsServiceFlowRef 100; QosParamSetType 7; TrafficPriority 3; MaxRateSustained 0; } MaxCPE 16; } # echo "docsis123" > /root/keyfile # docsis -e /root/modems.s /root/keyfile /tftpboot/modems.b Перевірити чого ми назбирали в бінарний конфіг можна так: # docsis -d /tftpboot/modems.b ====== Конфігурація CMTS на прикладі BSR2000 ====== enable password 0 changeme ! hostname bsr2000 ! ! ! no service password-encryption ! ! ip ftp username admin ip ftp password 0 docsis123 ! ip name-server 10.10.10.10 ! logging buffered 51200 no logging control docsis logging admin-status unconstrained logging rate-limit 100 1 logging buffered notifications logging console errors ! ! cable cmts type domestic ! ! interface ethernet 0/0 ip address 10.10.10.9 255.255.255.0 no shutdown ! interface ethernet 0/1 shutdown ! interface ethernet 0/2 shutdown ! interface ethernet 0/3 shutdown ! interface gigaether 0/0 shutdown ! interface gigaether 0/1 shutdown ! interface cable 0/0 ip address 10.10.100.1 255.255.255.0 ip address 10.10.200.1 255.255.255.0 secondary ip helper-address 10.10.10.10 cable helper-address 10.10.10.10 cable-modem cable helper-address 10.10.10.10 host no shutdown cable downstream 0 frequency 455250000 cable downstream 0 interleave-depth 128 cable downstream 0 power-level 450 no cable downstream 0 shutdown cable upstream 0 frequency 34000000 cable upstream 0 power-level 260 cable upstream 0/0 modulation-profile 2 no cable upstream 0 shutdown no cable upstream 0/0 shutdown no cable upstream 0/1 shutdown no cable upstream 0/2 shutdown no cable upstream 0/3 shutdown cable upstream 1 frequency 34000000 cable upstream 1 power-level 260 cable upstream 1/0 modulation-profile 2 no cable upstream 1 shutdown no cable upstream 1/0 shutdown no cable upstream 1/1 shutdown no cable upstream 1/2 shutdown no cable upstream 1/3 shutdown cable upstream 2 frequency 34000000 cable upstream 2 power-level 260 cable upstream 2/0 modulation-profile 2 no cable upstream 2 shutdown no cable upstream 2/0 shutdown no cable upstream 2/1 shutdown no cable upstream 2/2 shutdown no cable upstream 2/3 shutdown cable upstream 3 frequency 34000000 cable upstream 3 power-level 260 cable upstream 3/0 modulation-profile 2 no cable upstream 3 shutdown no cable upstream 3/0 shutdown no cable upstream 3/1 shutdown no cable upstream 3/2 shutdown no cable upstream 3/3 shutdown cable dynamic-service authorization-mode disable ip dhcp relay information option cable downstream schedule priority-wfq no cable wireless downstream modulation qpsk ! ! ! ! ! ! ! ip route 0.0.0.0 0.0.0.0 10.10.10.10 ! ! ! snmp-server engineid local 80001375030030b880f46100 snmp-server context snmp-server community changeme2 ro view changeme2 snmp-server chassis-id Serial Number: XXX-YY-ZZZZ snmp-server contact Docsis Admin (docsis@isp.ua) snmp-server sysname bsr2000 snmp-server enable traps snmp snmp-server enable traps ospf snmp-server enable traps bgp snmp-server enable traps entity snmp-server enable traps docsdevcmts snmp-server enable traps flap snmp-server location Somewhere snmp-server view changeme2 iso included snmp-server view changeme2 org included snmp-server view changeme2 dod included snmp-server view changeme2 internet included snmp-server view changeme2 directory included snmp-server view changeme2 mgmt included snmp-server view changeme2 experimental included snmp-server view changeme2 private included snmp-server view changeme2 security included snmp-server view changeme2 snmpv2 included snmp-server view changeme2 mib-2 included snmp-server view changeme2 system included snmp-server view changeme2 interfaces included snmp-server view changeme2 at included snmp-server view changeme2 ip included snmp-server view changeme2 icmp included snmp-server view changeme2 tcp included snmp-server view changeme2 udp included snmp-server view changeme2 egp included snmp-server view changeme2 transmission included snmp-server view changeme2 snmp included snmp-server view changeme2 ospf included snmp-server view changeme2 rip2 included snmp-server view changeme2 ifmib included snmp-server view changeme2 riverdelta included snmp-server trap rate-limit 100 1 ! ! packet-cable dqos shutdown no em shutdown no es shutdown ipsec ipsec shutdown password telnet 0 changeme ! session-timeout console 0 session-timeout telnet 5 ! telnet session-limit 8 ! ! ! ! ! ! ! ssh enable ! ! logging on logging trap notifications no logging snmp-trap logging facility local7 ! ! ! ! ! ! cable shared-secret 0 "docsis123" enable rdn-process ! ! ! ! cable service-class mab DefBEDown 1 ! mab DefRRDown 1 ! mab DefBEUp 1 ! mab DefRRUp 1 ! mab DefUGS 1 ! mab DefUGSAD 1 ! mab DefRTPS 1 ! mab DefNRTPS 1 ! ! ====== Конфігурація CMTS на прикладі BSR1000 ====== ! hostname rdelta ! ! boot system nvram:appImage.bin.r.01.00.09.PRR ! ! ip name-server 10.10.10.10 ! logging buffered 262144 logging rate-limit auto-restart logging rate-limit 100 1 logging buffered warnings logging console warnings ! ! interface ethernet 0/0 ip address 10.10.10.9 255.255.255.0 ! interface cable 0/0 ip address 10.10.100.1 255.255.255.0 ip address 10.10.200.1 255.255.255.0 secondary ip helper-address 10.10.10.10 cable helper-address 10.10.10.10 cable-modem cable helper-address 10.10.10.10 host cable downstream 0 frequency 455250000 cable downstream 0 power-level 450 no cable downstream 0 shutdown cable upstream 0 frequency 34000000 cable upstream 0 power-level 260 no cable upstream 0 shutdown cable upstream 1 frequency 34000000 cable upstream 1 power-level 260 no cable upstream 1 shutdown cable upstream 2 frequency 34000000 cable upstream 2 power-level 260 no cable upstream 2 shutdown cable upstream 3 frequency 34000000 cable upstream 3 power-level 260 no cable upstream 3 shutdown ip dhcp relay information option ! ! ! ! ! ! ip route 0.0.0.0 0.0.0.0 10.10.10.10 ! ! ! snmp-server context snmp-server community changeme2 ro view changeme2 snmp-server contact Docsis docsis@isp.ua snmp-server sysname bsr1000 snmp-server enable traps snmp-server location Somewhere snmp-server view changeme2 iso included snmp-server view changeme2 org included snmp-server view changeme2 dod included snmp-server view changeme2 internet included snmp-server view changeme2 directory included snmp-server view changeme2 mgmt included snmp-server view changeme2 experimental included snmp-server view changeme2 private included snmp-server view changeme2 security included snmp-server view changeme2 snmpv2 included snmp-server view changeme2 mib-2 included snmp-server view changeme2 system included snmp-server view changeme2 interfaces included snmp-server view changeme2 at included snmp-server view changeme2 ip included snmp-server view changeme2 icmp included snmp-server view changeme2 tcp included snmp-server view changeme2 udp included snmp-server view changeme2 egp included snmp-server view changeme2 transmission included snmp-server view changeme2 snmp included snmp-server view changeme2 ospf included snmp-server view changeme2 rip2 included snmp-server view changeme2 ifmib included snmp-server view changeme2 riverdelta included snmp-server trap rate-limit 100 1 no snmp-server trap rate-limit auto-restart ! ! ! ! logging on logging trap notifications ! clock timezone EET 2 0 ! ! cable shared-secret "docsis123" ! ! ====== Налаштування Ubilling ====== 1. Слід додати таке до **config/global.template** на початку секції в shared-network subnet 10.10.10.0 netmask 255.255.255.0 { } 2. Додати підмережу модемів Початкова ІР: 10.10.100.0 Остання ІР: 10.10.100.255 Тип мережі: DHCP static hosts Мережа/CIDR: 10.10.100.0/24 3. Добавити підмережу DOCSIS користувачів Початкова ІР: 10.10.200.0 Остання ІР: 10.10.200.255 Тип мережі: DHCP static hosts Мережа/CIDR: 10.10.200.0/24 4. Додати обробник DHCP для підмережі модемів, використовуючи такий "персональний шаблон": subnet 10.10.100.0 netmask 255.255.255.0 { default-lease-time 3600; option subnet-mask 255.255.255.0; option routers 10.10.100.1; server-name "10.10.10.10"; option tftp-server-name "10.10.10.10"; option bootfile-name "modems.b"; next-server 10.10.10.10; filename "modems.b"; option time-servers 10.10.10.10; option time-offset 2; include "/usr/local/etc/multinet/{HOSTS}"; } 5. додати обробник DHCP для підмережі DOCSIS користувачів\\ 6. переконатися в тому, що підмережі користувачів і модемів доступні за відповідними маршрутами через нашу CMTS # route add 10.10.100.0/24 10.10.10.9 # route add 10.10.200.0/24 10.10.10.9 ну і додати ці маршрути на майбутнє у rc.conf static_routes="cable modems" route_cable="10.10.200.0/24 10.10.10.9" route_modems="10.10.100.0/24 10.10.10.9" ====== Реєстрація модемів і контроль рівнів сигналу ====== Під час додавання модему слід вказати тільки його MAC-адресу, за якою надалі видаватиметься IP. Усе. Більше нічого.\\ Під час реєстрації модему йому буде видано першу-ліпшу вільну IP з підмережі з ID, зазначеним в опції DOCSIS_MODEM_NETID. {{ :docsismodemadd.png?|}} Також можлива вказівка SNMP ком'юніті та шляху до встановленого snmpwalk. {{ :docsissnmp.png?|}} Це потрібно для оперативного зняття статистики про стан модему, рівні сигналу в прямому і зворотному каналах, модуляцію та інші важливі параметри. {{ :docsisstats.png? |}}