вторник, 5 июня 2018 г.

Настройка сети в Ubuntu-server 18.04

Вместо привычного /etc/network/interfaces, в Ubuntu 18.04 сеть
настраивается в файлах в каталоге /etc/netplan/. Вот так, например,
выглядит настройка статического адреса для интерфейса enp0s3.

cd /etc/netplan/
cat 01-netcfg.yaml

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
     dhcp4: no
     addresses: [192.168.1.222/24]
     gateway4: 192.168.1.1
     nameservers:
       addresses: [8.8.8.8,8.8.4.4]


Так настраивается динамика:

cat 01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s3:
      dhcp4: yes


Важно соблюдение отступов!


После настройки сделать:


sudo netplan apply

понедельник, 28 мая 2018 г.

bonding

Делалось на Ubuntu 14.04:

1. apt-get install ifenslave
2. echo 'bonding' > /etc/modules
2. nano /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

auto bond0
iface bond0 inet static
    address 192.168.1.225
    netmask 255.255.255.128
    network 192.168.1.128
    broadcast 192.168.1.255
    gateway 192.168.1.129
    dns-nameservers 192.168.1.1 192.168.1.2
    domain domain.local
    search domain.local
    slaves eth0 eth1
    bond_mode 4
    bond_xmit_hash_policy layer2+3
    bond_miimon 100
    bond_downdelay 200
    bond_updelay 200

auto eth0
iface eth0 inet manual
        bond-master bond0

auto eth1
iface eth1 inet manual
        bond-master bond0


4. shutdown -r now

На Cisco 2960:

interface Port-channel6
 description bkpserv
 switchport access vlan 108
 switchport mode access

interface GigabitEthernet1/0/14
 switchport access vlan 2
 switchport mode access
 channel-protocol lacp
 channel-group 6 mode active

interface GigabitEthernet1/0/15
 switchport access vlan 2
 switchport mode access
 channel-protocol lacp
 channel-group 6 mode active


суббота, 17 марта 2018 г.

Asterisk подключение к СУБД используя ODBC.

Тут речь о дебианоподобных.
Сначала надо установить сам ODBC:

apt-get install unixodbc unixodbc-dev libmyodbc

