Настройка DHCP+TFTP для DOCSIS

Недавно нужно было настроить выдачу IP адресов нескольким старым DOCSIS модемам и хосту находящемуся после модема.
Под рукой был Arris Cadant C3 и модемы Thomson TCM-420.

Первым делом запустим DHCP сервер который будет выдавать IP адреса модемам, например как я описывал в этой статье — Установка и настройка isc-dhcp-server.
А также запустим TFTP сервер на котором будут файлы для модемов, например как я описывал в статье — Установка и настройка TFTP сервера

На Arris Cadant C3 я настроил DHCP relay:

interface Cable 1/0
ip dhcp relay
ip dhcp relay information option
no ip dhcp relay validate renew
ip dhcp relay non-broadcast
cable helper-address 192.168.5.1
cable helper-address 192.168.5.2 cable-modem
cable helper-address 192.168.5.1 host
no cable dhcp-giaddr

Я указал разные DHCP для клиентов и для модемов, так как использовал для выдачи клиентам Accel-ppp, а он не умеет работать с файлами.
Запустив isc-dhcp-server я указал в файле конфигурации /etc/dhcp/dhcpd.conf:

log-facility local6;
shared-network cable {
 
subnet 172.17.0.0 netmask 255.255.0.0 {
option routers 172.17.0.1;
option domain-name-servers 8.8.4.4, 8.8.8.8;
option log-servers 192.168.5.2;
option subnet-mask 255.255.0.0;
default-lease-time 86400;
max-lease-time 86400;
option tftp-server-name "192.168.5.2";
option time-servers 192.168.5.2;
next-server 192.168.5.2;
 
host modem_80c6aba7479a {hardware ethernet 80:c6:ab:a7:47:9a; fixed-address 172.17.128.101; filename "80c6aba7479a.dcs";}
host modem_80c6aba7da0c {hardware ethernet 80:c6:ab:a7:da:0c; fixed-address 172.17.128.102; filename "80c6aba7da0c.dcs";}
}
}

После редактирования конфигурации перезапустил isc-dhcp-server:

sudo service isc-dhcp-server restart

