Курсы по использованию Asterisk

IP-телефония — технология будущего. Обучитесь работе с IP-АТС Asterisk для того чтобы внедрить и профессионально использовать при решении коммуникационных задач.

Работайте с Asterisk профессионально!

Многоуровневая защита IP-АТС Asterisk

Телефонные станции очень часто становятся объектами хакерских атак. Узнайте, каким образом необходимо строить многоуровневую защиту для Вашей IP-АТС.

Не оставьте хакерам шансов. Защитите свой Asterisk от атак.

Используйте Веб-Интерфейс для удобства настройки

Панель управление FreePBX позволяет легко и удобно управлять всей системой. Научитесь эффективно использовать FreePBX для решения своих задач.

Управление станцией и статистика в окне браузера.

Научитесь работать с Asterisk из консоли

Для понимания работы с Asterisk необходимо уметь настраивать его вручную с конфигурационными файлами и командной строкой CLI Asterisk.

Научитесь «тонкой» настройке Asterisk

Цель курсов - максимум практики.

Обучение нацелено на практическую работу с IP-оборудованием: платы потоков E1, VoIP-телефонные аппараты, голосовые шлюзы FXS и прочее.

Обучение на реальном оборудовании — залог успеха.

Policy-based routing в CentOS 6 на примере Dual WAN

База знаний Linux

В данной статье будет описано, как настроить Policy-based routing в CentOS 6.

Обычно при маршрутизации IP-пакетов маршрут дальнейшего следования пакета выбирается только на основе адреса назначения пакета. Механизм Policy Based Routing (PBR) в Linux позволяет принимать решение о маршрутизации пакета на основе любых полей пакета, метки, присвоенной пакету файрволом и, если понадобится, вообще любых данных, содержащихся в пакете.

Типичное применение Policy-based routing - ситуация, в которой Вам хотелось бы, чтобы основной шлюз, через который будут отправляться пакеты, зависел от сетевого интерфейса, через который пришёл первый пакет соединения. Такая ситуация возникает, например, при использовании более одного интернет-канала.

Настройка Policy-based routing на примере Dual WAN

Описание тестового сервера:

Интерфейс eth0

(первый канал доступа в интернет)

IP-адрес: 1.1.1.1/30

Шлюз по умолчанию: 1.1.1.2

Интерфейс eth1

(второй канал доступа в интернет)

IP-адрес: 2.2.2.1/30

Шлюз по умолчанию: 2.2.2.2

Интерфейс eth2

(локальная сеть)

IP-адрес: 192.168.100.1/24

Отключение Reverse Path Filtering

В современных дистрибутивах Linux обычно по умолчанию включен механизм rp_filter (Reverse Path Filtering). Этот механизм проверяет адрес отправителя каждого входящего пакета по FIB (Forwarding information base), если оказывается, что ответ на пакет должен быть отправлен через интерфейс, отличный от того, через который пришел пакет, то пакет сбрасывается.

Для работы механизма Policy-based routing используются пользовательские таблицы маршрутов, маршруты из которых не попадают в FIB. Поэтому rp_filter нужно отключить на всех интерфейсах, участвующих в Policy-based routing, иначе rp_filter будет сбрасывать входящие пакеты из интернет на всех интерфейсах, кроме того, на который указывает маршрут по умолчанию в таблице main. В нашем случае в Policy-based routing будут участвовать интерфейсы eth0 и eth1.
Для отключения rp_filter на них нужно выполнить команды:

sysctl -w net.ipv4.conf.eth0.rp_filter=0
sysctl -w net.ipv4.conf.eth1.rp_filter=0

Для того, чтобы rp_filter на интерфейсах eth0 и eth1 был выключен и после перезагрузки, нужно добавить в файл /etc/sysctl.conf следующие строки:

net.ipv4.conf.eth0.rp_filter = 0
net.ipv4.conf.eth1.rp_filter = 0

Создание пользовательских таблиц маршрутов, добавление маршрутов

Пользовательские таблицы маршрутизации нужно дописать в конец файла /etc/iproute2/rt_tables.

Имена пользовательских таблиц могут быть произвольными, но не должны совпадать с зарезервированными именами (local, main, default, unspec - они указаны в том же файле).

Номера пользовательских таблиц можно выбирать из диапазона 1-252 (тоже не должны совпадать с занятыми номерами). В данном случае будут добавлены таблицы isp1 и isp2:

#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep

10 isp1
11 isp2

Добавляем маршруты по умолчанию в созданные пользовательские таблицы маршрутов. В таблицу isp1 добавим маршрут через первого провайдера, а в таблицу isp2 - через второго.

ip route add default via 1.1.1.2 table isp1
ip route add default via 2.2.2.2 table isp2

Добавление правил файрвола для метки соединений и пакетов, добавление правил маршрутизации.

