Полисинг по времени на маршрутизаторе cisco

«Time based policy maps and rate-limit» — по такому запросу в гугле я хотел бы получать нужную инфу.

Задача:
С 10 утра до 2 часов по рабочим дням ограничить ограничить скорость до 5 mbit/s, в остальное время ограничить до 512 kbit/s.

Решение:
Задаем временной промежуток с 10 до 14 по рабочим дням.

!
time-range work.hours
 periodic weekdays 10:00 to 13:59
!

Задаем префиксы интересующих нас сетей. В случае с саб-интерфейсом (rate-limit можно указывать для логических интрефейсов, в отличие от шейпинга) можно указать «any to any»

!
ip access-list extended any2any.work.hours
 permit ip any any time-range work.hours
!

Указываем классификатор, в нашем случае сверяем по акцес-листу.

!
class-map match-all any2any.work.hours
 match access-group name any2any.work.hours
!

Указываем политику QoS. Если трафик попадает под класс, действующий по времени, то работает первое ограничение, в остальных случаях — второе.

!
policy-map 5Mb-work-512Kb-nonwork
 class any2any.work.hours
    police 5242500 983040 1966080 conform-action transmit  exceed-action drop  violate-action drop
 class class-default
    police 512000 96000 192000 conform-action transmit  exceed-action drop  violate-action drop
!

Применяем политику к выбранному логическому интерфейсу.

!
interface GigabitEthernet0/1.1234
 service-policy input 5Mb-work-512Kb-nonwork
 service-policy output 5Mb-work-512Kb-nonwork
!

Блокировка uTP на FreeBSD через ng_bpf

tcpdump -ni em0 «vlan and ip[40:4]=0x7FFFFFFF»

#!/bin/sh
 
kldload ng_bpf
kldload ng_tag
kldload ng_ipfw
 
/usr/sbin/ngctl -f- < <-SEQ
        mkpeer ipfw: bpf 61 ipfw_hook61
        name ipfw:61 bpf_utp_filter
        mkpeer bpf_utp_filter: tag matched tag_utp
        name bpf_utp_filter:matched tag_utp_tagger
SEQ
 