Файлы *.dcs я создал используя утилиту docsis (https://files.ixnfo.com/Firmware/Arris/docsis.zip) и выполнив команду:

./docsis -e /docsis/profile_mod.txt /docsis/key /srv/tftp/80c6aba7479a.dcs

Содержимое /docsis/key:

12345

Содержимое /docsis/profile_mod.txt для Thomson TCM-420 (в котором нужно указать MAC модема, IP модема, IP хоста):

Main {
/* modem MAC 80:c6:ab:a7:47:00  172.17.128.254*/
/* connected hosts: 1 */
 
NetworkAccess 1;
 
ClassOfService {
        ClassID 1;
        MaxRateDown 9999999;
        MaxRateUp 2999999;
        PriorityUp 7;
}
 
SnmpMibObject .1.3.6.1.2.1.69.1.2.1.5.1 Integer 3; /* NmAccessControl - readWrite(3) */
SnmpMibObject .1.3.6.1.2.1.69.1.2.1.7.1 Integer 4; /* NmAccessStatus - CandGo(4) */
 
SnmpMibObject .1.3.6.1.2.1.69.1.6.3.0 Integer 1; /* docsDevFilterIpDefault discard(1), accept (2) */
 
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.3.1 Integer  2; /* IpControl discard(1), accept(2), policy(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.4.1 Integer  0; /* IpIfIndex both interfaces(0) Ethernet(1) CATV(2)     */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.5.1 Integer  3; /* IpDirection inbound(1), outbound(2), both(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.6.1 Integer  1; /* IpBroadcast true(1), falce(2) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.11.1 Integer 256; /* IpProtocol any(256) udp(17) icmp(1) tcp(6) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.12.1 Integer 67; /* IpSourcePortLow */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.13.1 Integer 68; /* IpSourcePortHigh */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.2.1 Integer  4; /* IpStatus CandGO (4) */
 
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.3.2 Integer  2; /* IpControl discard(1), accept(2), policy(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.4.2 Integer  0; /* IpIfIndex both interfaces(0) Ethernet(1) CATV(2)     */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.5.2 Integer  3; /* IpDirection inbound(1), outbound(2), both(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.6.2 Integer  2; /* IpBroadcast true(1), falce(2) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.11.2 Integer 256; /* IpProtocol any(256) udp(17) icmp(1) tcp(6) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.12.2 Integer 67; /* IpSourcePortLow */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.13.2 Integer 68; /* IpSourcePortHigh */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.2.2 Integer  4; /* IpStatus CandGO (4) */
 
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.3.3 Integer  1; /* IpControl discard(1), accept(2), policy(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.4.3 Integer  0; /* IpIfIndex both interfaces(0) Ethernet(1) CATV(2)     */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.5.3 Integer  3; /* IpDirection inbound(1), outbound(2), both(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.6.3 Integer  2; /* IpBroadcast true(1), falce(2) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.7.3 IPAddress  0.0.0.0; /* IpSaddr */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.8.3 IPAddress 0.0.0.0; /* IpSmask */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.9.3 IPAddress 192.168.100.1; /* IpDaddr */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.10.3 IPAddress 255.255.255.255; /* IpDmask */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.11.3 Integer 256; /* IpProtocol any(256) udp(17) icmp(1) tcp(6) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.12.3 Integer 80; /* IpSourcePortLow */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.13.3 Integer 80; /* IpSourcePortHigh */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.2.3 Integer  4; /* IpStatus CandGO (4) */
 
/* processing host 1 address  172.17.1.254 */
 
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.3.6 Integer  2; /* IpControl discard(1), accept(2), policy(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.4.6 Integer  0; /* IpIfIndex both interfaces(0) Ethernet(1) CATV(2)     */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.5.6 Integer  3; /* IpDirection inbound(1), outbound(2), both(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.6.6 Integer  2; /* IpBroadcast true(1), falce(2) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.7.6 IPAddress 172.17.1.254; /* IpSaddr */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.8.6 IPAddress 255.255.255.255; /* IpSmask */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.9.6 IPAddress 0.0.0.0; /* IpDaddr */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.10.6 IPAddress 0.0.0.0; /* IpDmask */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.11.6 Integer 256; /* IpProtocol any(256) udp(17) icmp(1) tcp(6) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.2.6 Integer  4; /* IpStatus CandGO (4) */
 
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.3.7 Integer  2; /* IpControl discard(1), accept(2), policy(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.4.7 Integer  0; /* IpIfIndex both interfaces(0) Ethernet(1) CATV(2)     */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.5.7 Integer  3; /* IpDirection inbound(1), outbound(2), both(3)  */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.6.7 Integer  2; /* IpBroadcast true(1), falce(2) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.7.7 IPAddress  0.0.0.0; /* IpSaddr */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.8.7 IPAddress 0.0.0.0; /* IpSmask */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.9.7 IPAddress 172.17.1.254; /* IpDaddr */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.10.7 IPAddress 255.255.255.255; /* IpDmask */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.11.7 Integer 256; /* IpProtocol any(256) udp(17) icmp(1) tcp(6) */
SnmpMibObject .1.3.6.1.2.1.69.1.6.4.1.2.7 Integer  4; /* IpStatus CandGO (4) */
 
MaxCPE 1;
}

После получения IP от isc-dhcp-server, каждый модем будет загружать свой файл с TFTP сервера, после этого клиент начнет получать IP от DHCP указанного в конфигурации Arris Cadant C3, количество успешно зарегистрированных модемов можно увидеть на Arris Cadant C3 введя команду:

show cable modem summary

В /var/log/syslog можно увидеть логи isc-dhcp-server и tftp, например:

Sep 27 23:10:55 dhcpd: DHCPDISCOVER from 00:18:c0:24:66:5e via 172.17.0.3
Sep 27 23:10:55 dhcpd: DHCPOFFER on 172.17.128.65 to 00:18:c0:24:66:5e via 172.17.0.3
Sep 27 23:10:57 dhcpd: DHCPREQUEST for 172.17.128.65 (10.0.0.18) from 00:18:c0:24:66:5e via 172.17.0.3
Sep 27 23:10:57 dhcpd: DHCPACK on 172.17.128.65 to 00:18:c0:24:66:5e via 172.17.0.3
Sep 27 23:10:58 atftpd[1239]: Serving 0018c024665e.dcs to 172.17.128.65:4946

Смотрите также мои статьи:
Скрипт резервного копирования конфигурации DOCSIS ARRIS Cadant C3 CMTS
Настройка Arris Cadant C3
Список OID и MIB для Arris Cadant C3

Оставьте комментарий

Добавить комментарий