Работаю в интернет-провайдере, в одном из районов города стали часто резать медный 25 парный кабель.
Злоумышленникам все просто — зашел в подъезд, поднялся на верхний этаж, обрезал кабель и вытащил из трубостоек, можно скручивать и продавать. Факт кражи будет заметен только тогда, когда на вызов от недовольных абонентов приедут монтажники. Руководство поставило задачу — придумать, как с этим бороться и естественно, без доп. затрат.
После походов по форумам общий принцип был такой – делаем петлю на последней паре и подключаем в первый порт коммутатора, если ворюги режут кабель – линк пропадает. В теории все просто, но долгие поиски «разжеванного» решения результата не дали.
![](https://habrastorage.org/r/w780q1/storage2/093/974/42f/09397442f41776808e542e2f373465ff.jpg)
Во время реальных тестов выяснилось, что по 2-м жилам 10Мбит линк на порту не поднимается даже на 10Mb_Half (коммутаторы Dlink), реально заработало только на 4-х жилах, т.е. надо задействовать 2 последних пары в кабеле.
Итак, берем 4 жилы из кабеля (2 последних пары) на одном конце кабеля и делаем на них скрутки, скручиваем 1 и 4 жилу, 2 и 3 жилу, затем на другом конце обжимаем коннектор 1,2,3 жилу по порядку в 1-3 pin, и 4-ую жилу в 6-ой pin
![](https://habrastorage.org/storage2/231/241/9d3/2312419d3ffb44bfecd9edd784119d45.gif)
На коммутаторах выделим отдельный vlan под порт мониторинга (использовал 1-ый порт) и жестко зададим скорость на порту 10Mb_Half
Подключаем кабель в 1-ы порт, Link UP — отлично, теперь осталось отмониторить событие включения/выключения порта и сообщить об этом службам. Изначально хотел ловить SNMP trap'ы, но даже на одном вендоре на разных моделях и прошивках они работают по-разному, используя разные OID'ы. Также, trap'ы на изменения линков приходят постоянно, даже когда статус порта не меняется. Поэтому решил, что логичнее самому опрашивать коммутаторы по SNMP через определенный промежуток времени (60 секунд). OID'ы на запрос статуса линка порта стандартизированы в RFC (для первого порта 1.3.6.1.2.1.2.2.1.8.1).
Чтобы коммутатор мог отдать значение статуса линка, на нем должен быть настроен SNMP
Далее нужно было определиться, чем мониторить, тут очень помогла статья на Хабре про Zabbix, тем более что Zabbix и так используем. Для начала создадим шаблон в Zabbix,
Создадим файл CableState_zabbix_template.xml со следующим содержимым (использовался генератор из той же статьи, оставил только триггер на изменение линка):
После этого идем в Zabbix выбираем Настройка->Шаблоны->Импорт Шаблона
Выбираем созданный файл CableState_zabbix_template.xml
Далее в Узлах сети находим или добавляем нужный нам узел, где будет мониториться кабель, в его настройках выбираем Присоединенные Шаблоны – Добавить – CableState Сохраняем.
Все, теперь в Мониторинге Zabbix будут отображаться события выключения 1-ого порта
Сообщения вида:
Port 1 status down (CABLE CUT!!!) on 10.20.123.123
Если этого не достаточно, настраиваем оповещение по триггеру на почту
Заходим в Настройка->Действия->Создать действия
Настраиваем примерно так:
![](https://habrastorage.org/r/w1560/storage2/db3/84a/6c7/db384a6c78a56cbcc34446c1ebce8e50.png)
В самом действии можно выбрать отправку пользователю/группе пользователей
В результате будут приходить письма вида:
2013.07.29 — 15:55:39
Port 1 status down (CABLE CUT!!!) on 10.20.123.123: 10.20.123.123
Теперь осталось только определиться, кому присылать оповещения и что делать дальше — звонить 02/ ЧОП'ам или дежурным монтажникам…
Злоумышленникам все просто — зашел в подъезд, поднялся на верхний этаж, обрезал кабель и вытащил из трубостоек, можно скручивать и продавать. Факт кражи будет заметен только тогда, когда на вызов от недовольных абонентов приедут монтажники. Руководство поставило задачу — придумать, как с этим бороться и естественно, без доп. затрат.
После походов по форумам общий принцип был такой – делаем петлю на последней паре и подключаем в первый порт коммутатора, если ворюги режут кабель – линк пропадает. В теории все просто, но долгие поиски «разжеванного» решения результата не дали.
![](https://habrastorage.org/storage2/093/974/42f/09397442f41776808e542e2f373465ff.jpg)
Во время реальных тестов выяснилось, что по 2-м жилам 10Мбит линк на порту не поднимается даже на 10Mb_Half (коммутаторы Dlink), реально заработало только на 4-х жилах, т.е. надо задействовать 2 последних пары в кабеле.
Итак, берем 4 жилы из кабеля (2 последних пары) на одном конце кабеля и делаем на них скрутки, скручиваем 1 и 4 жилу, 2 и 3 жилу, затем на другом конце обжимаем коннектор 1,2,3 жилу по порядку в 1-3 pin, и 4-ую жилу в 6-ой pin
![](https://habrastorage.org/storage2/231/241/9d3/2312419d3ffb44bfecd9edd784119d45.gif)
На коммутаторах выделим отдельный vlan под порт мониторинга (использовал 1-ый порт) и жестко зададим скорость на порту 10Mb_Half
create vlan vlan1234 tag 1234
config vlan vlan1234 add untagged 1
config ports 1 speed 10_half
Подключаем кабель в 1-ы порт, Link UP — отлично, теперь осталось отмониторить событие включения/выключения порта и сообщить об этом службам. Изначально хотел ловить SNMP trap'ы, но даже на одном вендоре на разных моделях и прошивках они работают по-разному, используя разные OID'ы. Также, trap'ы на изменения линков приходят постоянно, даже когда статус порта не меняется. Поэтому решил, что логичнее самому опрашивать коммутаторы по SNMP через определенный промежуток времени (60 секунд). OID'ы на запрос статуса линка порта стандартизированы в RFC (для первого порта 1.3.6.1.2.1.2.2.1.8.1).
Чтобы коммутатор мог отдать значение статуса линка, на нем должен быть настроен SNMP
create snmp group cable v2c read_view CommunityView notify_view CommunityView
create snmp community cable view CommunityView read_only
Далее нужно было определиться, чем мониторить, тут очень помогла статья на Хабре про Zabbix, тем более что Zabbix и так используем. Для начала создадим шаблон в Zabbix,
Создадим файл CableState_zabbix_template.xml со следующим содержимым (использовался генератор из той же статьи, оставил только триггер на изменение линка):
Код
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export version="1.0" date="29.07.13" time="12.06">
<hosts>
<host name="CableState">
<proxy_hostid>0</proxy_hostid>
<useip>1</useip>
<dns></dns>
<ip>127.0.0.1</ip>
<port>10050</port>
<status>3</status>
<useipmi>0</useipmi>
<ipmi_ip>127.0.0.1</ipmi_ip>
<ipmi_port>623</ipmi_port>
<ipmi_authtype>0</ipmi_authtype>
<ipmi_privilege>2</ipmi_privilege>
<ipmi_username></ipmi_username>
<ipmi_password></ipmi_password>
<groups>
<group>Templates</group>
</groups>
<items>
<item type="4" key="ifOperStatus.1" value_type="3">
<description>Status port 1</description>
<ipmi_sensor></ipmi_sensor>
<delay>60</delay>
<history>7</history>
<trends>365</trends>
<status>0</status>
<data_type>0</data_type>
<units></units>
<multiplier>0</multiplier>
<delta>0</delta>
<formula></formula>
<lastlogsize>0</lastlogsize>
<logtimefmt></logtimefmt>
<delay_flex></delay_flex>
<authtype>0</authtype>
<username></username>
<password></password>
<publickey></publickey>
<privatekey></privatekey>
<params></params>
<trapper_hosts></trapper_hosts>
<snmp_community>cable</snmp_community>
<snmp_oid>1.3.6.1.2.1.2.2.1.8.1</snmp_oid>
<snmp_port>161</snmp_port>
<snmpv3_securityname></snmpv3_securityname>
<snmpv3_securitylevel>0</snmpv3_securitylevel>
<snmpv3_authpassphrase></snmpv3_authpassphrase>
<snmpv3_privpassphrase></snmpv3_privpassphrase>
<valuemapid>0</valuemapid>
<applications/>
</item>
</items>
<templates/>
<triggers>
<trigger>
<description>Port 1 status down (CABLE CUT!!!) on {HOSTNAME}</description>
<type>0</type>
<expression>{CableState:ifOperStatus.1.last(0)}=2</expression>
<url></url>
<status>0</status>
<priority>3</priority>
<comments></comments>
</trigger> </triggers>
<macros/>
</host>
</hosts>
<dependencies/>
</zabbix_export>
После этого идем в Zabbix выбираем Настройка->Шаблоны->Импорт Шаблона
Выбираем созданный файл CableState_zabbix_template.xml
Далее в Узлах сети находим или добавляем нужный нам узел, где будет мониториться кабель, в его настройках выбираем Присоединенные Шаблоны – Добавить – CableState Сохраняем.
Все, теперь в Мониторинге Zabbix будут отображаться события выключения 1-ого порта
Сообщения вида:
Port 1 status down (CABLE CUT!!!) on 10.20.123.123
Если этого не достаточно, настраиваем оповещение по триггеру на почту
Заходим в Настройка->Действия->Создать действия
Настраиваем примерно так:
![](https://habrastorage.org/storage2/db3/84a/6c7/db384a6c78a56cbcc34446c1ebce8e50.png)
В самом действии можно выбрать отправку пользователю/группе пользователей
В результате будут приходить письма вида:
2013.07.29 — 15:55:39
Port 1 status down (CABLE CUT!!!) on 10.20.123.123: 10.20.123.123
Теперь осталось только определиться, кому присылать оповещения и что делать дальше — звонить 02/ ЧОП'ам или дежурным монтажникам…