ngctl msg bpf_utp_filter: setprogram { thisHook=\"ipfw_hook61\" ifNotMatch=\"ipfw_hook61\" ifMatch=\"matched\" bpf_prog_len=12 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=8 k=64 } { code=48 jt=0 jf=0 k=9 } { code=21 jt=0 jf=6 k=17 } { code=40 jt=0 jf=0 k=6 } { code=69 jt=4 jf=0 k=8191 } { code=177 jt=0 jf=0 k=0 } { code=64 jt=0 jf=0 k=20 } { code=21 jt=0 jf=1 k=2147483647 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }
ngctl msg bpf_utp_filter: setprogram { thisHook=\"matched\" ifMatch=\"ipfw_hook61\" bpf_prog_len=1 bpf_prog=[ { code=6 jt=0 jf=0 k=96 } ] }
ngctl msg tag_utp_tagger: sethookin { thisHook=\"tag_utp\" ifNotMatch=\"tag_utp\" }
ngctl msg tag_utp_tagger: sethookout { thisHook=\"tag_utp\" tag_cookie=1148380143 tag_id=61 }
 
ipfw add netgraph 61 udp from any to any iplen 0-61
ipfw add deny udp from any to any tagged 0-61
 
# to test outgoing - tcpdump -pni Out_Interface "ip[40:4]=0x7FFFFFFF" and "ip[44:1]=0xab" and ether src Ext_If_Mac

С новыми сигнатурами 2.01

#!/bin/sh
 
kldload ng_bpf
kldload ng_tag
kldload ng_ipfw
 
/usr/sbin/ngctl -f- < <-SEQ
    mkpeer ipfw: bpf 61 ipfw_hook61
    name ipfw:61 bpf_utp_filter
    mkpeer bpf_utp_filter: tag matched tag_utp
    name bpf_utp_filter:matched tag_utp_tagger
SEQ
 
ngctl msg bpf_utp_filter: setprogram { thisHook=\"ipfw_hook61\" ifNotMatch=\"ipfw_hook61\" ifMatch=\"matched\" bpf_prog_len=13 bpf_prog=[ { code=48 jt=0 jf=0 k=0 } { code=84 jt=0 jf=0 k=240 } { code=21 jt=0 jf=9 k=64 } { code=32 jt=0 jf=0 k=36 } { code=21 jt=0 jf=2 k=2147483647 } { code=40 jt=0 jf=0 k=40 } { code=21 jt=4 jf=0 k=3 } { code=32 jt=0 jf=0 k=40 } { code=21 jt=0 jf=3 k=2147483647 } { code=48 jt=0 jf=0 k=44 } { code=21 jt=0 jf=1 k=171 } { code=6 jt=0 jf=0 k=65535 } { code=6 jt=0 jf=0 k=0 } ] }
 
ngctl msg bpf_utp_filter: setprogram { thisHook=\"matched\" ifMatch=\"ipfw_hook61\" bpf_prog_len=1 bpf_prog=[ { code=6 jt=0 jf=0 k=96 } ] }
ngctl msg tag_utp_tagger: sethookin { thisHook=\"tag_utp\" ifNotMatch=\"tag_utp\" }
ngctl msg tag_utp_tagger: sethookout { thisHook=\"tag_utp\" tag_cookie=1148380143 tag_id=61 }
 
ipfw add netgraph 61 udp from any to any iplen 48-61
ipfw add deny udp from any to any tagged 61
 
# to test outgoing - tcpdump -pni ext0 '(ip[36:4]=0x7FFFFFFF and ip[40:2]=0x0003) or (ip[40:4]=0x7FFFFFFF and ip[44:1]=0xab)' and ether src Ext_If_Mac

P.S. А вот так это делается в linux-е.

/sbin/iptables -A FORWARD -m udp -p udp -m string --hex-string "|0000000000380000|" --algo bm --from 36 --to 45 -j DROP
/sbin/iptables -A FORWARD -m udp -p udp -m string --hex-string "|7F FF FF FF AB|" --algo bm --from 40 --to 44 -j DROP
/sbin/iptables -A FORWARD -m udp -p udp -m string --hex-string "|7F FF FF FF 00 03 20 00|" --algo bm --from 36 --to 43 -j DROP
/sbin/iptables -A FORWARD -m udp -p udp -m string --hex-string "|00 38 00 00 00 01 00 00|" --algo bm --from 40 --to 47 -j DROP

Если вы думаете что у вас херовая работа…

… то предлагается посмотреть как проходит Sysadmin’s Day на моей пахоте.

Ничего не предвещало

Что значит кончились свитчи?

Придется строить на длинках

Где-то тут были…

Так, 3100 нашелся

Во, еще один

Никульское, стародубово

Вторая попытка взять тайник, неудача.

На этот раз направились сюда. Со всем нужными координатами и программами.

1. Доезжаем до обозначенной церкви, считаем кол-во уцелевших петель.

2. Хэлрайзер.

3. Решаем задачу на координаты, позиционируемся.

4. Вперед, по полю.

5. Фотка нравится, мое чудо за 2.5 тысячи оказывается умеет снимать макро.

6. Но всё равно неудача. По указанным координатам ничего не нашлось. Место проходное, рыбаки сидят постоянно там. По всей видимости тайник разорен.

Третья попытка взять тайник, удача!

Забиваем на поиски, берем ноут, ищем следующую точку, которая оказывается совсем не подалеку.

7. Вечереет, едем.

8. Приехали. По отработанной схеме направялемся к цели.

9. И, о чудо, находим. «Ну и как он должен выглядеть? Тук-тук. А вот так!»

10. Гора предметов, тайник действует с 2004 года. Кладем свечу от ВАЗ-а, медиатор, зажигалку и резиновые ножки от коммутатора D-Link. Забираем свисток и клейкие бумажки.

11. Отмечаемся в блокнотике. Да, комары, это жесть.

12. Гжель тестирует свисток.