Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Asterisk должен отвечать на двух IP адресах

3

Имеется Asterisk 1.6 на роутере с двумя внешними IP адресами (два разных интернет провайдера для надёжности). Сам по себе роутинг в линуксе разруливается с помощью source route. SIP клиенты могут залогинется только к одному IP который подставляется при default route, на второй IP можно залогинется только если клиент использует TCP SIP. Смотрел SIP монитором, астериск получает UDP SIP регистрацию на IP#2 но сам отвечает подставляя IP#1. Как побороть это?

удалить закрыть спам изменить тег редактировать

спросил 2012-06-06 08:16:03 +0400

nil Gravatar nil
41 4 2 5

12 Ответов

0

Что бы решить вопрос с подключением по UDP на любой IP адрес придется сделать примерно следующее (пишу по памяти, применяйте только понимая что вы делаете):

echo "
101 rt_provider1
102 rt_provider1" >> /etc/iproute2/rt_tables

iptables -t mangle -A PREROUTING -i eth1 -j CONNMARK --set-mark 1
iptables -t mangle -I PREROUTING -i eth2 -j CONNMARK --set-mark 2

ip route add defalt via PROVIDER1_GATEWAY table rt_provider1
ip route add defalt via PROVIDER2_GATEWAY table rt_provider2

ip rule add pref 1000 fwmark 1 table rt_provider1
ip rule add pref 1001 fwmark 2 table rt_provider2

Подробности здесь http://lartc.org/lartc.html

А вообще, если все клиенты поддерживают TCP SIP и DNS SRV, то вам это все не нужно. Настраивайте SRV запись с двумя IP адресами и используйте SIP TCP. Не усложняйте себе жизнь :)

ссылка удалить спам редактировать

ответил 2012-06-07 19:21:20 +0400

asteriskguru Gravatar asteriskguru
1160 4 5 21
http://www.asteriskguru.r...

Comments

И как это должно помочь?

Asterisk в отличии от того же FreeSWITCH не умеет динамически менять настройки о этого и проблема.

bolshoy_plohish ( 2012-06-08 04:28:08 +0400 )редактировать

Настройки Астериска и не нужно менять.

asteriskguru ( 2012-06-08 08:43:35 +0400 )редактировать
0

А цена вопроса ?

Если на шару(как у меня), то на сервере можно не указывать внешний IP, а маршрутизаторе указать что сервер принудительно ыходит через один канал, а если он падает, то через второй. Это хорошо если той сервер регится у SIP-провыйдера. Возможна и работа внешних абонентов, если сам телефон потдерживает функцию "резервный сервер" (видел такое в Грандстримах). В принципе всё работает весьма корректно. Можно даже и с доменом поиграться, как тут уже кто-то упоминал, тоже будет нормально работать.

Если за деньги(тоесть нужно действительно хорошая отказоустойчивость) то правильно оставить на сервере один IP и смотреть в сторону динамической маршрутизации. Купить зону BGP например.

Ещё как вариант можно использовать сам сервер(с 3-мя сетевушками), как шлюз в инет, это ещё проще всего.

ссылка удалить спам редактировать

ответил 2012-06-07 16:24:36 +0400

amonra Gravatar amonra flag of Ukraine
2301 26 13 65
http://lantec.ua/

обновил 2012-06-07 16:25:44 +0400

Comments

"купить зону BGP" звучит особенно профессионально :) для этого нужен несколько иной маршрутизатор и несколько другой специалист. А еще нужно чтоб провайдеры согласились анонсировать вашу AS-ку. которую еще надо купить и кого-то из провайдеров уговорить на выделение PA адресов. Для смолл бизнеса это анриал и стоит прилично. Другое дело что можно вынести станцию (или прокси, как сказал meral) в ЦОД где всё вышеописанное уже проделано.

shakirov ( 2012-06-07 16:30:11 +0400 )редактировать

Так я и написал "за деньги" ))) Да звучит круто, но для какой-нить кортпорации, которая потеряет за час без телефонии стоимость зоны BGP впроне реально. Что касается ЦОД-а, вопрос, будут ли эти самые ЦОД-овцы настраивать QOS для Вас ? У меня свои небольшой ЦОД, я комплектую сервера для ещё полтора десятка ЦОД-ов, и я знаю как админы ЦОД-ов относятся к подобным заявкам. НО всё опять-же зависит от нагрузки на Ваш сервер.

amonra ( 2012-06-07 16:42:28 +0400 )редактировать

Есть ещё вариант, поднять 2 сервера (можно виртуальных), кажый привязать к своему внешнему IP и в диалпланах обоих серверов прописать звонить на оба сервера сразу: Dial(SIP/${exten}@server1&SIP/${exten}@server2). Тут вообще будет полная отказоустойчивость.

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

amonra ( 2012-06-07 17:02:54 +0400 )редактировать

нафига ж такой ЦОД в котором надо QOS? вон в германию в хетзнер вынести. там 10мбит минимум будет на сервер. зак акието 30 евро. или я могу впс предоставить(realtime/voip настроено) за 30. про два сервера я писал.

meral ( 2012-06-08 00:16:00 +0400 )редактировать
0

Астериск тут не причем. у вас дефолтный маршут выходит через IP1, соответственно когда приходит пакет на IP2, выйдет он через IP1. Как вариант прописать маршуты для подсети для IP2. Но в любом случае будет работать только один. Чтобы отвечало с того интерфейса откуда пришел, нужно настраивать iptables и route.

ссылка удалить спам редактировать

ответил 2012-06-07 11:25:31 +0400

brost Gravatar brost flag of Russian Federation
100 12 3 12
http://asterisk-system.ru...

Comments

:-) Что-то новенькое!

Здесь вот почитай для начала:

http://tools.ietf.org/html/rfc2543

bolshoy_plohish ( 2012-06-07 12:32:51 +0400 )редактировать

Другое дело, как можно перехватить пакеты и поправить на лету заголовки?

bolshoy_plohish ( 2012-06-07 12:42:58 +0400 )редактировать

пересылкой пакетов согласно маршрутам занимается OS. Если в sip.conf настроен bindaddr=0.0.0.0., а у сервера два белых ИП.то настраивать нужно маршрутизацию. поправьте если я ошибаюсь.

brost ( 2012-06-07 13:07:58 +0400 )редактировать
0

Если провайдер работатет по TCP то можно слать на одного по tcp а на др по udp, тогда source адреса точно можно сделать разными

bindport=5060
bindaddr=X.X.X.X;
tcpbindaddr=Y.Y.Y.Y
transport=tcp
ссылка удалить спам редактировать

ответил 2012-06-07 09:04:52 +0400

Zavr2008 Gravatar Zavr2008 flag of Russian Federation
2886 11 9 40
http://mh.otx.ru/
0

На FreeSWITCH вроде как можно реализовать такую задачу.
Поставить FreeSWITCH перед Asteris.
У меня, правда, с наскоку разобраться не получилось.:-)))

ссылка удалить спам редактировать

ответил 2012-06-07 05:23:03 +0400

bolshoy_plohish Gravatar bolshoy_plohish
1388 25 20 38
0

Ставим роутер с тремя портами. Два WAN (два провайдера) и один LAN (астериск). На рутере настраиваем маркировкой соединений, все что пришло через WAN1 - отдавать через WAN1, что через WAN2 отдавать через WAN2. На астериске будет соответвенно всего один адресс с одним маршрутом.

ссылка удалить спам редактировать

ответил 2012-06-06 22:33:04 +0400

alphil Gravatar alphil flag of Spain
520 11 5 16
http://www.damal.es/

Comments

угу. маркирование соединений это для меня чтото страшное. но все равно не будет работать. сами догадаетесь почему?)

meral ( 2012-06-07 00:31:30 +0400 )редактировать
0

это очень сложная задача. астериск за натом так работаьт не будет.ибо нужно это единицам из милионов.

можно решить используя семейство ser(kamailio/opensips) но это уровень "ГУРУ".

еще можно решить делая sipnat на ваших роутерах. тоже гуру, только в iptables.

простое решение только одно - сделать на внешнем vps relay/nat и пробросить openvpn.

ссылка удалить спам редактировать

ответил 2012-06-06 17:10:54 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

А для IAX есть решение?

bolshoy_plohish ( 2012-06-06 18:08:40 +0400 )редактировать

Asterisk не за NATом, роутер и есть Asterisk и у него 2 IP разных.

nil ( 2012-06-06 19:54:51 +0400 )редактировать

если роутер и есть астериск, то все должно работать. ну если роут указан правильно и запросы приходят на интерфейс с которым сейчас дефаулт роут. в остальных случаях - смотри выше. как вариант можеет ДВА астерсика запустить.

meral ( 2012-06-07 00:33:07 +0400 )редактировать
0

Боюсь что эта задача решается только установкой роутера отдельного.

ссылка удалить спам редактировать

ответил 2012-06-06 16:54:19 +0400

shakirov Gravatar shakirov flag of Russian Federation
1143 46 14 46
http://gammatelecom.ru/

Comments

Нука, расскажи ка идею подобной конснструкции, а то я что-то сообразить не могу.

bolshoy_plohish ( 2012-06-06 18:02:10 +0400 )редактировать

вроде как всё просто, на роутере сорсроутинг включаем и маппим порт (с двух внешних интерфейсов) на внутренний IP с астериском.

shakirov ( 2012-06-06 18:12:38 +0400 )редактировать

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

meral ( 2012-06-07 00:33:47 +0400 )редактировать
0

Почему не дать разруливать это Камалии например?

ссылка удалить спам редактировать

ответил 2012-06-06 16:30:33 +0400

Zavr2008 Gravatar Zavr2008 flag of Russian Federation
2886 11 9 40
http://mh.otx.ru/
0

В данном случае, наверное, только используя externhost.
Только для этого нужно иметь доменное имя.
Если доменного имя нет, то можно использовать DinDNS или другие схожие сервисы.

ссылка удалить спам редактировать

ответил 2012-06-06 15:36:37 +0400

bolshoy_plohish Gravatar bolshoy_plohish
1388 25 20 38

Comments

externhost какая-то странная альтернатива. Две A записи для хоста указывать категорически нельзя, т.к. если один канал, то получится игра в рулетку. Как вариант - менять одну единственную A запись для хоста, но нужно учитывать, что бывают кэширующие днс сервера, которые будут держать в кэше старый адрес. В общем использование externhost во всех отношениях не есть хорошо. Проще менять externip при смене канала.

andy-none ( 2012-06-06 15:50:47 +0400 )редактировать

А при этом Asterisk передергивать не придется?

bolshoy_plohish ( 2012-06-06 16:32:32 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку
1 закладка

подписаться на rss ленту новостей

Статистика

Задан: 2012-06-06 08:16:03 +0400

Просмотрен: 6,831 раз

Обновлен: Jun 07 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.