====== Налаштування доступу користувачів за технологією 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? |}}