Настройка доступа пользователей по технологии DOCSIS

Начиная с релиза 0.3.8 полностью ликвидирована старая модель работы с DOCSIS и вместо нее реализована, максимально простая, без пересборки конфигов модемов на лету, под каждого пользователя. Для того, чтобы иметь приблизительное понимание того, как это все работает - рекомендуем ознакомиться со следующей статьей. В кратце схема следующая: «пользователь» → «модем» → «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/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 генерирует битые файлы и может не собраться из портов. В таком случае придется прибегнуть к ручной сборке. Забираем последнюю версию с сайта разработчиков, и собираем ручками:

# tar zxvf docsis-0.9.6.tar.gz
# cd docsis-0.9.6
# ./configure && make && make install

После чего мы можем попытаться собрать простейший тестовый конфиг следующего содержания с ключом «docsis123» (он же должен быть сконфигурирован на CMTS). Конфиг (/root/modems.s ) у нас будет иметь следующий вид:

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.

Также возможно указание SNMP комьюнити и пути к установленному snmpwalk. Это требуется для оперативного снятия статистики о состоянии модема, уровнях сигнала в прямом и обратном каналах, модуляции и других важных параметрах.

docsistemplate.txt · Последние изменения: 2015/03/09 04:24 — nightfly
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: CC Attribution-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki