Cisco 7941 и NAT
Откуда: Москва
Сообщений: 3421
|
Cisco 7941 и NAT
Здравствуйте, коллеги.
Есть Cisco 7941g и Asterisk. Бизнес-логика такова, что для каждого пользователя стоит nat=yes. Это работает для всех известных мне телефонов, но почему-то не работает с 7941g.
Если переключить nat=no, все прекрасно. 7941g регистрируется, делает и принимает звонки. Стоит сделать nat=yes, регистрация уже не проходит. В конфиге телефона <natEnabled>0</natEnabled>.
Смотрел tcpdump'ом что происходит.
1. От Ц приходит REGISTER с сорс портом 49423:
<--- SIP read from x.x.44.250:49423 --->
REGISTER sip:x.x.44.202 SIP/2.0
2. Asterisk как порядочный шлет Trying и потом Unauthorized на x.x.44.250:49423! Вот 2 пакета подряд:
14:53:48.070237 IP x.x.44.158.5060 > x.x.44.250.49423: SIP, length: 451
14:53:48.070422 IP x.x.44.158.5060 > x.x.44.250.49423: SIP, length: 516
14:53:48.070905 IP x.x.44.250 > x.x.44.158: ICMP x.x.44.250 udp port 49423 unreachable, length 36
Ц их игнорирует, и через пару секунд снова шлет REGISTER, уже с портом 49424, и так по кругу.
При nat=no Asterisk не смотрит на source ip:port, а шлет ответ по тому, что указано в contact. А там порт 5060, поэтому все работает.
Мысли возникают такие:
1) Все другие телефоны открывают один UDP порт, 5060 или любой другой, который подставляют в contact. Это порт,на котором они готовы ПРИНИМАТЬ ответ по всем мотивам жанра TCP/IP. А циско типа самая умная, открывает несколько UDP портов. Один для отправки, другой для приемки. Зачем!?
2) Как эту дурь обойти?
P.S. Прошивка SIP 8.3.0-50.
|
Откуда: Уфа
Сообщений: 5856
|
Re: Cisco 7941 и NAT
я справился с причудами циски (7906 в основном) двумя способами:
1) где не надо, отключал NAT
2) не использовал циску в проектах (дорого, а толку нету)
|
Откуда: Москва
Сообщений: 3421
|
Re: Cisco 7941 и NAT
Цискофон оказался самым тупым по работе с NAT и, по-ходу, стеком SIP девайсом. Вот так номер. Мне интересно, кто сможет аргументировать обратное? Я утверждаю, что нет никакого смысла принимать все пакеты на 5060, а для отправки выбирать произвольный порт.
Это связано только с тем, что программистам прошивки SIP так удобнее, так как девайс сложный, явно многопоточный, и если писать в сокет из многих потоков, то надо позаботиться об обработке ситуаций одновременной записи в сокет. А это оказалось не по плечу программистам Cisco. Хаха.
P.S. Это не Asterisk, где на все-все используется один UDP порт. IAX2 должен покорить мир! :-)
|
Откуда: Kiev
Сообщений: 801
|
Re: Cisco 7941 и NAT
А может трабл в том, что в Астериске вариантов NAT'а немерянно?
;nat=no ; Global NAT settings (Affects all peers and users)
; yes = Always ignore info and assume NAT
; no = Use NAT mode only according to RFC3581 (;rport)
; never = Never attempt NAT mode or RFC3581 support
; route = Assume NAT, don't send rport
Лучший способ предвидеть будущее - изобрести его (Алан Кей, "Apple")
|
Откуда: Москва
Сообщений: 3421
|
Re: Cisco 7941 и NAT
да нет, все меряно :-)
Поставь цискофон за нат и подключи его к астериску...
Тебе надо будет все заворачивать на порт 5060. Если это не домашний роутер, это не "юзабильно".
|
Откуда: Нижний Новгород
Сообщений: 277
|
Re: Cisco 7941 и NAT
Гы. похоже цископрограммеры юзают отдельный сокет с auto-assigned source портом для отправки пакетов
|
Сообщений: 6521
|
Re: Cisco 7941 и NAT
litnimax: IAX2 должен покорить мир! :-)
Нет, IAX2 лишь должен подготовить мир к приходу мессии - IAX3, который то и покорит уже мир.
В нём будет ZRTP+MPEG4, с крптографией AES, фик послушаешь!
|
Откуда: Москва
Сообщений: 3421
|
Re: Cisco 7941 и NAT
simax: Гы. похоже цископрограммеры юзают отдельный сокет с auto-assigned source портом для отправки пакетов
Ну да! Тогда проще, каждый поток открыл временный сокет, послал датаграмму и тут же его закрыл и уничтожил дескриптор.
Заметь, ICMP отвечает Unreachable, следовательно, на уровне UDP об этом порте уже все забыли!
|
Откуда: Москва
Сообщений: 3421
|
Re: Cisco 7941 и NAT
ded: litnimax: IAX2 должен покорить мир! :-)
Нет, IAX2 лишь должен подготовить мир к приходу мессии - IAX3, который то и покорит уже мир.
В нём будет ZRTP+MPEG4, с крптографией AES, фик послушаешь!
Ded! Точно!
|
Сообщений: 243
|
Re: Cisco 7941 и NAT
Думаю, cisco использует чей-то коммерческий стек протоколов SIP типа sofia-sip, и косяк в нем. Не верится, что они на низком уровне сокеты программируют :-)
|
|