Затем отредактировать файл (он есть в системе, но пуст):
nano /etc/odbcinst.ini
следующим образом:
[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup           = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage       = 1


Изменение диалплана нажатием клавиш на телефонном аппарате.

Мне приходится работать в организации, которая помимо других сфер деятельности, также является и Интернет-провайдером. Как и у любого провайдера у нас бывают проблемы на сети. В таком случае, в саппорт сразу поступает большое количество звонков, и чтобы сообщить абонентам, что их проблема известна, над ее решением уже работают, был использован нехитрый набор действий. Суть в том, что в диалплан скриптом вставляется строчки, которые запускают проигрывание файла сообщающего о проблеме, при устранении проблемы, так же скриптом строчка убирается.

Диалплан:

Контекст сервисного номера:


.................................

[internal]
exten = 7934,1,Goto(Problem_ISP,s,1)

.................................

[Problem_ISP]
exten => s,1,NoOp(- Problem_ISP -)
exten => s,n,Authenticate(8725)
exten => s,n(service),Background(problem_ISP) ;тут голосовое меню - типа если есть проблема нажмите "1", если нет проблемы, и надо вернуть как было прежде нажмите "2"
exten => s,n,WaitExten(5)
exten => 1,1,System(/home/change/change.sh) ;скрипт меняющий диалплан
exten => 2,1,System(/home/change/unchange.sh) ;скрипт убирающий изменения
exten => t,1,Hungup()
.................................

Сами скрипты:
change.sh

#!/bin/bash
sed -i 's/exten => i,1,Playback(please_wait_on_line2)/exten => i,1,Playback(problem)/g' /etc/asterisk/extensions.conf
sed -i 's/exten => t,1,Playback(please_wait_on_line2)/exten => t,1,Playback(problem)/g' /etc/asterisk/extensions.conf
sed -i 's/exten = 1,1,Playback(please_wait_on_line2)/exten = 1,1,Playback(problem)/g' /etc/asterisk/extensions.conf
sed -i 's/exten = 2,1,Playback(please_wait_on_line2)/exten = 2,1,Playback(problem)/g' /etc/asterisk/extensions.conf
/usr/sbin/asterisk -rx 'dialplan reload'


unchange.sh

#!/bin/bash
sed -i 's/exten => i,1,Playback(problem)/exten => i,1,Playback(please_wait_on_line2)/g' /etc/asterisk/extensions.conf
sed -i 's/exten => t,1,Playback(problem)/exten => t,1,Playback(please_wait_on_line2)/g' /etc/asterisk/extensions.conf
sed -i 's/exten = 1,1,Playback(problem)/exten = 1,1,Playback(please_wait_on_line2)/g' /etc/asterisk/extensions.conf
sed -i 's/exten = 2,1,Playback(problem)/exten = 2,1,Playback(please_wait_on_line2)/g' /etc/asterisk/extensions.conf
/usr/sbin/asterisk -rx 'dialplan reload'

ну и выставим права:

cd /home/change
chown asterisk:asterisk change.sh
chown asterisk:asterisk unchange.sh
chmod 755 change.sh
chmod 755 unchange.sh



Самое главное, не забыть вернуть все как было после устранения проблемы.
Впрочем, можно добавить задание в крон на определенное время возвращающее диалплан дефолт.


вторник, 13 марта 2018 г.

Multicast вещание

Multicast вещание нескольких видео файлов на multicast IP-адреса 239.255.1.1 и 239.255.1.2

0. apt-get install vlc

Вещаем по RTP, консоль сервера:
===========
1. vlc --ttl 12 --color -I telnet --telnet-password 123

2. Открываем вторую консоль на том же хосте
telnet localhost 4212

3.
> new channel1 broadcast enabled
> setup channel1 input /path/to/file_1.avi
> setup channel1 output #rtp{mux=ts,dst=239.255.1.1,sap,name="Channel1"}
> new channel2 broadcast enabled
> setup channel2 input /path/to/file_2.avi
> setup channel2 output #rtp{mux=ts,dst=239.255.1.2,sap,name="Channel2"}
> control channel1 play
> control channel2 play

На клиенте:
========
запускаем vlc проигрыватель
нажимаем «Инструменты» -> «Настройки», там, в нижнем левом углу жмем в «Показывать настройки» на «Все», затем раскрываем «Вывод потока», а там ищем «Модули вывода», в поле «Интерфейс вывода IPv4 multicast» пишем IP-адрес, который прописан на вашей сетевой карте ( смотрящей в сторону сервера вещающего поток), жмем «Сохранить»

Для просмотра потока по RTP:

После того как выполнили настройки: «Файл» ->«Открыть URL»
в строке MRL пишем:
rtp://@239.255.1.1:5004 (что бы посмотреть видео из файла file_1.avi)
или
rtp://@239.255.1.2:5004 (что бы посмотреть видео из файла file_2.avi соответственно)

Источник:
http://subnets.ru/blog/?p=12

среда, 27 декабря 2017 г.

Белый список для Asterisk

Черный список для Asteriska я уже делал дома (кстати, довольно успешно - те, кто беспокоили меня звонками уже не беспокоят). Теперь, на работе руководство поставило задачу оградить сотрудников IT, от звонков сотрудников, кроме определенного круга приближенных. Эти звонки должны уходить в ринг-группу технической поддержки.

Используем AstDB, создаем список разрешенных номеров:

asterisk -rx 'database put allow_for_it 343 1'

asterisk -rx 'database put allow_for_it 344 1'

и т.д.

Удалить номер из базы так:

asterisk -rx 'database del allow_for_it 343'

В диалплане:

exten = 343,1,ExecIf($["${DB(allow_for_it/${CALLERID(num)})}" != "1"] ?Goto(ringroup-IT,s,1))
exten = 343,n,Dial(SIP/343,20,t)



вторник, 19 сентября 2017 г.

Проброс порта для доступа к локальным ресурсам по внешнему адресу.

Допустим, в сети имеется шлюз, и внутри сети, за шлюзом находится ресурс имеющий внутренний адрес напр. 192.168.1.7. Доступ из Интернет к 192.168.1.7 организован с помощью проброса портов с шлюза имеющего внешний адрес напр. 1.2.3.4. Также из Интернета доступ к серверу возможен по имени name.ru.
Но что будет если мы обратимся из внутренней сети с ip 192.168.1.9 к серверу по имени name.ru? Нашим хостом будет проигнорирован ответ с name.ru, т.к. он придет с адреса 192.168.1.7, а не 1.2.3.4. Для того чтобы хосты понимали друг-друга нужно правило на шлюзе заменяющее адрес хоста-клиента (192.168.1.9) на внутренний адрес шлюза напр. 192.168.1.1, в таком случае пакеты от 192.168.1.7 пойдут через шлюз и на 192.168.1.9 придут с адреса 1.2.3.4.

iptables -t nat -A POSTROUTING --dst 192.168.1.7 -p tcp -m tcp --dport 443 -j SNAT --to-source 192.168.1.1

Для того чтобы получить доступ к name.ru с сервера, который являетя шлюзом необходимо следующее правило:

iptables -t nat -A OUTPUT --dst 1.2.3.4 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.1.7

Если мы используем прокси-сервер на 192.168.1.1 то достаточно добавить name.ru в исключения прокси.