LINUX.ORG.RU
решено ФорумAdmin

[Asterisk] Диапазон RTP

 


0

0

Астериск на хосте с фаерволлом. Открыты диапазоны 5060,10000:10500.

rtp.conf:

[general]
rtpstart=10000
rtpend=10500

Регистрация на * проходит. Хосты в одной подсети.

sip.conf:

[general]
allowexternalinvites = yes
allowoverlap = no
allowguest = no
allowsubscribe = yes
allowtransfers = no
alwaysauthreject = yes
autodomain = yes
bindport = 5060
bindaddr = 0.0.0.0
defaultexpiry = 300
externrefresh = 30
ignoreregexpire = no
localnet = 192.168.1.0/24
maxexpiry = 3600
minexpiry = 60
notifyringing = yes
notifyhold = yes
recordhistory = yes
registerattempts = 0
registertimeout = 30
rtautoclear = yes
rtcachefriends = yes
rtsavesysname = yes
rtupdate = yes
srvlookup = yes
t1min = 100
t38pt_udptl = yes
useragent = Asterisk PBX
usereqphone = no
videosupport = no
canreinvite = no
context = default
dtmfmode = rfc2833
language = en


[alice]
type=friend
host=dynamic
secret=123
defaultuser=alice
context=office
nat=yes
insecure=invite

Звоню с Алисы на экстеншн, * отвечает, судя по логу, но вот почему * входящие соединения идут не на указанный диапазон, а на любой другой порт, понять никак не могу:

[Aug 27 18:08:37]     -- Executing [123@office:1] Answer("SIP/alice-00000003", "") in new stack
[Aug 27 18:08:37] Audio is at 192.168.1.250 port 26070

Чем можно забороть?


С * пока не работал, но можешь выложишь iptables -vnL или iptables-save (в лоркоде). Да и лог tcpdump во время звонка.

anton_jugatsu ★★★★
()
Ответ на: комментарий от anton_jugatsu

Лог iptables во время вышеуказанного звонка:

Aug 27 18:08:37 gate kernel: [79061.653047] DROP IN=eth1 OUT= MAC=so:me:one SRC=192.168.1.205 DST=192.168.1.250 LEN=200 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=10100 DPT=26070 LEN=180

В софтофоне как раз выставлен порт 10100 как порт для передачи RTP. Вот он исправно и соединяется с этого порта, а вот почему на стороне * втыкается не туда, куда надо — странно.

Что касается самих правил, то, уверяю, всё в порядке:

2274  286K ACCEPT     udp  --  eth1   *       192.168.1.0/24       0.0.0.0/0           multiport dports 53,138,137,11190,5060,10000:10500 state NEW

Иначе бы не подсоединился по SIP и вообще, остальное не работало бы. Проблема именно в выборе порта назначения за границами разрешённого диапазона.

HolyBoy
() автор топика
Ответ на: комментарий от HolyBoy

Не совсем удачно показал правила:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination 
2274  286K ACCEPT     udp  --  eth1   *       192.168.1.0/24       0.0.0.0/0           multiport dports 53,138,137,11190,5060,10000:10500 state NEW

HolyBoy
() автор топика
Ответ на: комментарий от HolyBoy

Пока я вижу, что DROP-ается, почему SRC и DST один и тот же хост? Ты соединяешься с какого хоста и куда, прозреваю участие lo и OUTPUT :)

tcpdump выложи, пожалуйства, во время коннекта.

anton_jugatsu ★★★★
()
Ответ на: комментарий от zgen

Делал.

И не один раз.

192.168.1.205 — хост-клиент 192.168.1.250 — хост-сервер с *.

HolyBoy
() автор топика
Ответ на: комментарий от anton_jugatsu

Пока я вижу, что DROP-ается, почему SRC и DST один и тот же хост?

Почему это один и тот же? Разные хосты.

Ты соединяешься с какого хоста и куда, прозреваю участие lo и OUTPUT :)

Это тут не при чём. Конечно, можно разрешить OUTPUT на SPT, но это неправильно, ИМХО.

Чтобы закрыть точку в этой ветке расследования: конфигурация фаерволла в порядке. Проблема именно в *. Он должен сообщать клиенту, на какие порты можно подсоединяться: 10000:10500. Этого не происходит.

HolyBoy
() автор топика
Ответ на: комментарий от HolyBoy

Почему это один и тот же? Разные хосты.

Извиняюсь, невнимательно посмотрел :)

Получается основной вопрос такой:

Почему идёт коннект на DPT=26070, который, естественно, дропается.

Aug 27 18:08:37 gate kernel: [79061.653047] DROP IN=eth1 OUT= MAC=so:me:one SRC=192.168.1.205 DST=192.168.1.250 LEN=200 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=10100 DPT=26070 LEN=180

Выхлоп tcpdump

anton_jugatsu ★★★★
()
Ответ на: комментарий от anton_jugatsu

Почему идёт коннект на DPT=26070, который, естественно, дропается.

Это для примера было. DPT может быть любым. Но не попадает в указанный на сервере диапазон.

HolyBoy
() автор топика
Ответ на: комментарий от HolyBoy

В софтофоне как раз выставлен порт 10100 как порт для передачи RTP

Так почему же тогда он SPT=10100? Копать следует в сторону настройки клиента. На стороне сервера всё верно, вроде бы.

anton_jugatsu ★★★★
()

Проблема решена: я создавал файлы конфигурации в директории /etc/asterisk руками и не обратил внимание на то, что там надо было задать пользователя/группу asterisk для всех файлов.

После исправления всё заработало.

HolyBoy
() автор топика
Ответ на: комментарий от anton_jugatsu

Ну да, я сам протормозил.

Большое спасибо всем ответившим в этой теме.

HolyBoy
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.