Проверяем а если часы:
dmesg | grep rtc
Проверяем какие модули загружены:
lsmod
Проверяем что у нас на шине i2c (у нас часы имеют адрес 68)
i2cdetect -y 1
Пробуем прочитать регистры:
i2cget -y 1 0x68 0x00
for reg in {0..6}; do echo "Регистр 0x0$reg: $(i2cget -y 1 0x68 0x0$reg)"; done
Пробуем изменить вывод на 24 часа:
i2cset -y 1 0x68 0x02 0x12
Добавляем часы в систему что бы можно было с ними взаимодействовать
modprobe rtc-ds1307
echo "ds1307 0x68" > /sys/class/i2c-adapter/i2c-1/new_device
dmesg | grep rtc
hwclock -s -f /dev/rtc1
# Запись системного времени в RTC
hwclock --systohc
hwclock --systohc -f /dev/rtc1
# Чтение времени из RTC
hwclock -v
hwclock -v -f /dev/rtc1
Для автоматического включения модуля ядра rtc-ds1307:
echo "rtc-ds1307" >> /etc/modules
python script:
apt install python3-smbus2
cat > clock.py << "EOF"
from smbus2 import SMBus
import time
I2C_BUS = 1 # номер шины (0 или 1)
DEV_ADDR = 0x68 # адрес DES3338 на шине
with SMBus(I2C_BUS) as bus:
# Чтение 7 байт (секунды, минуты, часы...)
data = bus.read_i2c_block_data(DEV_ADDR, 0x00, 7)
print(f"Время: {data[2]}:{data[1]}:{data[0]}")
EOF
python clock.py
общие команды:
logout - Быстрый выход из сессии интерфейса командной строки config, global-viewconfig
do - Выполнение команды глобального режима CLI (command_sequence) без выхода из режима конфигурирования config
root - Выход на верхний уровень режима конфигурирования config
end - Выход из любого уровня режима конфигурирования в глобальный режим config
quit - Выход из сессии интерфейса командной строки global-view
В глобальном режиме интерфейса командной строки доступны команды просмотра оперативного состояния системы (show-команды),
команды управления компонентами системы (например, reload, hw-module),
запуска различных диагностических тестов и работы с образами операционной системы.
Для уменьшения объема отображаемых данных в ответ за запросы пользователя и облегчения поиска необходимой информации можно воспользоваться фильтрацией.
Для фильтрации вывода команд нужно добавить в конец командной строки символ "|" и использовать одну из опций фильтрации:
formal — модификация выводов "show running-config" и "show candidate-config" из древовидного в линейный
begin — выводить всё после строки, содержащей заданный шаблон
include — выводить все строки, содержащие заданный шаблон
exclude — выводить все строки, не содержащие заданный шаблон
count — произвести подсчёт количества строк в выводе команды.
без конфигуре global-view :
rootshell - попасть в linux shell :)
show interfaces description - показать статус интерфейсов
show running-config - показать конфигурацию устройства
show candidate-config - Вывести кандидат-конфигурацию устройства.
configure - Перейти из глобального режима CLI в режим конфигурирования.
в configure:
commit - Применить кандидат-конфигурацию(применить изменения, внесенные во время сеанса редактирования).
abort - Отменить изменения в кандидат конфигурации и выйти из режим конфигурирования.
При выполнении этой команды кандидат-конфигурация становится идентичной текущей (стартовой) конфигурации.
Тип интерфейса:
Физические интерфейсы:
Обозначение физического интерфейса включает в себя его тип и идентификатор.
Идентификатор имеет вид //, где:
- номер устройства в кластере устройств;
- номер модуля в составе устройства;
- порядковый номер интерфейса данного типа в модуле.
Интерфейсы 10Гбит/с Ethernet tengigabitethernet // tengigabitethernet 0/0/10 te 0/0/10
Интерфейсы 40Гбит/с Ethernet fourtygigabitethernet // fourtygigabitethernet 0/0/2 fo 0/0/2
Интерфейсы 100Гбит/с Ethernet hundredgigabitethernet // hundredgigabitethernet 0/0/3 hu 0/0/3
Физические интерфейсы всегда присутствуют в системе.
Группы агрегации каналов bundle-ether bundle-ether 8
Группы агрегации каналов в системе можно создавать и удалять.
Сабинтерфейсы
bundle-ether .
tengigabitethernet //.
fourtygigabitethernet //.
hundredgigabitethernet //.
Сабинтерфейсы в системе можно создавать и удалять.
Интерфейсы локальной петли loopback loopback 100
Интерфейсы локальной петли в системе можно создавать и удалять.
Интерфейсы управления mgmt //
Интерфейсы out-of-band управления - это выделенные ethernetинтерфейсы для доступа и управления маршрутизатором.
В качестве могут выступать 'fmc0' и 'fmc1', в зависимости от аппаратной конфигурации.
'mgmt 0/fmc0/1' - для ME5100
'mgmt 0/fmc0/0' и 'mgmt 0/fmc0/1' для FMC0 в маршрутизаторе ME5000
'mgmt 0/fmc1/0' и 'mgmt 0/fmc1/1' для FMC1 в маршрутизаторе ME5000
Интерфейсы управления всегда присутствуют в системе.
IMPORTANT
Интерфейсы управления не предназначены для передачи транзитного трафика (не участвуют в работе dataplane) и жестко прикреплены к VRF 'mgmt-intf'.
change-privilege Данной командой осуществляется переход на соответствующий уровень привилегий.
change-privilege { p1 | p2 | … | p15 } [ PASSWORD ]
change-privilege p15 mypassword
clear alarm - Данная команда очищает активные аварии в системе.
clear alarm {all | ID }
all — очищаются все активные аварии
ID — очищается авария с указанным идентификатором.
clear alarm 300
clear arp - Данная команда удаляет записи из ARP-таблицы.
address IPv4 — очищается запись при совпадении IPv4-адреса
interface IF — очищаются записи на указанном интерфейсе
vrf VRF — указание VRF, из которого будет браться ARP-таблица
clear arp vrf test 10.0.0.200
clear bgp - Данная команда изменяет состояние BGP-сессии и счётчиков.
clear bgp {{ vrf ARGS | neighbor ARGS} {counters | flap-statistics |soft ARGS}}
vrf VRF — указание VRF, в котором будет выполнятся действие
neighbor {all | ipv4 | ipv6 | IPv4 | IPv6 } — сброс BGP-сессии: всех, всех ipv4/ipv6 unicast или конкретного адреса соседа
counters — очистка счётчиков BGP-сообщений
flap-statistics — очистка счётчиков flap-statistics
soft in|out — реконфигурация маршрутов(in — восстановить свои маршруты, out — отправить соседу свои маршруты).
clear bgp neighbor 10.0.0.10
clear configuration backups - Удаление бэкап-конфигруации.
clear configuration backups [ String ] - String — указание имени backup-файла.
clear configuration backups
clear crash-info all - Удаление логов crash-info.
clear crash-info { all | String }
clear domain-cache - Сброс кэша доменных имён.
clear domain-cache { String }
clear domain-cache eltex-co.ru
clear flow monitor - Сброс статистики потоков.
clear ipv6 neighbors - Данная команда удаляет записи из NDP-таблицы.
clear ipv6 neighbors address 2005:1::1
clear logging - Данная команда очищает файлы системных логов
persistent — указание на очистку лог-файлов, хранящихся в постоянной памяти
system — указание на очистку control-plane лог-файлов
file WORD — указание имени persistent-логов
clear logging persistent file BGP_LOG
clear mpls - Данная команда сбрасывает состояния LDP-сессий и RSVP-сессий и меток.
clear mpls ldp neighbor all
clear ospfv2 - Данная команда сбрасывает состояния OSPFv2-соседств.
clear ospfv2 statistics
clear ospfv3 - Данная команда сбрасывает состояния OSPFv3-соседств.
clear ospfv3 statistics
clear pim - Данная команда сбрасывает состояния PIM-соседств и очищает топологию.
clear pim counters
clear qos counters - Команда сбрасывает счётчики срабатывания политик QoS.
clear qos counters interface te 0/0/2
dir - Данная команда выводит список файлов со смонтированного USB-носителя.
delete - Данная команда удаляет файл на смонтированном USB-носителе
show system - Выведет текущие общие состояние
show system resources cpu - Данной командой осуществляется просмотр информации о текущем использовании процессора устройства.
show system resources cpu
show version - покажет текущую версию
backup to tftp://192.168.16.113/backup_directory/ - Команда создает элемент резервирования конфигурации и переходит в режим настройки этого элемента.
fan lower-speed 60 - Данной командой устанавливается минимальная скорость вращения вентиляторов системы охлаждения устройства, в процентах.
flow rate - Команда позволяет ограничить полосу пропускания для заданного типа трафика, перехватываемого на процессор.
configure
system punt rate-limit
flow ip-ttl rate 100
commit
broadcast-client - Данной командой включается режим приёма широковещательных сообщений NTP-серверов, при этом устройство работает в качестве NTP-клиента.
ntp vrf mgmt-intf
broadcast-client
clock read-calendar - Данная команда синхронизирует значение программных часов системы со значением аппаратных часов.
clock read-calendar
clock update-calendar - Данная команда записывает в аппаратные часы устройства значение программных часов.
clock update-calendar
ntp vrf Команда включает протокол ntp в заданном vrf и переходит в режим его конфигурирования
ntp vrf mgmt-intf
Интервала времени между отправкой сообщений NTP-серверу
maxpoll - Данная команда устанавливает максимальное значение интервала времени между отправкой сообщений NTP-серверу.
Использование отрицательной формы команды устанавливает значение по умолчанию (10, что соответствует 1024 секундам).
minpoll - Данная команда устанавливает минимальное значение интервала времени между отправкой сообщений NTP-серверу.
Использование отрицательной формы команды устанавливает значение по умолчанию (6, что соответствует 64 секундам).
ntp vrf default
server ipv4 192.168.16.36
maxpoll 15
minpoll 3
peer ipv4 - Данная команда используется для установления партнерских отношений между NTP-серверами и перехода в командный режим config-ntp-vrf-peer-ipv4.
ntp vrf default
peer ipv4 192.168.16.36
prefer - Данная команда отмечает текущий NTP-сервер как предпочтительный.
ntp vrf default
server ipv4 192.168.16.36
prefer
show clock - Данная команда выводит текущее время и дату.
tcp - Данная команда устанавливает режим работы по протоколу TCP для текущего удаленного сервера журналирования и задает номер используемого порта.
logging host 10.7.32.4 vrf default
tcp 513
udp - Данная команда устанавливает режим работы по протоколу UDP для текущего удаленного сервера журналирования и задает номер используемого порта.
logging host 10.7.32.4 vrf default
udp 513
ip mtu - Данная команда позволяет установить в конфигурации правило для задания IPv4/IPv6 Maximum Transmission Unit (MTU).
interface tengigabitethernet 0/0/1
ip mtu 6000
mtu - Данная команда позволяет установить в конфигурации правило для задания Layer 2 Maximum Transmission Unit (L2 MTU).
interface tengigabitethernet 0/0/1
mtu 1700
shutdown - Данная команда позволяет создать в конфигурации правило для административного выключения интерфейса и перевода его в состояние administratively down.
interface tengigabitethernet 0/0/1.100
shutdown
speed - Данная команда позволяет задать режим скорости на Ethernet-интерфейсе.
Отрицательная форма команды возвращает значение по умолчанию (auto).
speed { 10 | 100 | 100G | 10G | 1G | 40G | 25G |auto }
no speed
interface tengigabitethernet 0/0/1
speed 1G
vrf Данная команда позволяет создать в конфигурации экземпляр VRF и перейти в режим его конфигурации (config-vrf).
vrf test
vrf - Данная команда относит интерфейс к указанной Virtual Routing & Forwarding сущности (VRF).
interface tengigabitethernet 0/0/1
vrf TEST
description - Данная команда позволяет задать в конфигурации описание для текущего VRF
vrf test
description test
maximum prefix - Данная команда позволяет ограничить максимальное количество маршрутов в данном VRF.
vrf test
maximum prefix 100
rd - Данная команда позволяет задать в конфигурации Route Distinguisher для данного VRF.
vrf test
rd 10.0.0.1:200
show vrf - Данная команда отображает информацию по активным VRF.
show vrf test
vpn-id - Данная команда задает в конфигурации VRF определенный VPN ID, как описано в RFC 2685.
vrf test
vpn-id 100:100
Часто используемые настройки:
Пример задать имя, время, баннер:
configure
hostname NEW-HOSTNAME
clock set 12:00:00 nov 8 2023
banner exec @ hell0 @
commit
Создание пользователя:
configure
username stepan privilege 1 password password
enable password level 15 godemode
privilege exec 1 show running-config
exec 1 configure
commit
Конфигурация ip адреса для интерфейса:
interface GigabitEthernet 1/0/20
ip address 10.10.10.20/24
Конфигурация ip адреса для vlan:
interface vlan 1
ip address 150.20.137.40/24
Создание vlan для интерфейса:
configure
vlan database
vlan 20 name test
interface GigabitEthernet 1/0/1
switchport access vlan 20
commit
Создание/удаления trank vlan:
configure
interface GiggabitEhernet 1/0/1
switchport mode trunk
switchport trunk allowed vlan 10 - если не указать то затрет все vlan и оставит 10
switchport trunk allowed vlan add 10
switchport trunk allowed vlan add 12
switchport trunk allowed vlan add 20-50
switchport trunk allowed vlan remove 10 - для удаления vlan 10
switchport trunk allowed vlan all - разрешает все вланы
commit
Создание voice vlan:
voice vlan oui-table add a8f94b ( первые три байта телефона который мы в войс отправляем)
voice vlan id 10
voice vlan state oui-enable
lldp med network-policy 1 voice vlan 10 vlan-type tagged up 4
interface gigabitethernet 1/0/1
switchport mode general
voice vlan enable
lldp med enable network-policy
lldp med network-policy add 1
switchport general allowed vlan add 20 untagged
switchport general pvid 20
Создание STP:
spanning-tree
spanning-tree mode rstp (включен по умолчанию)
spanning-tree priority {0-61440}
interface GigabitEthernet 1/0/1
spannig-tree cost {1-200000000} - стоимость
spanning-tree disable - выключить rstp
spanning-tree bpdu filtering
spanning-tree bpduguard enable
Защита вланов rapid-pvst:
spanning-tree
spanning-tree mode rapid-pvst (в cisco по умолчанию включено)
vlan 10-20
interface gigabitethentet 1/0/1
switchport mode trunk
switchport trunk allowed vlan add 10-20
Конфигурация VRRP:
interface vlan 100
ip address 172.16.2.2/24 ( на другом устройстве указываем 172.16.2.3 )
vrrp 100 ip 172.16.2.1
vrrp 100 priority 1
vrrp 100 preempt
no vrrp 100 shutdown - отключить
Настройка dhcp server:
ip dhcp server
ip dhcp pool network Test
address low 10.0.1.100 high 10.0.1.150 255.255.255.0
default-route 10.0.1.1
dns-server 10.0.1.1
ip dhcp exluded-address 10.0.1.120 - исключить адрес
exit
interface vlan 10
ip address 10.0.1.1/24
interface GigaEthernet 1/0/11
switchport access vlan 10
Настройка OSPF:
interface vlan 1
ip address 192.168.1.10/24
exit
router ospf 1 - здесь указываем роутер id
router-id 192.168.1.10
network 192.168.1.10 area 0.0.0.0
redistribute connected subnets
Настройка do1x:
dot1x system-auth-control
aaa authentication dot1x default radius none
radius-server host 10.0.1.2 key eltex
interface gigabitethernet1/0/1
switchport access vlan 500
switchport mode access
dot1x host-mode multi-sessions
dot1x port-control auto
dot1x reauthentication
dot1x timeout tx-period 30
Шторм контроль:
errdisable recovery cause storm-control
interface gigabitethernet1/0/3
storm-control broadcat level 15 trap shutdown
storm-control unicast pps 12500 trap shutdown
storm-control multicast kbps 20480 trap shutdown
Борьба с петлями:
loopback-detection enable
loopback-detection mode {src-mac-addr|base-mac-addr|multicast-mac-addr|broadcast-mac-addr}
loopback-detection interval {1-60}
interface gigabitethernet 1/0/1
loopback-detection enable - включаем собстенно
errdisable recovery cause loopback-detection - обратно включаем если петля
Включение защиты порта:
interface GigabitEthernet 1/0/1
port security mode max-address - ограничиваем кол-во адресов
port security max 10
port security discadr trap 100
Включение защиты dhcp-snooping:
ip dhcp snooping
ip dhcp snooping vlan 10
interface gigabiteyhernet 1/0/1
ip dhcp snooping trust
Включение IP secure Guard:
ip dhcp snooping
ip dhcp snooping vlan 1 - для влана
ip source guard
interface gigabitethernet 0/1 для интерфейса
ip source guard
Настройка статической маршрутизации:
Настройка статической маршрутизации:
Статическая маршрутизация — это механизм, при помощи которого в системе можно вручную создавать, удалять и модифицировать IP-маршруты.
Статические маршруты могут быть заданы как в глобальной таблице маршрутизации, так и внутри VRF.
action Задание действия для пакетов для данного маршрута при маршрутизации трафика.
Отрицательная форма команды устанавливает значение по умолчанию (forward).
action { discard | forward | local | reject}
no action
discard — отбросить пакеты, редистрибуция разрешена
forward — отправить пакеты по маршруту
local — отбросить пакеты, редистрибуция запрещена
reject — не инсталлировать маршрут
router static
address-family ipv4 unicast
destination 40.10.0.0/16 40.10.0.1
interface tengigabitethernet 0/0/7
action reject
destination - Создание статического маршрута в конфигурации семейства AFI/SAFI.
Отрицательная форма команды удаляет заданный статический маршрут.
[no] destination { IPv4_pref | IPv6_pref } { IPv4_nhop | IPv6_nhop }
IPv4_pref (X.X.X.X/N) — IPv4 префикс маршрута
IPv6_pref (X:X:X:X::X/N) — IPv6 префикс маршрута
IPv4_nhop (X.X.X.X) — IPv4 адрес следующего узла (nexthop) для маршрута
IPv6_nhop (X:X:X:X::X) — IPv6 адрес следующего узла (nexthop) для маршрута
router static
address-family ipv4 unicast
destination 40.10.0.0/16 40.10.0.1
interface - Команда принудительно задает интерфейс, через который будет направлен трафик по данному статическому маршруту,
и производит переход в режим настройки дополнительных параметров статического маршрута.
Отрицательная форма команды удаляет данный интерфейс из текущего маршрута.
router static
address-family ipv4 unicast
destination 40.10.0.0/16 40.10.0.1
interface tengigabitethernet 0/0/7
router static - Включение поддержки статической маршрутизации и переход в режим настройки статических маршрутов.
tag - Задание тега маршрута. Данный тег является внутренним параметром маршрута, который может быть использован в дальнейшем, например, в правилах редистрибуции.
router static
address-family ipv4 unicast
destination 40.10.0.0/16 40.10.0.1
tag 3
OSPF
Настройка динамической маршрутизации OSPF
Существует три версии протокола OSPF:
v1 — в данный момент практически нигде не используется
v2 — используется для обмена маршрутной информацией протокола IPv4
v3 — используется для обмена маршрутной информацией протокола IPv6
address-prefix - Данная команда позволяет отфильтровать OSPFv2 IP LFA FRR маршруты в правиле lfa filter по префиксу, для которого будет рассчитываться альтернативный маршрут.
router ospfv2 PROCESS_NAME
lfa filter FILTER
address-prefix 10.0.0.0/8
advertise-max-metric - Команда устанавливает максимальную метрику для non-stub линков на период вермени, заданный командой time-to-advertise
router ospfv2 PROCESS_NAME
advertise-max-metric
area - Данная команда создает в конфигурации устройства определенную зону OSPFv2 и позволяет перейти в режим настройки конфигурации этой зоны.
В режиме конфигурации зоны возможно, в первую очередь, непосредственно конфигурировать интерфейсы, которые будут участвовать в процессе маршрутизации OSPFv2.
[no] area AREA
router ospfv2 PROCESS_NAME
area 0.0.0.0
area-aggregate - Данная команда позволяет создать в конфигурации правило для суммарного маршрута с LSA Type 3 или LSA Type 7.
[no] area-aggregate { nssa-external-lsa | summary-lsa } IPv4_PREFIX_FORMAT
area-id - Команда задает номер области (Area ID) для маршрута, анонсируемого командой host.
no area-id - Отрицательная форма команды удаляет настройку.
router ospfv2 PROCESS_NAME
host 10.10.10.10
area-id 10.0.0.0
as-br disable - Данная команда выключает в данном OSPFv2-процессе функционал Autonomous System Border Router (ASBR).
router ospfv2 PROCESS_NAME
as-br disable
authentication-key - Данная команда создает в конфигурации ключ аутентификации OSPF сессий на указанном интерфейсе.
router ospfv2 PROCESS_NAME
area 0.0.0.0
interface tengigabitethernet 0/0/1
authentication-key test
authentication-type - Команда задает тип шифрования, используемый при аутентификации.
router ospfv2 PROCESS_NAME
area 0.0.0.0
interface tengigabitethernet 0/0/1
authentication-type md5
auto-cost reference-bandwidth - Команда задает референсное (максимальное) значение пропускной способности (bandwidth),
относительно которого будет высчитываться стоимость интерфейса.
Стоимость интерфейса с референсным значением будет равна единице.
router ospfv2 PROCESS_NAME
auto-cost reference-bandwidth 1000000
bandwidth - Команда задает значение пропускной способности (bandwidth) на интерфейсе, которое будет использовано
при подсчете стоимости (cost) данного интерфейса относительно референсного значения.
router ospfv2 PROCESS_NAME
area 0.0.0.0
interface tengigabitethernet 0/0/1
bandwidth 100000
dead-interval - Данная команда позволяет задать в конфигурации значение OSPF Dead Interval.
router ospfv2 PROCESS_NAME
area 0.0.0.0
interface tengigabitethernet 0/0/1
dead-interval 10
disable - Данная команда запрещает добавление отфильтрованных OSPFv2 IP LFA FRR маршрутов при использовании фильтра lfa filter.
router ospfv2 PROCESS_NAME
lfa filter FILTER
disable
dscp - Команда указывает значение DSCP для исходящих сообщений OSPF протокола.
router ospfv2 1
area 0.0.0.0
interface twentyfivegigabitethernet 0/0/2
dscp 32
effect - Команда указывает значение DSCP для исходящих сообщений OSPF протокола.
router ospfv2 PROCESS_NAME
area 0.0.0.0
area-aggregate summary-lsa 10.0.0.0/8
effect advertise-matching
external-lsa-refresh-interval - Команда задает интервал между обновлениями external LSA, принадлежащих маршрутизатору.
router ospfv2 PROCESS_NAME
external-lsa-refresh-interval 60
Настройка LACP / LAG
Рассмотрим настройку LACP-группы в режиме active.
В режиме active порты коммутатора являются инициаторами согласования по протоколу LACP.
На встречной стороне порт должен быть настроен как в режиме active, так и в режиме passive.
Необходимо выполнить следующее:
1) Включаем работу LAG глобально на коммутаторе:
configure terminal
set port-channel enable
2) Активируем группу, в которую будем включать интерфейсы:
interface port-channel 2
no shutdown
exit
3) Перейти в режим конфигурирования порта:
interface GigabitEthernet0/2
4) Настроить LACP-группу:
channel-group 2 mode active , где 2 – номер группы
active – добавить порт в LACP-группу в режиме active.
для роутера:
lacp
interface bundle-ether 1
exit
interface tengigabitethernet 0/0/3
bundle id 1
bundle mode active
exit
interface tengigabitethernet 0/0/7
bundle id 1
bundle mode active
exit
exit
Существует 5 типов пакетов протокола OSPF, которые позволяют устанавливать соседство и выполнять обновление маршрутной информации:
Type 1 — Hello. Обнаруживает соседей и поддерживает соседские отношения.
Type 2 — Database Description. Описывает содержимое базы данных состояния канала маршрутизатора.
Type 3 — Link State Request (LSR). Запрос на получение базы данных состояния канала.
Type 4 — Link State Update (LSU). Обновление базы данных состояния канала (передача LSA соседним маршрутизаторам).
Type 5 — Link State Acknowledgment (LSAck). Подтверждение получения обновления.
Каждый пакет Link State Update, генерируемый маршрутизатором, содержит один или несколько LSA. Существует 5 различных типов LSA:
Type 1 — Router-LSA.
Генерируется каждым маршрутизатором для каждой области, которой он принадлежит.
Он описывает состояние интерфейсов маршрутизатора, подключенных к этой области.
Type 2 — Network-LSA.
Генерируется назначенным маршрутизатором (DR).
Он описывает набор маршрутизаторов, подключенных к определенной сети.
Рассылается только в области, содержащей эту сеть.
Type 3 или 4 — Summary-LSA.
Описывают маршруты между областями.
Type 3 Summary-LSA генерируются ABR и описывают маршруты между ABR и внутренними маршрутизаторами локальной области.
Они рассылаются через магистраль другим ABR.
Type 4 Summary-LSA описывают маршруты к ASBR.
Type 5 - AS-external-LSA.
Генерируются ASBR и описывают маршруты к пунктам назначения за пределами автономной системы.
Маршрут по умолчанию для автономной системы также описывается AS-external-LSA
Команды для диогностики ospf
MES5324:
общая инфа:
show ip ospf
соседи:
show ip ospf neighbor
обмен:
show ip ospf database
ME5200
общая инфа:
show ospfv2
соседи:
show ospfv2 neighbors
обмен:
show ospfv2 database
lacp MES5324 + MES5324:
Настройки sw1
interface tengigabitethernet1/0/2
channel-group 5 mode auto
exit
!
interface tengigabitethernet1/0/3
channel-group 5 mode auto
exit
!
interface tengigabitethernet1/0/5
channel-group 5 mode auto
exit
!
interface tengigabitethernet1/0/6
channel-group 5 mode auto
exit
!
interface Port-channel5
ip address 10.0.50.1 255.255.255.0
exit
Настройки sw2
interface tengigabitethernet1/0/2
channel-group 5 mode auto
exit
!
interface tengigabitethernet1/0/3
channel-group 5 mode auto
exit
!
interface tengigabitethernet1/0/5
channel-group 5 mode auto
exit
!
interface tengigabitethernet1/0/6
channel-group 5 mode auto
exit
!
interface Port-channel5
ip address 10.0.50.2 255.255.255.0
exit
lacp MES5324 + ME5200S:
Настройка MES5324:
interface tengigabitethernet1/0/1
channel-group 2 mode auto
exit
!
interface tengigabitethernet1/0/7
channel-group 2 mode auto
exit
!
interface Port-channel2
ip address 10.0.10.2 255.255.255.0
exit
Настройка ME5200S:
lacp
interface bundle-ether 1
exit
interface tengigabitethernet 0/0/3
bundle id 1
bundle mode active
exit
interface tengigabitethernet 0/0/7
bundle id 1
bundle mode active
exit
exit
!
interface bundle-ether 1
ipv4 address 10.0.10.1/24
exit
тесты кабеля
Показать интерфейсы:
show interfaces status
Тест медного кабеля:
test cable-diagnostics tdr interface gi0/1
Показать длину медного кабеля:
show cable-diagnostics cable-length
Показать оптические интерфейсы:
show fiber-ports optical-transceiver
show fiber-ports optical-transceiver interface TengigabitEthernet1/0/7
show fiber-ports optical-transceiver detailed interface TengigabitEthernet1/0/7
Зеркало трафика:
monitor session 1 destination interface gi1/0/3 - куда перенаправить трафик
monitor session 1 source interface gi1/0/2 both - откуда откуда перенаправить трафик
mpls
mpls label = 32 bit
layer2 Header | MPLS Header | IP Packet
MPLS Header:32 Bits (4 Bytes)
The label Value | Exp | S | TTL
20 bits | 3 bits | 1 bits | 8 bits
1 - 1 048 576 | 8 значений | два значения 0 или 1 | 0-255
Стак S
Первый пришёл последний вышел FILO
Fist IN / Fist OUT
0 - еще будет mpls label
1 - все последний mpls label
LSR - LABEL SWITCH ROUTER
Ingress LSR (imposition) - получает IP пакет, пушит в него MPLS Label(stack)
Следовательно вылетает из него MPLS пакет
Egress LSR (disposition) - получает MPLS пакет, удаляет из него лейбл.
Следовательно вылетает из него уже IP пакет.
Ingress/Egress LSR - находятся по краям (edge)mpls сети.
Часто их называют PE(provider edge) устройствами
Intermediate LSR - получает MPLS пакет, производит операции над ним и отправляет MPLS трафик дальше.
Часто называются P (Provider) устройствами
ip -> LSR -> ip = IP FORWARDING
mpls -> LSR -> mpls = INTERMEDIA LSR (P - provider)
mpls -> LSR -> ip = EGRESS LSR
ip -> LSR -> mpls = INGRESS LSR
CE ->> PE --> MPLS(P) <-- PE <--CE
CE - Costome Edge (оборудование которое ничего не знает про MPLS)
PE - Provider Edge ( на границе сети ) (Оборудование которое как то взаимодействует с MPLS, например ip -> mpls)
P - Provider Router ( внутри сети) (оборудование общающееся исключительно через MPLS)
imposition - добавление метки mpls
desposition - убирание метки mpls
LABEL SWITCH PATH (LSP). FEC
LSP - это простой список из LSR которые коммутируют MPLS пакет через всю MPLS сеть, либо через часть MPLS сети
Forwarding Equivalence Class (FEC) - группа пакетов которые коммутируются по одному и тому же пути и обслуживают одинаково
Все пакеты принадлежавшие одному FEC будут иметь один и тот же лейбл.
При этом пакеты с одним и тем же лейблом не всегда принадлежат к одному FEC, например, в случае если их mpls EXP отличаются.
Ingress LSR принимает решения о том, к каким FEC принадлежат приходящие в него пакеты.
LFIB - база меток mpls (Label Forwarding instance(information)Base
Содержит ipv4/ipv6 prefix, VPN prefix, TE tunnel, l2 forwarding entry, local label, remote label
85 17 eth1
11 22 eth2
13 33 eth3
Local Label - метка, которую локальный LSR назначил на префикс
Remote Label - метка, которую LSR получил от соседнего LSR
Протоколы получения лейблов:
1. Static ( возможность есть, но никогда так не делай! )
2. LDP ( сам все сделал, сам настроил )
3. RSGP-TE ( можно явно задать хождение трафика ) / Trafic Engineering
4. BGP
5. SR - mpls
SRv6
(модное под капотом OSPF/ISIS)
LDP = LABEL DISTRIBUTION PROTOCOL
назначает лейблы на все префиксы в таблице маршрутизации и передает соседям label binding
Prefix+label=binding
Labal binding передается соседям автоматически без каких то дополнительных запросов
SWAP - замена лейбла на другой
PUSH - был ip пакет ушел mpls
POP - был mpls ушел ip
Включение mpls на cisco
mpls ldp router-id lo0
mpls ip
int gi 0/0
mpls ip
show mpls forwarding-table
show ip route
Включение mpls на eltex ME5200S
mpls
forwarding
interface loopback 1
interface tengigabitethernet 0/0/4
exit
ldp
discovery interface tengigabitethernet 0/0/4
exit
neighbor 10.50.50.4 - сосед
exit
exit
router-id 10.50.50.1 - наш ип на loopback
transport-address 10.50.50.1 - наш ип на loopback
exit
show mpls ldp forwarding - покажет метки
show mpls ldp bindings local - покажет распределение меток локально
show mpls ldp bindings remote - покажет распределение меток удаленных
show mpls ldp bindings mldp - покажет распределение меток
sh run cluster
sh run bridges 100
bridge 100
vlan 1
ip firewall disable !!! ПОтотм включим как убедимся что заработало
ip фввкуыы 192.168.100.1/24
unit 1
ip address 192.168.100.2/24
unit 2
vrpp forse-up
vrrp id 100
vrrp 192.168.100.100/24
vrrp group 1
vrrp preempt disable
vrrp timers garp refrash 1
vrrp
enable
exit
Проверка
show cluster status
show cluster sync status
Интерфесы на первом юните нумеруется 1/0/1 а на втором 2/0/1
sh run int gi 1/0/1 - покажет первый юнит
sh run int gi 2/0/1 - покажет второй юнит
bridge 20
vlan 20
security-zone trusted
ip address 172.16.1.2/24 unit 1
ip address 172.16.1.3/24 unit 2
vrrp id 20
vrrp ip 172.16.1.1/24
vrrp group 1
vrrp timers garp refrash 1
vrrp
enable
exit
object-group network sync_dst
ip address-range 192.168.100.2 unit 1
ip address-range 192.168.100.1 unit 2
exit
object-group network sync_src
ip address-range 192.168.100.1 uni1
ip address-range 192.168.100.2 unit2
exit
по поводу фаервола:
sh run failovers
ip failover
local-address object-group sync_src
remote-address object-group sync_dst
vrrp-group 1
exit
ip firewall failover
sync-type unicast
port 9999
enable
exit
ip dhcp-server failover
mode active-standby
enable
exit
crypro-sync
enable
exit
Проверка доступных сервисов:
show higj-availability state
Включение фаервола:
Проверяем сессии:
show ip firewall sessions inside-source-address 192.168.100.1
!!! Укажи правильный ip для вашего микротика
!!! также вы можете изменить порт для вебинтерфеса IP-> services-> www-ssl
!!! так же рекомендуется выключить IP -> services ->www
Генерация и установка ssl сертификата:
certificate add name=local-cert common-name=local-cert key-usage=key-cert-sign,crl-sign
certificate sign local-cert
certificate add name=webfig common-name=192.168.88.1
certificate sign webfig
Включение веб сервера с генерированным сертификатом:
ip service
set www-ssl certificate=webfig disabled=no
Переходим в каталог в котором будем собирать ядро:
cd /opt
Ставим не обходимые пакеты для сборки в систему:
apt install git make gcc linux-libc-dev pkg-config libncurses-dev flex bison libssl-dev libelf-dev dwarves rsync bc fakeroot build-essential xz-utils libncurses5-dev
Скачиваем патчи солидрана:
git clone https://github.com/SolidRun/lx2160a_build.git
Скачиваем ядро:
git clone --depth 1 https://github.com/nxp-qoriq/linux -b LSDK-21.08
Переходим в каталог ядра:
cd linux
Производим слияние конфигов:
cp ../lx2160a_build/configs/linux/lx2k_additions.config arch/arm64/configs/
./scripts/kconfig/merge_config.sh arch/arm64/configs/defconfig arch/arm64/configs/lsdk.config arch/arm64/configs/lx2k_additions.config
Нужно как то себя обозначить для дальнейшего использования git:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
Применяем патчи:
git am ../lx2160a_build/patches/linux-LSDK-21.08/*.patch
Получаем настройки текущего ядра:
Достаточно любой из команд, но ничего страшного если выполните по рядку
zcat /proc/config.gz > .config
make oldconfig
На этом этапе можно добавить batman_adv в конфиг
vim .config
найти строку CONFIG_BATMAN_ADV ( используй / для поиска)
и привести ее к виду
CONFIG_BATMAN_ADV=m
CONFIG_BONDING=m
Теперь производим сборку и установку
make -j$(nproc)
make modules_install
make install
Если требуется можно сохранить старое ядро
mv /boot/Image /boot/Image.original
mv /boot/Image.gz /boot/Image.gz.original
Вот так мы установим новое ядро:
cp arch/arm64/boot/Image.gz arch/arm64/boot/Image /boot/
скрипт для поднятия сети
cat > /usr/local/sbin/cx-lx2-network.sh << "EOF"
#!/bin/bash
# Script to bring up high speed network interfaces ont the SolidRun LX2160A
# Clearfog / Honeycomb
for n in 9 7 10 8
do /usr/bin/ls-addni dpmac.$n
done
exit 0
EOF
cat > /etc/systemd/system/ls-addni.service << "EOF"
[Unit]
DefaultDependencies=no
Description=Bring up high-speed network interfaces
Before=network-pre.target
Wants=network-pre.target
[Service]
Type=oneshot
ExecStart=/usr/local/sbin/cx-lx2-network.sh
TimeoutSec=0
RemainAfterExit=yes
[Install]
RequiredBy=network.target
EOF
chmod +x /usr/local/sbin/cx-lx2-network.sh
systemctl daemon-reload
systemctl enable ls-addni.service
apt install -y git libnl-3-dev libnl-genl-3-dev libnl-genl-3-dev make pkg-config gcc
Установка нового модуля batman-adv
cd /opt/
git clone https://github.com/open-mesh-mirror/batman-adv.git
cd batman-adv
git checkout v2024.2
sed -i '/export/s/=n/=y/' Makefile
make -j`nproc`
make install
echo "batman-adv" | tee -a /etc/modules
Сборка и установка программы управления batman_adv
cd /opt/
git clone https://github.com/open-mesh-mirror/batctl.git
cd batctl/
git checkout v2024.2
make -j`nproc`
make install
solidrun 2160
https://solidrun.atlassian.net/wiki/spaces/developer/pages/197494288/HoneyComb+LX2+ClearFog+CX+LX2+Quick+Start+Guide
https://github.com/SolidRun/lx2160a_build
https://solid-run-images.sos-de-fra-1.exo.io/LX2k/lx2160a_build/20240731-2a7ab21/lx2160acex7_2000_700_3200_8_5_2-2a7ab21.img.xz
1. Включаем загрузку с сд карты (off on on on off)
2. Прерываем загрузку нажатием любой кнопки
3. Записываем в mmc образ
load mmc 0:1 0xa4000000 ubuntu-core.img
mmc dev 1
mmc write 0xa4000000 0 0xd2000
4. Загружаемся в новь созданный образ
boot
5. Логинемся
root/root
6. Меняем разметку на диске mmc
fdisk /dev/mmcblk1
жмем p - показать размер текущей системы
жмем d - удалить раздел
жмем n - создадим раздел
!!! внимание нужно отступить 131072
вводим 131072
после всех операций с разделами для сохранения жмем w
7. Увеличиваем фс
resize2fs /dev/mmcblk1p1
8. Выключаем устройство и переключаем перемычки на загрузку mmc
(off on on off off)
9. ssh root
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
systemctl restart sshd
10. dhcp
cat > /etc/network/interfaces.d/eth2 << "EOF"
auto eth2
iface eth2 inet dhcp
EOF
Показать доступные адаптеры
i2cdetect -l
i2c-0 i2c 2180000.i2c I2C adapter
i2c-1 i2c 21b0000.i2c I2C adapter
Вывод команды i2cdetect -y 0
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- 18 19 -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: 30 -- -- -- -- 35 -- -- 38 -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- 51 -- -- UU UU -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
--: Указывает, что по этому адресу на I2C-шине не было обнаружено устройства.
UU: Указывает, что устройство по этому адресу используется ядром (или драйвером) и недоступно для работы через i2c-tools
число (например, 18, 19, 30): Указывает на обнаруженное устройство по этому адресу.
Здесь показаны устройства, обнаруженные на шине 0 I2C.
Они находятся по следующим адресам:
0x18
0x19
0x30
0x35
0x38
0x51
Адреса 0x54 и 0x55 помечены как UU, что означает,
что эти устройства уже используются ядром,
скорее всего драйвером.
Проверьте загруженные модули ядра:
Используйте команду lsmod, чтобы увидеть, какие модули ядра загружены, и попробуйте найти тот, который использует адреса 0x54 и 0x55.
Выключите соответствующие модули:
Если возможно, выгрузите модули ядра, которые используют эти устройства.
Например:
rmmod имя_модуля
Вернуть модуль ядра:
modprobe имя_модуля
Команда i2cset
Команда i2cset используется для записи данных в регистр устройства на I2C-шине.
i2cset -y 0 0x54 0x00 0x12 0x34 0x56 0x78 0x9a i
-y: Отключает интерактивный запрос подтверждения (позволяет выполнять команду без подтверждения).
0: Номер I2C-шины (обычно 0 или 1).
0x54: Адрес I2C-устройства.
0x00: Адрес регистра, в который будут записаны данные.
0x12 0x34 0x56 0x78 0x9a: Данные, которые будут записаны в регистр.
i: Указывает, что данные должны быть записаны как последовательность байтов (I2C block write).
Команда i2cget
Команда i2cget используется для чтения данных из регистра устройства на I2C-шине.
i2cget -y 0 0x54 0x00 i 5
-y: Отключает интерактивный запрос подтверждения.
0: Номер I2C-шины.
0x54: Адрес I2C-устройства.
0x00: Адрес регистра, из которого будут прочитаны данные.
i: Указывает, что чтение будет выполнено как последовательность байтов (I2C block read).
5: Количество байтов для чтения.
Стирание данных
i2cset -y 0 0x54 0x00 0x00 0x00 0x00 0x00 0x00 i
i2cset -y 0 0x54 0x05 0x00 0x00 0x00 0x00 0x00 i
Стирание большого объёма данных баш скрипт
-------------------------------
#!/bin/bash
DEVICE_ADDRESS=0x54
START_REGISTER=0x00
BLOCK_SIZE=16 # размер блока данных для стирания за раз
# Цикл для записи нулей по всем регистрам
for ((i=0; i<256; i+=BLOCK_SIZE)); do
i2cset -y 0 $DEVICE_ADDRESS $((START_REGISTER + i)) $(printf '0x00%.0s' $(seq 1 $BLOCK_SIZE)) i
done
-------------------------------
Частный случай записи в eprom
# выгрузили модуль ядра
rmmod at24
#конвертация ASCII-кодов
echo -n "bs04" | od -An -t x1
# ASCII-кодов
printf "x62x73x30x34" | echo -e $(cat -)
# пример записи в bs04
#i2cset -y 0 0x54 0x00 0x62 0x73 0x30 0x34 i
#через звездочку удалять не стоит может будущем аукнутся
rm /var/lib/nexuscli/access_token
rm /var/lib/nexuscli/device_id
rm /var/lib/nexuscli/refresh_token
#вот так можно прочитать
i2cget -y 0 0x54 0x00 i 6
#загрузили модуль ядра
modprobe at24
!!! kernel linux < 6
!!! прочтите инструкции в файле README.md
!!! cat README.md
Ставим необходимы пакеты:
apt-get install dkms
dkms status
git clone https://github.com/brektrou/rtl8821CU.git
cd rtl8821CU
Выполняем установку
./dkms-install.sh
dkms status
Удаление драйвера установленного через DKMS
Проверяем что там у нас установлено используем команду "dkms status ":
dkms status
rtl8821cu, 5.12.0.4: added
rtl8821CU, 5.4.1: added
Удаляем ( rtl8821cu/5.12.0.4):
dkms uninstall rtl8821cu/5.12.0.4
dkms remove rtl8821cu/5.12.0.4 --all
8821cu-20210916 RPI 3B+
https://github.com/morrownr/8821cu-20210916?tab=readme-ov-file
Ставим пакеты для сборки:
apt install -y bc git dkms build-essential raspberrypi-kernel-headers
wget https://raw.githubusercontent.com/RPi-Distro/rpi-source/master/rpi-source -O /usr/local/bin/rpi-source
chmod +x /usr/local/bin/rpi-source && /usr/local/bin/rpi-source -q --tag-update
Качаем драйверы:
cd /opt
git clone https://github.com/morrownr/8821cu-20210916
Устанавливаем драйвер
!!! В Makefile уже установлена авто определения драйвера.
cd 8821cu-20210916/
make -j4
./dkms-make.sh
./install-driver.sh
0. Первым делом открываем Wireshark, выбираем интерфейс, на котором хотим “сниффить”
и устанавливаем следующий фильтр:
udp port 37008
1. А теперь самое интересное – подключаемся к MikroTik’у через WinBox, переходим в раздел Tools далее Packet Sniffer и настраиваем Streaming
Полезное для wireshark:
Включить отображение Packet Datagram
Edit -> Preference -> Layout
Выбрать вторую и в панелях выставить:
Pane 1: Packet list
Pane 2: Packet Details
Pane 3: Packet Diagram
Не забудьте включить Show Field Value в окошке Packet Datagram для отображения данных из пакета на картинке справа:)
Для камер ActiveCam:
rtsp://ip_адрес:554/streaming/video0 - основной поток
rtsp://ip_адрес:554/streaming/video1 - второй поток
Для камер Trassir:
основной поток: rtsp://[логин]:[пароль]:[IP-адрес]:[rtsp-порт]/live/main
дополнительный: rtsp://[логин]:[пароль]:[IP-адрес]:[rtsp-порт]/live/sub
Для камер Hikvision:
rtsp://admin:12345@192.0.0.64:554/Streaming/Channels/101
rtsp - тип используемого протокола
admin - имя учетной записи по умолчанию (лучше изменить)
12345 - пароль используемой учетной записи (ваш пароль к устройству)
192.0.0.64 - IP-адрес камеры (укажите свой)
554 RTSP порт камеры по умолчанию (может быть изменен в настройках)
101 - первая камера, первый поток
201 - вторая камера, первый поток
102 - первая камера, второй поток
1301 - 13-я камера, первый поток и т.д.
Адреса для устаревших моделей:
rtsp://admin:12345@192.0.0.64:554/h264/ch01/main/av_stream - основной поток
rtsp://admin:12345@192.0.0.64:554/h264/ch01/sub/av_stream - второй поток
tenda rtsp
https://www.tendacn.com/faq/3692.html
Для камер CP3/CP6/CP7, но может отличаться в зависимости от прошивки.
URL-адрес RTSP, максимальное разрешение 2560x1440p 15 кадров в секунду:
rtsp://admin:admin123456@xxx.xxx.xxx.xxx:8554/profile0
URL-адрес RTSP, максимальное разрешение 640x360p 15 кадров в секунду:
rtsp://admin:admin123456@xxx.xxx.xxx.xxx:8554/profile1
рабочая ссылка (CP3):
rtsp://admin:admin123456@ip_address_cam:8554/profile1
для новой (RP3):
#
rtsp://admin:admin123456@192.168.XX.XX:554/ch=1?subtype=0
# ONVIF
enabled - включили привилегированный режим
config t - вошли в глобальную настройку
enable password 123456 - задали пароль на enable
service password-encryption - включили шифрование паролей
enable secret 123456 - задали пароль
Line ? - покажет все доступные терминалы
Line console 0 - выберем консоль console 0
login local - включим использование локальной базы паролей
username ? - посмотреть все доступные параметры для username
username admin privileg 15 secret pass_Word!@ - создать пользователя, задать пароль и привилегии
Настройка статического IP
interface Vlan1 - выбираем Vlan1 для настройки
ip address 192.168.0.1 255.255.255.0 - добавляем адрес
no shutdown - включаем и убеждаемся
Доступ поп ssh
hostname test.dom - задаем имя хоста
ip domain name test.dom - задаем имя хоста и домена
crypto key generate rsa - генерируем ключ
Line ? - покажет все доступные терминалы
Line vty 0 4 - выберем виртуальный терминал vty 0 4
? - можем посмотреть все доступные команды
transporent input ? - посмотрим все доступные режимы (telnet,ssh)
transporent input ssh - выберем ssh
login local - выберем использование локальной базы паролей
logging synchronous - активируем автоматическое поднятие строки после ответа системы на проделанные изменения
exec-timeout 60 0 - указываем время "тайм аута timeout" до автоматического закрытия SSH сессии в 60 минут
vlans
Vlan1
en - входим в привилегированный режим
show run - смотрим конфигурацию
config t - входим в режим глобальной настройки
vlan 200 - создадим vlan 200
? - смотрим доступные команды
name Name_vlan - задать имя для vlan 2
exit - выйдем из настройки vlan 200
cisco добавляем интерфейс в vlan 200
en - входим в привилегированный режим
show run - смотрим конфигурацю
config t - входим в режим глобальной настройки
interface fastEthernet 0/1 - выбираем интерфейс 0/1
switchport mode access - выбираем режим работы access
switchport access vlan 200 - добавляем в vlan 200
exit - выходим из настройки interface fastEthernet 0/1
interface fastEthernet 0/2 - выбираем интерфейс 0/2
switchport mode access - выбираем режим работы access
switchport access vlan 200 - добавляем в vlan 200
cisco trunk
en - входим в привилегированный режим
show run - смотрим конфигурацию
config t - входим в режим глобальной настройки
interface gigabitEthernet 0/1 - выбираем gigabitEthernet 0/1
switchport mode trunk - включаем режим trunk
switchport trunk allowed vlan 200,300 - разрешаем vlan 200 и 300
exit - выйти из настройки interface gigabitEthernet 0/1
Внимание! Если вы хотите в транковый порт добавить ещё один влан, то вам необходимо использовать следующий синтаксис команды:
switchport trunk allowed vlan add 105
Управление несколькими интерфейсами:
interface range fastEthernet 1/0 - 15
no shutdown
switch mode trunk
Команда do позволяет выполнять команды из configure termianl
do show running-config
do show switchport
do show interfaces
do show ip protocols
do show ip route
do show ip arp
Поиск неисправностей
--------------------------------------
на маршрутизаторах:
enable - входим в привилегированный режим
show running-config - показать конфигурацию cisco
show ip interface brief - покажет состояние интерфейсов
show mac-address-table - показать таблицу mac-адресов (полезно при поиски устройств не получивших IP адрес, линк есть)
sh mac address-table vlan [номер влана] / sh mac address-table interface [giX/Y] - маки на конкретном логическом или физическом интерфейсе
sh int description - дескрипшены на портах
sh int switchport | begin [номер порта/название интерфейса] ("begin" - сообщаем, с какой строки необходимо начать выводить инфу в консоль/с какого интерфейса)
sh ip int brief - сводная инфа по всем интерфейсам (название интерфейса, какой назначен ip-адрес, статус "up|administratively down", протокол "up|down")
show vlan - показать vlan'ы и какие порты к ним подключены
show interface ethernet status - посмотреть состояние всех портов
sh int eth1/0/1 det - посмотреть детальную информацию по отдельному порту
show ip route - покажет все доступные маршруты
ping 192.168.0.1 - программа пинг позволяет определить доступность хоста
telnet 192.168.0.2 80 - программа telnet позволяет подключится на любой tcp порт.
debug ip icmp - (!!! аккуратно можно положить сеть) программа debug позволяет отследить что происходит на устройстве
no debug all - отключить программу deubg
--------------------------------------
на клиенте:
ping 192.168.0.1 - программа пинг позволяет определить доступность хоста
arp -a - если пк находится в одной сети, и видит в таблице мак адрес хоста другого пк (например веб сервера),
но не может подключится. Проблема скорее всего в firewall
tracert 192.168.0.1 - программа traceroute позволяет удивить маршрут следования пакета (windows)
traceroute 192.168.0.1 - программа traceroute позволяет удивить маршрут следования пакета (*nix)
nslookup - программа позволяет подключится к dns серверу и запросить у него name/ip тип ALL/A/MX/SRV/NS (server=8.8.8.8, set q=MX)
nslookup -type=all ya.ru 8.8.8.8 - показать все A,MX,PTR,NS и т.д.
nslookup -type=mx ya.ru 8.8.8.8 - показать записи MX (почта) домена ya.ru
nslookup -type=ptr 8.8.8.8 8.8.8.8 - показать имя сервера которому принадлежит 8.8.8.8
telnet 192.168.0.2 80 - программа telnet позволяет подключится на любой tcp порт.
https://downloads.openwrt.org/releases/ - тут ищем sdk
https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem - тут смотрим какие пакеты нужно установить для сборки
https://openwrt.org/docs/guide-developer/toolchain/using_the_sdk - инструкция по использованию sdk
0. Устанавливаем пакеты для сборки:
apt install build-essential git gcc make bc fakeroot dpkg-dev libncurses5-dev libssl-dev
1. Скачиваем openwrt
git clone https://git.openwrt.org/openwrt/openwrt.git
cd openwrt
git pull
2. Выбираем бранч
git branch -a
git tag
git checkout v21.02.2
3. Обновляем бранч
./scripts/feeds update -a
./scripts/feeds install -a
4 Приступаем к сборке
!!! make defconfig будет произведено основное конфигурирование системы сборки, включая проверку зависимостей и условий для окружения сборки и т.п.
!!! будет проводится проверка для зависимостей. Установите отсутствующие компоненты и запустите снова.
!!! выберите вашу платформу перед использованием defconfig
настраиваем платформу (Target System, Subtarget, Target Profile) и сохраняем конфигурацию в файл .config:
make menuconfig
5. применяем стандартные параметры для профиля:
make defconfig
6. модифицируем набор пакетов и сохраняем конфигурацию (в файл .config):
make menuconfig
7. Сохраняем свои изменения конфигурации в файл mydiffconfig на будущее:
scripts/diffconfig.sh >mydiffconfig
8. Выполняем make либо make V=w либо make V=s:
# make -j $(nproc) defconfig download clean world
# make -j $(nproc) kernel_menuconfig
# make -j $(nproc)
make -j4 V=s
Пример сборки sdk для ls1046afrwy:
!!! ЛУЧШЕ ИСПОЛЬЗОВАТЬ СБОРКУ OPENWRT GIT
0. Скачиваем/распаковываем sdk
cd /opt
wget https://downloads.openwrt.org/releases/22.03.3/targets/layerscape/armv8_64b/openwrt-sdk-22.03.3-layerscape-armv8_64b_gcc-11.2.0_musl.Linux-x86_64.tar.xz
tar -xfv openwrt-sdk-22.03.3-layerscape-armv8_64b_gcc-11.2.0_musl.Linux-x86_64.tar.xz
1. Обновляем и устанавливаем feeds:
cd openwrt-sdk-22.03.3-layerscape-armv8_64b_gcc-11.2.0_musl.Linux-x86_64
./scripts/feeds update -a
./scripts/feeds install -a
2. Производим первоначальную настройку выбираем нужные пакеты
make defconfig
make menuconfig
3. Производим сборку
make -j4 V=s
enable
configure
interface ten-gigabitEthernet 1/0/1
no switchport
ip address 192.168.88.101 255.255.255.0
no ipv6 enable
ip route 0.0.0.0 0.0.0.0 192.168.88.1
copy running-config startup-config
show running-config
show startup-config
snmp
https://www.tp-link.com/us/configuration-guides/q_a_supported_public_mibs_for_tp-link_switches/?configurationId=2963#
https://www.tp-link.com/us/configuration-guides/configuring_snmp_rmon/?configurationId=18105
https://www.tp-link.com/us/configuration-guides/configuring_snmp_rmon/?configurationId=18105#_idTextAnchor013
http://efsol-it.blogspot.com/2014/05/cisco-snmp.html
enable
configure
snmp-server view
show snmp-server view
snmp-server community nms-monitor read-write View
show snmp-server community
end
copy running-config startup-config
https://www.mail-archive.com/users@dpdk.org/msg04798.html # решение ошибки "eth_i40e_dev_init(): Failed to init adminq: -66"
https://github.com/s5uishida/install_trex?ysclid=mc0h3m8kju972217675
Установка:
apt update
apt install lshw vim wget git make gcc linux-libc-dev linux-headers-amd64 pkg-config libncurses-dev flex bison libssl-dev libelf-dev dwarves rsync bc fakeroot build-essential xz-utils libncurses5-dev lz4 debianutils
apt install python3 python3-distutils python3-apt
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
apt install dpdk
Настраиваем локаль:
vim /etc/locale.gen
-------------------
en_US.UTF-8 <---------- найти и раскоментить
------------------
Перечитать local:
locale-gen
На этом все, теперь у вас должна появится local en_US.UTF-8
cd /opt
wget https://trex-tgn.cisco.com/trex/release/v2.99.tar.gz
wget --no-check-certificate https://trex-tgn.cisco.com/trex/release/v3.00.tar.gz
tar -xpvf v2.99.tar.gz
cd v2.99
cd ko/src
make
make install
Каталоги trex:
/ t-rex-64/dpdk_set_ports/stl-sim
/astf test astf
/stl Stateless native (py) profiles
/stl/hlt Stateless HLT profiles
/ko Kernel modules for DPDK
/external_libs Python external libs used by server/clients
/exp Golden PCAP file for unit-tests
/cfg Examples of config files
/cap2 Stateful profiles
/avl Stateful profiles - SFR profile
/automation Python client/server code for both Stateful and Stateless
/automation/regression Regression for Stateless and Stateful
/automation/config Regression setups config files
/automation/trex_control_plane/interactive/trex Stateless lib and Console
/automation/trex_control_plane/interactive/trex/stl Stateless lib
/automation/trex_control_plane/interactive/trex/examples/stl Stateless examples
Команды:
cd /opt/v2.99
0. Смотрим соответствие сетевой шины
lshw -c network -businfo
1. Показывает информацию об интерфейсах
./dpdk_setup_ports.py -s
2. Чтобы создать конфигурационный файл по умолчанию (пример)
./dpdk_setup_ports.py -c 02:00.0 02:00.1 -o /etc/trex_cfg.yaml
3. Чтобы потом вернуть интерфейс обратно из под управления DPDK пригодится команда:
./dpdk_nic_bind.py -b
4. Пример
!!! Настройки интерфейса берутся из фала конфигурации /etc/trex_cfg.yaml
./t-rex-64 -f cap2/dns.yaml -c 4 -m 1 -d 100 -l 1000
-c — число ядер процессора.
-m — множитель cps каждого шаблона пакетов.
-d — время теста.
-l — частота (в Hz) latency пакетов, много параметров считается без их учета
5. Пример
./t-rex-64 -f cap2/dns.yaml -c 4 -m 9000 -d 100 -l 1000 -p
./t-rex-64 -i -c 6 --astf
6. Пример
./t-rex-64 -f cap2/http_simple.yaml -c 4 -l 1000 -d 100000 -m 30 --learn-mode 1
./t-rex-64 -i -c 6 --astf
7.
./bp-sim-64-debug --ut
./run_regression --func
Инфа по выводу:
Cpu Utilization — среднее значение нагрузки на CPU передающими тредами. Для налучшей производительности рекомендуется держать меньше 80%.
Total-Tx — суммарная скорость на передающем интерфейсе (в данном случае port 0)
Total-Rx — суммарная скорость на принимающем интерфейсе (в данном случае port 1)
Total-PPS — packets per second число пакетов на интерфейсах
Total-CPS — connections per second по сути этот параметр означает число запуска шаблонов, которые указаны в конфигурационном файле в секунду.
Expected-PPS — Ожидаемое число пакетов в секунду, в теории стремится к cps*число пакетов шаблона.
Expected-CPS — cps указанный в yaml файле теста.
Expected-BPS — суммарный трафик, объем шаблона * cps.
Active-flows — число внутренних потоков t-rex. По сути этот параметр является числом сессий, за которыми следит t-rex. например,
если вы запустите тест с pcap длительность сессии в котором равна 30 сек, то это показатель должен стремится к 30*Expected-CPS
Nat_time_out — должно быть ноль, число потоков, за которыми тирекс по каким-то причинам не смог уследить, обычно происходит если пакеты где-то дропают.
Nat_no_fid — должно быть ноль, обычно происходит при слишом больших таймаутах внутри тестируемого оборудования.
Total_nat_active: активное число потоков, должно быть низким при низком rtt.
Total_nat_open: общее число потоков, может отличаться пр однонаправленном (uni-directional) шаблоне.
grub порядок загрузки
grep menuentry /boot/grub/grub.cfg
vim /etc/default/grub
------------------------
GRUB_DEFAULT="Advanced options for Debian GNU/Linux>Debian GNU/Linux, with Linux 5.10.162"
------------------------
update-grub
Установка trex на 09.01.2023 debian 11
0. Устанавливаем доп по
apt install python python3-distutils python3-apt python3-pyelftools
update-alternatives --install /usr/bin/python python /usr/bin/python3.9 1
1. Скачиваем дистрибутив trex
cd opt
wget --no-check-certificate --no-cache https://trex-tgn.cisco.com/trex/release/latest
tar -xzvf latest
2. Устанавливаем модуль ядра
cd /opt/v3.00/ko/src
make
make install
3. Создаем конфиг
./dpdk_setup_ports.py -s - смотрим что там у нас за интерфейсы
cd /opt/v3.0 - переходим в каталог trex
./dpdk_setup_ports.py - выполнив без параметров будет создан конфиг (тоесть: "cp cfg/simple_cfg.yaml /etc/trex_cfg.yaml")
./dpdk_setup_ports.py -c 02:00.0 02:00.1 -o /etc/trex_cfg.yaml - перенастраиваем конфиг (где 02:00.0 и 02:00.1 сетевые карты)
4. Проверяем проверяем успешность добавления интерфейсов
/opt/v3.0
./dpdk_setup_ports.py -s
5. Дополнительно
Запуск в режиме сервера astf и stl
./t-rex-64 -i --astf
./t-rex-64 -i --stl
./t-rex-64 -i -c 6 --astf
./trex_daemon_server start
консоль TRex (Выполняет роль клиента для подключения к серверу trex и генерации трафика)
./trex-console
./trex-console -s 192.168.55.61
6. Запуск теста в trex
start -f astf/http_simple.py -m 1
start -f astf/udp_sip.py -d 5000 -m 500000 -l 5
start -f astf/sfr_full.py -m 50 -l 50
start -f astf/video_stream.py -m 25
-d - время теста
-m - множитель пакетов
-l - запускать потоки с задержкой
Ошибка trex-console (FileNotFoundError: [Errno 2] No such file or directory: b'liblibc.a')
cd /usr/lib/x86_64-linux-gnu/
ln -s -f libc.a liblibc.a
DUT - клиент через который гоним трафик
DUT - device under test
16.0.0.0/8 - сеть клиентов trex
48.0.0.0/8 - сеть клиентов trex
apt install openvswitch-switch
apt install netsniff-ng netdiag iptraf bmon iftop glances
ovs-vsctl add-br ovsbr0
ovs-vsctl add-port enp1s0f0 ovsbr0
ovs-vsctl add-port ovsbr0 enp1s0f0
ovs-vsctl add-port ovsbr0 enp1s0f1
ovs-vsctl add-port ovsbr0 enp1s0f2
ovs-vsctl add-port ovsbr0 enp1s0f3
vim /etc/network/interfaces
---------------------------
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
#source-directory /etc/network/interfaces.d
auto enp5s0
iface enp5s0 inet dhcp
auto enp1s0f0
iface enp1s0f0 inet manual
auto enp1s0f1
iface enp1s0f1 inet manual
auto enp1s0f2
iface enp1s0f2 inet manual
auto enp1s0f3
iface enp1s0f3 inet manual
auto ovsbr0
iface ovsbr0 inet static
address 10.0.0.2/24
up ip route add 16.0.0.0/8 via 10.0.0.1
down ip route del 16.0.0.0/8
auto ovsbr0:0
iface ovsbr0:0 inet static
address 10.0.1.2/24
up ip route add 48.0.0.0/8 via 10.0.1.1
down ip route del 48.0.0.0/8
---------------------------
ovs-appctl dpctl/show -s - показать статистику
ifpps - показать статистику в реальном времени
ovs-appctl fdb/stats-clear - очистить статистику
./trex-console
arp
ping -p 0 10.12.135.1
ping -p 0 10.12.136.1
ping -p 1 10.12.135.1
ping -p 1 10.12.136.1
FAILED быть не должно
error module 'collections' has no attribute 'Hashable'
версия trex 3.04 debian 12
ядро Linux 5.15.148
Python 3.12.2
https://stackoverflow.com/questions/72659999/chatterbot-module-error-attributeerror-module-collections-has-no-attribute
Начиная с Python3.3, Hashable был перенесен в модуль Collections.abc,
поэтому в качестве обходного пути вы можете принудительно обеспечить совместимость, добавив следующие строки вверху после других import-ов:
Временное решение:
vim /opt/v3.04/./dpdk_setup_ports.py
------------------------------------
#много всего
import subprocess
import platform
import stat
import time
import shutil
import signal
import glob
# вот после импортов сюда
import collections.abc
collections.Hashable = collections.abc.Hashable
# много всего
------------------------------------
UP20250220 / Ставим Trex с git / debian 12
apt update
apt install -y build-essential cmake python3-dev libnuma-dev zlib1g-dev libpcap-dev linux-headers-$(uname -r) git
apt install -y meson ninja-build
Качаем trex
git clone --recursive https://github.com/cisco-system-traffic-generator/trex-core.git
cd trex-core
Cisco T-Rex использует DPDK (Data Plane Development Kit) соберём его:
cd linux_dpdk
./b configure
./b build
После сборки DPDK возвращаемся в корень репозитория и компилируем сам T-Rex:
cd ..
./b configure
./b build
Image Builder:
Это предварительно скомпилированная среда, используемая для создания пользовательских образов прошивок без необходимости компиляции ядра и пакетов.
https://openwrt.org/docs/guide-user/additional-software/imagebuilder
https://openwrt.org/ru/docs/guide-user/additional-software/imagebuilder
https://openwrt.org/toh/start - поиск устройства
https://downloads.openwrt.org/releases/ - релиз
0. Скачиваем openwrt-imagebuilder под наше устройство:
cd /opt
wget https://downloads.openwrt.org/releases/21.02.3/targets/ipq40xx/mikrotik/openwrt-imagebuilder-21.02.3-ipq40xx-mikrotik.Linux-x86_64.tar.xz
1. Распакуйте архив с Image Builder и перейдите в его директорию.
tar -pxf openwrt-imagebuilder-21.02.3-ipq40xx-mikrotik.Linux-x86_64.tar.xz
cd openwrt-imagebuilder-21.02.3-ipq40xx-mikrotik.Linux-x86_64
Настраиваем образ openwrt:
!!! make image команда создаст образ для устройства по умолчанию со стандартными (необходимыми) пакетами.
!!! PROFILE - определяет целевой профиль для сборки
!!! PACKAGES - список пакетов, добавляемых (исключаемых) в образ
!!! FILES - каталог с пользовательскими файлами для добавления
!!! BIN_DIR - Пользовательская директория для создаваемого образа
!!! EXTRA_IMAGE_NAME - Пользовательское имя для создаваемого образа
!!! DISABLED_SERVICES - Какие службы в /etc/init.d/ будут отключены по умолчанию
!!! make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/
!!! make clean - Для удаления всех временных файлов сборки и сгенерированных образов воспользуйтесь командой:
0. Смотрим список целевых профилей.
make info
1. если требуется перенастроить файлы то создаем директорию files
!!! В этот каталог добавляем свои файлы
!!! По умолчанию фалы будут помещены в корень на целевой системе
!!! Требуется создавать структуру каталогов.
mkdir files
mkdir files/etc
2. Определившись с профилем, пакетами, файлами, выполняем сборку
!!! (-) - минус перед пакетом предполагает его удаление в конечной сборке
make image PROFILE=XXX PACKAGES="pkg1 pkg2 -pkg3 -pkg4" FILES=files/
Где же файлы:
После завершения команды make сгенерированные образы сохраняются в каталоге bin /device-architecture , как если бы вы их компилировали.
Созданный образ можно найти в подкаталоге ./bin/targets//genericили загляните внутрь.
/build_dir/для файлов *-squashfs-sysupgrade.bin и *-squashfs-factory.bin
(например /build_dir/target-mips_24kc_musl/linux-ar71xx_tiny/tmp/openwrt-18.06.2-ar71xx-tiny-tl-wr740n-v6-squashfs-factory.bin)
Пример:
make info
make image PROFILE=fsl_ls1046a-frwy-sdboot PACKAGES="block-mount kmod-fs-ext4 kmod-usb-storage e2fsprogs kmod-usb-ohci kmod-usb-uhci fdisk -layerscape-fman -tfa-ls1046a-frwy-sdboot"