Теперь нужно заставить ядро использовать в определённых случаях маршруты из пользовательских таблиц вместо маршрутов из таблицы main. Для этого будут использоваться правила файрвола для метки пакетов и правила маршрутизации. Добавляем правила файрвола:

# Следующие два правила метят новые соединения через разных провайдеров разными метками

iptables -t mangle -A PREROUTING -i eth0 -n state --state NEW -j CONNMARK --set-mark 10
iptables -t mangle -A PREROUTING -i eth1 -n state --state NEW -j CONNMARK --set-mark 11

# Следующее правило копирует метку соединения на метку пакета (чтобы все пакеты соединения использовали один WAN-интерфейс)

# Это нужно для пакетов, проходящих через данный хост, если данный хост не является шлюзом, это правило не нужно

iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark

# Следующее правило аналогично предыдущему, но находится в цепочке OUTPUT и нужно для соединений, адресованных данному хосту

iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark

# Следующие правила нужны для того, чтобы исходящие соединения, устанавливаемые с определённого IP-адреса данного хоста,

# использовали правильный шлюз, вне зависимости от шлюза по умолчанию в таблице main

iptables -t mangle -s 1.1.1.1 -A OUTPUT -j MARK --set-mark 10
iptables -t mangle -s 2.2.2.1 -A OUTPUT -j MARK --set-mark 11

В правилах выше были использованы метки 10 и 11 для соединений и пакетов, эти метки являются произвольными и никак не связаны с номерами пользовательских таблиц маршрутизации. Теперь нужно связать метки пакетов с таблицами маршрутов с помощью правил маршрутизации.

Правила маршрутизации являются основным инструментом PBR в Linux, они позволяют использовать для выбора маршрута пользовательские таблицы маршрутов вместо таблицы main, если пакет удовлетворяет определённым условиям. В данном случае будут использоваться правила, использующие таблицу isp1 для пакетов с меткой 10 и таблицу isp2 для пакетов с меткой 11.

Прежде, чем это будет сделано, нужно учесть одну проблему - в каждой из наших пользовательских таблиц есть только маршрут по умолчанию, это означает, что пакеты с меткой 10 или 11, адресованные локальной сети, будут отправляться через соответствующего провайдера, а не в локальную сеть.

Для избежания этой проблемы можно добавить маршрут в локальную сеть в каждую из пользовательских таблиц, но это создаст дополнительные проблемы, когда появятся ещё локальные сети или понадобится добавить статический маршрут - каждый новый маршрут, добавляемый в таблицу main, нужно будет вручную добавлять в пользовательские таблицы, иначе эти маршруты не будут доступны для пакетов с метками. Вместо этого можно добавить правила, которые будут использовать таблицу main для пакетов, адресованных в частные подсети IPv4 (убедитесь перед этим, что вам не нужно, чтобы метки влияли на маршрутизацию пакетов, адресованных в частные подсети).

Добавляем правила маршрутизации:

ip rule add fwmark 10 table isp1
ip rule add fwmark 11 table isp2
ip rule add to 192.168.0.0/16 table main
ip rule add to 10.0.0.0/8 table main
ip rule add to 172.16.0.0/12 table main

Обратите внимание на то, что правила маршрутизации нужно добавлять в обратном порядке.
Если потом выполнить команду «ip rule ls», мы увидим следующий вывод:

0: from all lookup local
32760: from all to 172.16.0.0/12 lookup main
32761: from all to 10.0.0.0/8 lookup main
32762: from all to 192.168.0.0/16 lookup main
32763: from all fwmark 0xb lookup isp2
32764: from all fwmark 0xa lookup isp1
32766: from all lookup main
32767: from all lookup default

Правила, проверяющие адрес назначения пакета, должны стоять выше, чем правила, проверяющие метку пакета.

На данном этапе все настройки внесены, сервер должен правильно маршрутизировать ответы на соединения, устанавливаемые через любого из провайдеров, в том числе, на соединения, устанавливаемые в локальную сеть через проброс порта.

Сохранение настроек

Внесённые настройки будут утеряны после перезагрузки сервера, нужно сохранить их.

Для сохранения правил файрвола достаточно выполнить команду:

service iptables save

Маршруты и правила маршрутизации нужно внести в соответствующие файлы настроек в директории /etc/sysconfig/network-scripts.

Записываем в файл /etc/sysconfig/network-scripts/route-eth0

default via 1.1.1.2 table isp1

Записываем в файл /etc/sysconfig/network-scripts/route-eth1

default via 2.2.2.2 table isp2

Записываем в файл /etc/sysconfig/network-scripts/rule-eth1

fwmark 10 table isp1
fwmark 11 table isp2
to 192.168.0.0/16 table main
to 10.0.0.0/8 table main
to 172.16.0.0/12 table main

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

Правила маршрутизации можно добавлять в любой момент, их можно было внести в файл rule-eth0 или rule-eth2 вместо rule-eth1.

Теперь внесённые настройки будут работать и после перезагрузки сервера.


сервер, настройка, шлюз, centOS