Перейти к публикации
iT4iT.CLUB

Maerhekil

Пользователи
  • Публикации

    29
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    9

Все публикации пользователя Maerhekil

  1. Maerhekil

    Ключик Windows

    Есть устройства которые идут сразу с предустановленой виндой и на корпусах нет ключа этой системы. Наткнулся тут на просторах тырнета на скриптик и сохраню тут у себя. Скриптик показывает ключик и его можно переписать и спрятать подальше на всякий пожарный случай. И кстати опробовал на 10 окне. Взял отседова. winkeyScript.zip
  2. Maerhekil

    Мониторинг кэширующего прокси-сервера Squid

    Тут такое дело. Имеем FreeBSD 11.1-RELEASE-p1 cо Squid Cache: Version 3.5.26. После правки конфига, squid не запускается с ошибкой: Причина была найдена ТУТ Убираем: Лепим: udp_incoming_address 192.168.0.11 udp_outgoing_address 192.168.0.11 И наслаждаемся. Удачи.
  3. Распространённая проблемка, когда при падении сервера на котором развёрнут DHCP наступает неприятная ситуация в общении с пользователями. Довольно просто предотвратить данную ситуацию развёртыванием дублирующего DHCP на другом сервере в локальной сети. Что мы сейчас и проделаем, правда начнём просто с настройки, считая что у вас уже есть установленные два сервака на FreeBSD Первичный сервер: Для удобства дробим конфигурационный файл на несколько. У нас получается три файла с таким содержимым. /usr/local/etc/dhcpd.conf : option domain-name "mycompany.local"; option domain-name-servers 10.0.0.2, 10.0.0.3; option subnet-mask 255.255.255.0; default-lease-time 86400; max-lease-time 604800; ddns-update-style none; authoritative; subnet 10.0.0.0 netmask 255.255.255.0 { option routers 10.0.0.1; interface em0; pool { failover peer "mynetwork"; range 10.0.0.20 10.0.0.250; } } include "/usr/local/etc/dhcpd-primary"; include "/usr/local/etc/dhcpd-hold"; Что мы тут имеем в первом и так сказать главном файле конфигурации: option domain-name "mycompany.local"; - Задаём доменное имя, которое клиенты будут использовать при запросах к DNS. Если имена разрешены. option domain-name-servers 10.0.0.2, 10.0.0.3; - Собственно, адреса DNS серверов в сети. option subnet-mask 255.255.255.0; - Сетевая маска локальной сети где будет находится DHCP сервер. default-lease-time 86400; - Период времени по умолчанию в секундах, на который будет выданный адрес закреплён за устройством. max-lease-time 604800; - Максимальный период времени в секундах, на который будет выданный адрес закреплён за устройством. subnet 10.0.0.0 netmask 255.255.255.0 - Подсеть с её маской. option routers 10.0.0.1; - Шлюз сети. interface em0; - На каком интерфейсе слушать запросы и отвечать с которого. Далее описание пула для выдачи адресов: failover peer "mynetwork"; - название. range 10.0.0.20 10.0.0.250; - диапазон адресов для выдачи клиентам. Влючаем в конфиг другие файлы конфигурации: include "/usr/local/etc/dhcpd-primary"; include "/usr/local/etc/dhcpd-hold"; Далее /usr/local/etc/dhcpd-primary : failover peer "mynetwork" { primary; address 10.0.0.4; port 647; peer address 10.0.0.5; peer port 647; max-response-delay 60; max-unacked-updates 10; mclt 3600; split 128; load balance max seconds 3; } Это описание самой технологии failover, что мы имеем тут: primary; - К какому серверу DHCP относится этот файл, грубо говоря :-) . В данном случае к первичному. address 10.0.0.4; - Его адрес в сети port 647; - Порт? :-) peer address 10.0.0.5; - Адрес вторичного сервера в сети. peer port 647; - Его порт. max-response-delay 60; - Ожидание в секундах ответа первичным сервером от вторичного. По истечении считает его недоступным. max-unacked-updates 10; - Непонятная хрень. Максимальное количество несанкционированных обновлений? mclt 3600; - Время в секундах, по истечении которого продлевается или прекращается аренда без синхронизации. split 128; - Нужно для балансировки. load balance max seconds 3; - Время в секундах, по истечении балансировка прекращается. Топаем дальше /usr/local/etc/dhcpd-hold . Это файл со статическими назначениями ip-адресов в соответствии с mac-адресами. Приведу только один пример: host BLA-BLA { hardware ethernet FF:FF:FF:FF:FF:FF; fixed-address 10.0.0.81;} BLA-BLA - описание хоста FF:FF:FF:FF:FF:FF - Mac-адрес сетевой карты 10.0.0.81 - Закреплённый ip-адрес Ну в принципе с первичным сервером закончили. Перейдём к вторичному. /usr/local/etc/dhcpd.conf У нас немного меняются только две строчки: include "/usr/local/etc/dhcpd-secondary"; include "/usr/local/etc/dhcpd-hold-nowrite"; Но это при условии, что у нас имя сетевого интерфейса такое-же, в данном случае em0 . Далее /usr/local/etc/dhcpd-secondary failover peer "mynetwork" { secondary; address 10.0.0.5; port 647; peer address 10.0.0.4; peer port 647; max-response-delay 60; max-unacked-updates 10; mclt 3600; load balance max seconds 3; } Ну и последний, создаём /usr/local/etc/dhcpd-hold-nowrite . Это тот-же dhcpd-hold, там ничего не меняется. В принципе всё готово. Запускаем, и радуемся жизни. Но радость была недолгой ибо неудобно после каждой правки перезапускать два сервака ручками, мы сразу захотели автоматизацию. Но это уже совсем другая история. Надеюсь ничего не упустил, у меня бывает. Если это так, пишите. Удачи.
  4. foreach(glob("*.json") as $file) { Можно складывать отчёты на мелкомаечную шару и монтировать на linux, в моём случае это debian. Инсталим cifs-utils если ещё нет. apt-get install cifs-utils Создаём директорию куда будем монтировать mkdir -p /mnt/win/ Ну и смонтируем с вариантом подключения пользователя в домене mount -t cifs //АДРЕС/ШАРЫ /mnt/win/ -o dom=ДОМЕН,user=ПОЛЬЗОВАТЕЛЬ,pass=ПАРОЛЬ Или без авторизации mount -t cifs //IP/SHARE /mnt/win/ -o guest На самом деле вариантов много, но это уже другая история. В итоге вставляем в скрипт путь до файлов с отчётами, как-то так. foreach(glob("/mnt/win/*.json") as $file) { Удачи!
  5. Смею предположить, что версия iOS у вас 12. На одном из моих устройств с такой версией как раз файлы сохраняются в таком формате. Всевозможные попытки смастрячить то-же самое на iOS 15 версии, не увенчались успехом, сохраняет с разделителем " - ". Как-то так... Может всё-таки развернуть tftp на unix ?
  6. Maerhekil

    Мониторинг триггеров в GUI под Windows

    Отлично, проект будет развиваться)
  7. Во, было бы не плохо включить использования функции DHCP snooping, если таковая используется на коммутаторах. Тогда информация будет быстрее выдаваться, однозначно. В следующую версию впихни
  8. Maerhekil

    Как завернуть весь HTTP и HTTPS трафик Windows в proxy server

    Никогда бы не подумал что винда такое может. Интересно, а World of Warcraft попрёт таким способом? А с ntlm или с kerberos как быть? Я так понял это только если прокся прозрачная.
  9. Maerhekil

    отображение нагрузки канал на сайте

    Неоднозначный намёк на просьбу написания скриптика
  10. Maerhekil

    Ubuntu

    Полезная инфа, спсибо.
  11. Maerhekil

    Кто же там качает?

    Бывает так случается, что мы замечаем, что через устройство проходит какой-то необычно большой трафик. Что же, сейчас посмотрим кто там усиленно старается что-то скачать. Заходим в интерфейс с которого будем снимать статистику home-cisco#conf t home-cisco(config)#int fa0/0 home-cisco(config-if)#ip flow ingress home-cisco(config-if)#ip flow egress home-cisco(config-if)#exit home-cisco(config)# Ну а потом в режиме глобальной конфигурации настраиваем параметры отображения home-cisco(config)#ip flow-top-talkers home-cisco(config-flow-top-talkers)#top 20 home-cisco(config-flow-top-talkers)#sort-by bytes home-cisco(config-flow-top-talkers)#cache-timeout 100 home-cisco(config-flow-top-talkers)#end home-cisco#wr Building configuration... [OK] home-cisco# И смотрим кто там у нас, командой sh ip flow top-talkers . Удачи!
  12. На сей раз мы настроим подключение по протоколу PPPOE от провайдера. Конечно сейчас уже мало таких способов предоставлять услуги интернета, но всё же ещё встречаются. Начнём. Подготовим интерфейс home-cisco#conf t home-cisco(config)#int Fa0/1 home-cisco(config-if)#no ip address home-cisco(config-if)#pppoe enable home-cisco(config-if)#pppoe-client dial-pool-number 1 home-cisco(config-if)#exit home-cisco(config)# Создадим новый интерфейс home-cisco(config)#interface Dialer1 home-cisco(vonfig-if)#ip address negotiated home-cisco(vonfig-if)#ip mtu 1492 home-cisco(vonfig-if)#encapsulation ppp home-cisco(vonfig-if)#dialer pool 1 home-cisco(vonfig-if)#no cdp enable home-cisco(vonfig-if)#ppp authentication chap callin home-cisco(vonfig-if)#ppp chap hostname ВАШ-ЛОГИН home-cisco(vonfig-if)#ppp chap password ВАШ-ПАРОЛЬ home-cisco(vonfig-if)#exit home-cisco(config)# Пропишем маршрут по умолчанию home-cisco(config)#ip route 0.0.0.0 0.0.0.0 Dialer1 home-cisco(config)# Проверим соединение home-cisco(config)#end home-cisco#ping 8.8.8.8 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 12/13/16 ms home-cisco# Если всё нормально, то мы получим ответ от адреса который пинговали. Итак, на устройстве интернет у нас появился, но надо раздать нам его во внутреннюю сеть, приступим. Идём на локальный интерфейс который мы настраивали ранее тут home-cisco#conf t home-cisco(config)#int fa0/0 home-cisco(config-if)#ip nat inside home-cisco(config-if)#exit home-cisco(config)# Далее на интерфейс который создали home-cisco(config)#int Dialer1 home-cisco(config-if)#ip nat outside home-cisco(config-if)#exit home-cisco(config)# Создадим список доступа (по желанию) home-cisco(config)#ip access-list extended НАЗВАНИЕ-СПИСКА-ДОСТУПА home-cisco(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 any home-cisco(config-ext-nacl)#deny ip any any home-cisco(config-ext-nacl)#exit home-cisco(config)# И конечный штрих ip nat inside source list НАЗВАНИЕ-СПИСКА-ДОСТУПА interface Dialer1 overload Всё, всем устройствам в вашей сети стал доступен интернет. Естественно, как я уже повторял, в некоторых случаях нужно производить другие настройки. Пишите. Если у нас не PPPOE соединение, так называемый прямой интернет то всё намного проще. На внешнем интерфейсе, у нас это fa0/1 прописываем: home-cisco#conf t home-cisco(config)#int fa0/1 home-cisco(config-if)#ip nat inside home-cisco(config-if)#ip add DHCP (если провайдер нам не предоставил статический адрес или статика по DHCP) home-cisco(config-if)#ip add ИП-АДРЕС МАСКА-СЕТИ (если провайдер нам дал статику без DHCP) home-cisco(config-if)#exit home-cisco(config)# Меняем строку с правилом. А так-же Шлюз по умочанию. home-cisco(config)#ip nat inside source list НАЗВАНИЕ-СПИСКА-ДОСТУПА interface fa0/1 overload home-cisco(config)#ip route 0.0.0.0 0.0.0.0 ШЛЮЗ-ПРОВАЙДЕРА home-cisco(config)#exit home-cisco# Из всего остального оставляем только список доступа, ну и естественно ip nat inside на внутреннем, у нас это fa0/0. Вообще с PPPOE от провайдера бывают частенько танцы с бубном. Возможно я что-то упустил, у меня бывает. Если так, то поправьте. Enjoy.
  13. Наткнулся я тут на своём ZABBIX на поблемку выдаваемую, когда пытаешься прокладывать трассу до хоста в вэб-интерфейсе: Смена прав доступа к утилите traceroute не помогла. Выяснилось всё дело в SUID . И трасса пошла. Как это отразится на безопасности, пока не представляю.
  14. В прошлый раз мы совершили начальную настройку, в принципе всё что написано не претендует на исключительность и наверняка в каком-нибудь частном случае могут быть разные нюансы. Но, на то он и форум чтоб спросить и получить ответ, не так ли?Эта часть будет короткой ибо DHCP для внутренней сети настраивается очень легко и приятно на этом устройстве. Итак наше устройство является центральным маршрутизатором для нашей сети, ещё не полноценным но мы идём к этому, для этого следующим шагом поднимем на нём сервер динамической настройки узла. Поехали. Исключаем, на всякий случай несколько сетевых адресов из пула: home-cisco#conf t home-cisco(config)#ip dhcp excluded-address 192.168.1.1 192.168.1.10 home-cisco(config)# И поднимаем свой пул адресов home-cisco(config)#ip dhcp pool LAN home-cisco(dhcp-config)#network 192.168.1.0 255.255.255.0 home-cisco(dhcp-config)#default-router 192.168.1.1 home-cisco(dhcp-config)#dns-server 8.8.8.8 home-cisco(dhcp-config)#end home-cisco#wr Building configuration... [OK] home-cisco# Вот в принципе и всё, адресочки начнут выдаваться в диапазоне параметра network исключая первые десять адресов. Шлюз будет присваиваться исходя из параметра default-router, а DNS сервер исходя из параметра dns-server. Ваш Кэп. Мы закончили настройку простейшего DHCP на cisco.
  15. Maerhekil

    Маршрутизаторы Cisco Systems

    Прикрутил этот шаблон на catalist cisco WS-C2960X-48TS-L и ничо, самое важное показывает.
  16. Случается в нашей жизни, что домой приходит "жить" "кошка" в качестве центрального маршрутизатора домашней информационной сети, но как её "кормить", "готовить" рядовой пользователь даже не представляет, а услуги по "готовке" этого профессионального оборудования стоят недёшево. Сам я уже кое-как ухаживать за ними умею, так что буду делиться своими познаниями. Да и для памяти не повредит, или как сказал один хороший человек, "для потомков". Начинать "готовку" я буду с самого начала, и только в консоли, то есть даже с какой стороны к ней подойти так сказать. Просто включив в электрическую сеть и воткнув в оборудование сетевой кабель вашей домашней информационной сети, бесполезное дело. Работать оно будет, но толку как от вазы в доме, и то меньше. Значит, что нам надо: Непосредственно само оборудование, консольный кабель и устройство с которого мы будем выполнять первоначальную настройку, в данном случае это компьютер под управлением OS Windows. Подготовились, помещаем консольный кабель в разъём на маршрутизаторе специально для этого предназначеный, выглядят они примерно так: Далее подключаем второй конец кабеля к системному блоку в подходящий COM порт, естественно он должен быть на устройстве. Если у вас вдруг оказался USB консольный кабель, то подключайте его к разъёму на маршрутизаторе, там тоже написано "CONSOLE" зачастую ещё и выделено светло голубым цветом, и в порт USB на системном блоке. Устанавливайте драйвера в систему, благо Cisco Systems побеспокоились о них. Перегружаем OS Windows и включаем маршрутизатор. Теперь нам нужна программа для подключения по COM, она неизменна уже много лет, по крайней мере у меня, благодаря своему чёрному экрану. Это Putty, качаем её с официального сайта устанавливаем или сразу запускаем, смотря какой дистрибутив скачали. В итоге у нас появляется окно похожее на это: Если у вас не по умолчанию отмечено "Serial" то отмечайте смело, "Speed" 9600, Serial Line нужно посмотреть в диспетчере устройств Порты (COM и LPT) ----> Cisco Serial (COM №) если вы присоеденились USB консольным кабелем, или просто Последовательный порт (COM1) если вы присоеденились обычным консольным кабелем и у вас этот порт один. Нажимаем смело Open, открывается консоль и мы почти рядом с моментом истины, нажимаем Enter. Должно появиться приглашение на ввод команд, как то так: Router> Тут конечно всё зависит от состояния программного обеспечения и конфигурации на маршрутизаторе, варианты разные есть, но это уже другая песня. Задавайте вопросы в теме. Итак, даём имя нашему новому жителю. Router>en Router#conf t Router(config)#hostname home-cisco home-cisco(config)# Мы не хотим чтоб она болтала всем пароли на лево и на право, значит будем хранить их в зашифрованном виде home-cisco(config)#service password-encryption home-cisco(config)# Мы учимся управлять маршрутизатором из консоли, значит отрубаем ненужные сервисы home-cisco(config)#no ip http server home-cisco(config)#no cdp run Назначаем управляющего всем этим хозяйством и под каким логином и паролем он будет заходить в систему хозяйничать. home-cisco(config)#username vasyaPupkin privilege 15 secret ParolVasiPupkina home-cisco(config)# Врубаем протокол защиты доступа home-cisco(config)#aaa new-model home-cisco(config)# Ограничим доступ на устройство частными адресами домашней сети написав табличку на листике, при условии что у вас сеть 192.168.1.0/24. И повесим листик с табличкой на удалённый вход, кому можно сюда заходить. home-cisco(config)#access-list 23 permit 192.168.1.0 0.0.0.255 home-cisco(config)#line vty 0 4 home-cisco(config-line)#access-class 23 in home-cisco(config-line)#privilege level 15 home-cisco(config-line)#logging synchronous home-cisco(config-line)#transport input ssh telnet home-cisco(config-line)#exit home-cisco(config)# Если мы не хотим стольким адресам разрешать доступ, то листик будет выглядеть попроще, при условии что ваш компьютер с которого вы будете заходить имеет сетевой адрес 192.168.1.10. Вот так: home-cisco(config)#access-list 23 permit 192.168.1.10 home-cisco(config)# На остальных точках входа можно написать "no exec", кроме line con 0, это консоль ;-). Просмотреть какие есть можно командой "sh run" не входя в режим конфигурации. Начинаются они с "line" Начнём настраивать и самому устройству сетевой адрес. Для этого просматриваем конфиг: home-cisco(config)#end home-cisco#sh run Там будет много всего, нам нужны интерфейсы, выглядеть они в конфигурации на данный момент будут примерно так: ! interface FastEthernet0/0 no ip address shutdown speed auto ! Если гигабитный интерфейс то имя его будет "GigabitEthernet0/0". Но можно посмотреть доступные интерфейсы и командой "sh ip int br". Вывод будет выглядеть примерно так: Interface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES NVRAM down down FastEthernet0/1 unassigned YES NVRAM down down FastEthernet0/2 unassigned YES NVRAM down down Заходим в его настройку и назначаем ему адрес в сети: home-cisco#conf t home-cisco(config)#int fa0/0 home-cisco(config-if)#ip add 192.168.1.1 255.255.255.0 home-cisco(config-if)#no shut home-cisco(config-if)#end home-cisco# Адрес мы назначили, теперь можно настроить и ssh для порядку. home-cisco#conf t home-cisco(config)#ip domain name myhome.local home-cisco(config)#crypto key generate rsa label DLYASSH mod 2048 home-cisco(config)#ip ssh version 2 home-cisco(config)#ip ssh time-out 60 home-cisco(config)#ip ssh authentication-retries 2 home-cisco(config)#ip ssh dh min size 4096 home-cisco(config)#end home-cisco# На заметку, если у вас есть сомнения в наборе команд то нажимайте TAB чтоб команда дописалась полностью потом ? и вам выведет список доступных для продолжения символов. Заходить на устройство по SSH можно с помощью Putty, жмякнув соответсвующую галочку в программе и набрав сетевой адрес устройства. Далее вводим логин и пароль какой мы назначили и мы на устройстве. Ну в принципе всё, на первый раз хватит. Сохраняем конфигурацию и отдыхаем. home-cisco#wr Building configuration... [OK] home-cisco#
  17. Maerhekil

    MYSQL + SAMS2 + squid 3.5 + squidguard

    Случилось так, что даже в наше время надо такую связку ставить. Упёрся в то, что ребята ведущие SAMS уже давненько не обновляли своё детище и sams2redir не коректно пашет со SQUID выше 3.3, да и со SQUIDGUARD не получилось его связать, покумекав решил ну и ладно, будем ставить костыли. Описывать установку SAMS, SQUID и SQUIDGUARD не буду, только опишу саму идею как неработающее заработало. Мне аутентификация не нужна, нужна идентификация по IP в этом случае, это облегчило мою участь. У нас есть уже живут на серваке выше упомянутые звери. Указываем SAMS2 редиректор SQUIDGUARD, в SQUID разрешаем всё для всей сети. Пока не завели GUARD у нас пользователи заводятся в SAMS2 и гуляют по инету свободно, замечу SQUIDу вообще пофигу что там в SAMS2, резать и знать какие пользователи появились в SAMS2 будет SQUIDGUARD. И да, не надо запускать реконфигурацию SQUID в SAMS2 ни в коем случае, вообще запретите редактировать файл squid.conf всем кроме рута. При появлении новых юзеров в SAMS2, он добавляет их в mysql, да всё он туда добавляет, вот этим и воспользуемся. Завели парочку айпишников в SAMS2, сохранили. Тачим файлик который будет забирать инфу с базы SAMS2 которая нам нужна. #cd /usr/local/etc/squid # touch sgfind.sh Наполняем его #!/bin/sh cd /usr/local/etc/squid/ /usr/local/bin/mysql sams2db -uЮЗЕР -pПАРОЛЬ -se "SELECT s_ip FROM squiduser WHERE s_enabled = '-1';" > deny-ip /usr/local/bin/mysql sams2db -uЮЗЕР -pПАРОЛЬ -se "SELECT s_ip FROM squiduser WHERE s_enabled = '1';" > allow-ip cd / exit Указывать или нет пароль в открытом виде или нет, дело каждого, кто хочет может поизгаляться вынести пароль в отдельный файл. Разрешим исполнять этот файл # chmod 740 /usr/local/etc/squid/sgfind.sh Запустим пока его ручками, он выберет с базы айпишники и разложит по файлам, сконфигурируем SQUIDGUARD на эти списки. Добавляем строчку редиректа в squid.conf с "детками". url_rewrite_program /usr/local/bin/squidGuard -c /usr/local/etc/squid/squidGuard.conf url_rewrite_children 20 Перезапускаем SQUID и вуаля, блокировка работает Добавим в crontab это детище 0/30 * * * * root /usr/local/etc/squid/sgfind.sh Как-то так, это только начало, забирать с SAMS2 базы в MYSQL можно и остальное и травить на него SQUIDGUARD. Такие вот костыли. Возможно я по незнанию что-то сделал не так, ну или всё. Пишите может, что ещё посоветуете. Enjoy.
  18. Maerhekil

    Ох уж эти детки

    Данный пост является следствием воспитательных мероприятий направленных в сторону моего любимого сына, дабы защитить его не окрепший разум от великой силы интернета которую не способен подавить даже крептонит. Время идёт, ребёнок начинает без контрольно посещать глобальную паутину, у нас есть "кошка" в качестве центрального маршрутизатора, вот её мы и приготовим на эту тему. Как настроить DHCP написано тут. Попробуем его ограничить хоть чем-то, опишу тут пока одно устройство, начнём. Описываем пул для устройства. В отличии от нормального DHCP-сервера, в cisco чтоб привязать сетевой адрес к маку надо создавать новый пул, да-да, как-то так. Примечательно, что мак адрес пишется с добавлением 01 для windows или 00 для unix в переди вот таким методом примерно: 01ХХ.ХХХХ.ХХХХ.ХХ Вообще, лучше всего сначала посмотреть в каком виде приходит мак: Зачастую с мак-адресами бываю пляски с бубном и если у вас что-то не так в этом плане, пишите. Так, статику мы дали, пошли дальше. Дадим тырнет за NAT через список доступа и создадим его для заNATированной сети Оттак, ну осталось задать временной диапазон когда вырубать интернет на устройстве Вот так в будни мы вырубаем, ибо нех. Вообще можно побаловаться со временем, всё довольно гибко. Предложения с примерами в комменты! Enjoy!
  19. При борьбе с всякими нечестивыми гражданами, мы пришли к тому, что надо бы нам бросать трубку при звонке за рубеж и извещать нас об этом. Ну подумал я, это дело не хитрое и влепил в план нумерации, в секцию с правилами исходящих звонков такую конструкцию: [mezdunarod] exten => _810.,1,Playback(cannot-complete-as-dialed) same => n,System(mail -s "${CALLERID(num)} => ${EXTEN} ALARM" ВАШ_ЕМАЙЛ) same => n,Hangup()Уточню, что если вы хотите массовую рассылку то указывайте через запятую емайлы. Если будете делать без отдельной секции, то всё будет выглядеть так: exten => _810.,1,Playback(cannot-complete-as-dialed) exten => _810.,2,System(mail -s "${CALLERID(num)} => ${EXTEN} ALARM" ВАШ_ЕМАЙЛ) exten => _810.,3,Hangup()В принципе можно второй вариант разместить и в секции с входящими, да и вообще вариантов масса. Всего хорошего и удачи в борьбе с вредителями.
  20. Maerhekil

    Кто звонил?

    Всё сделанное основано на статье http://habrahabr.ru/post/213669/ Имеем FreeBSD 9.2-STABLE с обновлёнными портами. Как обычно я пытался наскоком быстро сделать всё но не получилось. Так-что опишу свои действия ибо у каждого могут быть свои препоны как в путях и именах файлов так и в самом диалплане. Поехали. Устанавливаю. voip# whereis mysql-connector-odbc mysql-connector-odbc: /usr/ports/databases/mysql-connector-odbc voip# cd /usr/ports/databases/mysql-connector-odbc voip# make install clean voip# Правлю файл /usr/local/etc/odbcinst.ini [MySQL] Description = ODBC for MySQL Driver = /usr/local/lib/libmyodbc5.so Setup = /usr/local/lib/libodbc.so.2 FileUsage = 1Далее /usr/local/etc/odbc.ini [asterisk-connector] Description=MySQL connection to 'asterisk' database Driver=MySQL Server=localhost Database=БАЗА_АСТЕРИСКА UID=ЛОГИН_С_ПРАВАМИ_ПОДКЛЮЧЕНИЯ PWD=ПАРОЛЬ Port=3306 SOCKET=/tmp/mysql.sockОбращайте внимание на пути и имена библиотек, файлов. У меня FreeBSD 9.2-STABLE Проверяю voip# isql -v asterisk-connector +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL> quit voip# Смотрю ошибки в файлах если не получилось. Продолжаю. Правлю файл /usr/local/etc/asterisk/res_odbc.conf добавляя в конец [asterisk2mysql] enabled => yes dsn => asterisk-connector pre-connect => yesи файл /usr/local/etc/asterisk/func_odbc.conf так-же добавляя в конец [FROMMOBILE] dsn=asterisk2mysql readsql=SELECT channel FROM cdr WHERE dst=${ARG1} ORDER BY calldate DESC LIMIT 1Дальше самое интересное, я выношу эксклюзивные настройки, голосовые меню в отдельный файл. Дабы не засорять и без того большой файл extensions.conf Тачу файл mobile.ru voip# cd /usr/local/etc/asterisk voip# touch mobile.ru voip# Шлёпаю в extensions.conf В самом верху врубаю новорождённый файл #include "mobile.ru"На входе, у меня это секция [default] отправляю номер 5696 к mobile.ru exten => 5696,1,Goto(mobile_ru,s,1)5696 Это номер на который ссылается внешний городской на шлюзе. Если всё отлично с АОН то вообще всё прекрасно. Ну и отправляюсь создавать код в файл mobile.ru. На него я потратил много времени, подгибая под себя и исправляя ошибки из оригинальной статьи, На выходе он у меня получился такой. [mobile_ru] exten => s,1,Answer() exten => s,2,MYSQL(Connect connid localhost ЛОГИН ПАРОЛЬ БАЗА) exten => s,3,MYSQL(Query resultid ${connid} SELECT `channel` FROM `cdr` WHERE `dst`='8${CALLERID(number)}' AND `disposition`="NO ANSWER" OR `dst`='8${CALLERID(number)}' AND `disposition`="BUSY" AND `billsec` < "4" ORDER BY `calldate` DESC LIMIT 1) sition`="BUSY" AND `billsec` < "4" ORDER BY `calldate` DESC LIMIT 1) exten => s,4,MYSQL(Fetch fetchid ${resultid} var) exten => s,5,MYSQL(Clear ${resultid}) exten => s,6,MYSQL(Disconnect ${connid}) exten => s,7,Set(CHAN=${SHELL(echo ${var} |tr -d '\n' |sed -e 's/.*\/\(.*\)\-.*/\1/g' |tr -d '\n')}) exten => s,8,Set(i=0) exten => s,9,Set(COUNTER=${LEN(${CHAN})}) exten => s,10,While($[${i} < ${COUNTER}]) exten => s,11,Playback(/usr/local/etc/asterisk/IT/${CHAN:${i}:1}) exten => s,12,Set(i=$[${i} + 1]) exten => s,13,EndWhile() exten => s,14,Goto(office,${CHAN},1) exten => s,15,Hangup()Разберём его по порядку. 1) Поднимаем трубку 2) Подключаемся к базе mysql 3) Выполняем запрос (тут я искал строки с номером вызывающего абонента в которых присутствовало-бы ANSWER, NO ANSWER, BUSY. Да и обратите внимание на '8${CALLERID(number)}', у меня LDK300 не отдаёт полностью АОН вызывающего абонента и пришлось подставлять костыли таким макаром.) 4) Получаем результат пишем в var 5) Освобождаем память от запроса 6) Отключаемся от БД 7) Убираем всё лишнее в результате. 8) Индекс для цикла ( Тут на любителя, мне понравилось, что вызывающему абоненту говорится номер внутренний того кто его вызывал, если кому не нравится можете убрать соответствующие строки.) 9) Получаем длину внутреннего номера который нужно произнести 10) Пока индекс меньше длины номера 11) Произносим текущую цифру номера (Укажите путь где есть файлы у вас с медиа файлами озвучки цифр, у меня это оказался /usr/local/etc/asterisk/IT) 12) Увеличиваем индекс на один 13) Заканчиваем цикл 14) Соединяем абонентов (Я отправил в секцию [office] так как у меня там собраны include всех секций в диалплане, вы куда хотите туда посылайте) 15) Кладём трубку ( У меня если поиск не выполнялся успешно, а именно внутреннего номера небыло найдено, то звонок чудным образом начинал уходить по кругу на номер 5696, и asterisk падал. А если трубку класть то при таком повороте вещей вам говорят, что такого номера нет. Типа вам никто не звонил. ) Ну вот как-то так. Рестартим Астериск, тестим звонки Пробуйте, сделаете что-то новое напишите как и что, буду благодарен :). Да и вообще пишите вопросы если, что не понятно.
  21. Соединяем два устройства небезысвестной фирмы через тырнет. Простенько без наворотов. Ваялось всё на cisco 2911 System Bootstrap, Version 15.0(1r)M16, RELEASE SOFTWARE (fc1). С лицухами такими: Technology Package License Information for Module:'c2900' ----------------------------------------------------------------- Technology Technology-package Technology-package Current Type Next reboot ------------------------------------------------------------------ ipbase ipbasek9 Permanent ipbasek9 security securityk9 Permanent securityk9 uc None None None data None None NoneCISCO № 1 Объявляем политику и описываем её. (config)#crypto isakmp policy 1 encr aes 256 authentication pre-share group 2 lifetime 3600Создаём ключ аутентификации вместе с ключевой строкой (config)#crypto isakmp key ОЧЕНЬСЛОЖНЫЙКЛЮЧ address АДРЕСНАЗНАЧЕНИЯНастраиваем окно шлюза (config)#crypto ipsec security-association replay window-size 128Настраиваем IPSEC transform set политику (config)#crypto ipsec transform-set ИМЯНАШЕЙПОЛИТИКИ esp-aes 256 esp-sha-hmac mode transport requireОбозначаем время жизни (config)#crypto isakmp keepalive 10 10Чистим DF биты для инкапсулированных пакетов (config)#crypto ipsec df-bit clearВаяем карту, можно идти и другим путём, но я ваяю карту. Такой я упоротый. (config)#crypto map ИМЯНАШЕЙКАРТЫ 200 ipsec-isakmp set peer АДРЕСНАЗНАЧЕНИЯ set security-association lifetime seconds 21600 set transform-set ИМЯНАШЕЙПОЛИТИКИ set pfs group2 match address НОМЕРACCESSЛИСТАСоздаём интерфейс (config)#interface Tunnel0 ip address 172.16.0.1 255.255.255.252 ip virtual-reassembly in ip tcp adjust-mss 1396 tunnel source АДРЕСНАШВНЕШНИЙ tunnel mode ipip tunnel destination АДРЕСНАЗНАЧЕНИЯВешаем крипто на внешний интерфейс (config)#interface ИМЯВНЕШНЕГОИНТЕРФЕЙСА crypto map ИМЯНАШЕЙКАРТЫСоздаём лист доступа (config)#access-list НОМЕРACCESSЛИСТА permit ip host АДРЕСНАШВНЕШНИЙ host АДРЕСНАЗНАЧЕНИЯ (config)#access-list НОМЕРACCESSЛИСТА permit ip host АДРЕСНАЗНАЧЕНИЯ host АДРЕСНАШВНЕШНИЙКидаем рельсы (config)#ip route ВНУТРЕННЯЯСЕТЬУДАЛЁННАЯ МАСКАСЕТИУДАЛЁНОЙ Tunnel0В принципе всё на первом, ну а на втором делаем эдентичные настройки кроме, естественно, ип адреса на интерфейсе тунеля. Там пишем 172.16.0.2 адресок и радуемся. Если что-то не получилось, предполагаю, что что-то сделано не так как написано тут или сделано кое что ещё. Надеюсь ничего не забыл и не перепутал, со мной такое бывает. Enjoy!
  22. Maerhekil

    Откладываем на хранение

    Ну, стоит и это на хранение положить, дабы потом быстрее было вытаскивать. В принципе бекапить всё и вся более менее важное, должен каждый хоть чуточку уважающий себя админ. И им это будет не интересно, но как я уже сказал на главной своего блога "Всё опубликованное является написанным для памяти и не претендует на исключительность". Будем складывать дамп мускуля на отдельно стоящий и настроенный FreeNAS с NFS шарой. Запишу как делал на Linux и FreeBSD. Начнём с не любимого мной Debian. Тачу файл скрипта. # touch /root/backup.shНазначаем привилегии. chmod 540 /root/backup.sh chown root:root /root/backup.shЧитать и исполнять его может только root. Нефиг остальным там делать. Создаём директорию куда будем монтировать #mkdir /mnt/archНаполняем его содержимым. #!/bin/sh n=$(date +%Y%m%d%H%M) cd /home/tmpbkp mysqldump -uroot -pСУПЕРПАРОЛЬ mail > $n.mail.sql mount.nfs КРАСИВЫЙИП:/mnt/rm1/arch/mail /mnt/arch mv /home/tmpbkp/$n.mail.sql /mnt/arch/$n.mail.sql umount /mnt/archВ принципе всё понятно, и тут нечего разбирать. Кому надо спросите. Пишем в кронтаб автозапуск. #crontab -e 1 01 * * * /root/backup.shВ принципе всё, перейду к любимому дьяволёнку. Почти ничем не отличаются манипуляции, кроме. Я на фре, спасибо моему старшему товарищу приучившему меня к этому, создаю отдельную дирректорию для скриптов. Тачу файл там. #touch /usr/local/scripts/backup.shДаю права #chmod 540 /usr/local/scripts/backup.sh #chown root:wheel /usr/local/scripts/backup.shНаполняю его содержимым #!/bin/sh n=$(date +%Y%m%d%H%M) cd /usr/home/vit/bacup mysqldump -uroot -pСУПЕРПАРОЛЬ telefon > $n.telefon.dump.sql mount -t nfs -o 'vers=3' КРАСИВЫЙИП:/mnt/rm1/arch/stat /mnt/arch mv /usr/home/vit/bacup/$n.telefon.dump.sql /mnt/arch/$n.telefon.dump.sql umount /mnt/archПишем в кронтаб запуск #ee /etc/crontab 1 01 * * * root /usr/local/scripts/backup.shНу как-то так. Да, и не забываем о блокировке баз при снятии дампа, думаю для больших баз нужно по изучать "man mysqldump". Enjoy
  23. Синтаксис во FreeBSD ничем практически не отличается. Разница лишь в том, что нет hosts.deny и все записи ведутся в hosts.allow. Во фре надо не забыть закоментить строку в самом начале. Да, wrappers сильная штука.
×