PF + SIP (IAX) (Нету звука)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Ответить
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

PF + SIP (IAX)

Сообщение kasak »

Во многих руководствах по asterisk указано что для того чтобы переправить через nat надо пропустить порта 5060 и 10000-20000 для rtp. пропустил. так же пропустил порт iax2.
Схема такая

asterisk -- gateway -- INTERNET -- gateway -- client.

То есть и астериск и клиент за натом.

по SIP
Когда пытаешься подключиться софтфоном по локалке - всё работает.
Когда пытаешься софтфоном подключится через интернет - нету звука но звонки идут.
когда подключаешься софтфоном по vpn (vpn в отдельной подсети которая роутится на локалку с астериском) - звонки идут

по IAX
снаружи звонки идут, но от софтфона до абонента звук есть, а от абонента звук прерывистый и разобрать невозможно.

Пробовал разные софтфоны, для android и iphone.

Есть ли у кого-то опыт в этом деле?
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
lazhu
Сообщения: 70
ОС: FreeBSD 9-STABLE / clang 3.3
Контактная информация:

Re: PF + SIP (IAX)

Сообщение lazhu »

kasak писал(а):
09.08.2013 23:28
Во многих руководствах по asterisk указано что для того чтобы переправить через nat надо пропустить порта 5060 и 10000-20000 для rtp. пропустил. так же пропустил порт iax2.
Схема такая

asterisk -- gateway -- INTERNET -- gateway -- client.

То есть и астериск и клиент за натом.

по SIP
Когда пытаешься подключиться софтфоном по локалке - всё работает.
Когда пытаешься софтфоном подключится через интернет - нету звука но звонки идут.
когда подключаешься софтфоном по vpn (vpn в отдельной подсети которая роутится на локалку с астериском) - звонки идут

по IAX
снаружи звонки идут, но от софтфона до абонента звук есть, а от абонента звук прерывистый и разобрать невозможно.

Пробовал разные софтфоны, для android и iphone.

Есть ли у кого-то опыт в этом деле?


Код: Выделить всё

${fwcmd} add 051 divert natd udp from any to me dst-port 4569,5060-5070,10000-10100 in recv ${ext_if}
${fwcmd} add 052 divert natd udp from any to me src-port 4569,5060-5070,10000-10100 in recv ${ext_if}
${fwcmd} add 053 divert natd udp from ${pbx} to any dst-port 4569,5060-5070,10000-10100 out xmit ${ext_if}
${fwcmd} add 054 divert natd udp from ${pbx} to any src-port 4569,5060-5070,10000-10100 out xmit ${ext_if}
${fwcmd} add 055 pass udp from any to ${pbx} dst-port 4569,5060-5070,10000-10100 via any
${fwcmd} add 056 pass udp from any to ${pbx} src-port 4569,5060-5070,10000-10100 via any
${fwcmd} add 057 pass udp from ${pbx} to any dst-port 4569,5060-5070,10000-10100 via any
${fwcmd} add 058 pass udp from ${pbx} to any src-port 4569,5060-5070,10000-10100 via any
${fwcmd} add 059 pass udp from me to any src-port 4569,5060-5070,10000-10100 out via ${ext_if}
${fwcmd} add 060 pass udp from me to any dst-port 4569,5060-5070,10000-10100 out via ${ext_if}

Схема такая же: и астер, и клиенты за натом.
4569 - IAX, 5060-5070 - SIP, 10000-10100 - RTP (сотни портов хватает за глаза)
Правда, это ipfw. Про PF не скажу
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

Re: PF + SIP (IAX)

Сообщение nerve »

kasak писал(а):
09.08.2013 23:28
Во многих руководствах по asterisk указано что для того чтобы переправить через nat надо пропустить порта 5060 и 10000-20000 для rtp.

а так же прописать ext_ip в настройках астериска который должен равняться внешнему ИПу на роутере.
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: PF + SIP (IAX)

Сообщение kasak »

nerve писал(а):
15.10.2013 22:56
kasak писал(а):
09.08.2013 23:28
Во многих руководствах по asterisk указано что для того чтобы переправить через nat надо пропустить порта 5060 и 10000-20000 для rtp.

а так же прописать ext_ip в настройках астериска который должен равняться внешнему ИПу на роутере.

прописано, забыл указать. всё равно не работает
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

Re: PF + SIP (IAX)

Сообщение nerve »

kasak писал(а):
16.10.2013 12:54
nerve писал(а):
15.10.2013 22:56
kasak писал(а):
09.08.2013 23:28
Во многих руководствах по asterisk указано что для того чтобы переправить через nat надо пропустить порта 5060 и 10000-20000 для rtp.

а так же прописать ext_ip в настройках астериска который должен равняться внешнему ИПу на роутере.

прописано, забыл указать. всё равно не работает

ну раз так, то давай весь pf.conf и где там этот ext_ip, sip.conf что ли и другие конфиги с астериска где диапазон портов задается и тп.
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: PF + SIP (IAX)

Сообщение kasak »

nerve писал(а):
17.10.2013 11:42
kasak писал(а):
16.10.2013 12:54
nerve писал(а):
15.10.2013 22:56
kasak писал(а):
09.08.2013 23:28
Во многих руководствах по asterisk указано что для того чтобы переправить через nat надо пропустить порта 5060 и 10000-20000 для rtp.

а так же прописать ext_ip в настройках астериска который должен равняться внешнему ИПу на роутере.

прописано, забыл указать. всё равно не работает

ну раз так, то давай весь pf.conf и где там этот ext_ip, sip.conf что ли и другие конфиги с астериска где диапазон портов задается и тп.

pf.conf:

Код: Выделить всё

ext_if = "em0"
int_if = "em1"
lan_net = "192.168.2.0/23"
guest_vpn = "192.168.200.0/24"
phoner = "192.168.2.58"
sip_ports= "{ 4569, 5060, 10000:20000 }"

open_tcp_port = "pass in quick on em0 inet proto tcp to em0 port"
open_udp_port = "pass in quick on em0 inet proto udp to em0 port"
open_tcpudp_port_quick = "pass in quick on em0 inet proto { tcp, udp } to em0 port"

table <mynets> persist { 192.168.1.0/24, 192.168.2.0/23 }
table <squid> persist {192.168.2.0/23, !192.168.2.203, !192.168.3.250 }

set skip on { lo enc0 }
set limit states 50000

# filter rules and anchor for ftp-proxy(8)
anchor "ftp-proxy/*"
pass in quick inet proto tcp to ! <mynets> port ftp divert-to 127.0.0.1 port 8021

# anchor for relayd(8)
#anchor "relayd/*"

antispoof quick for $int_if inet

pass            # to establish keep-state

# rules for spamd(8)
#table <spamd-white> persist
#table <nospamd> persist file "/etc/mail/nospamd"
#pass in on egress proto tcp from any to any port smtp \
#    rdr-to 127.0.0.1 port spamd
#pass in on egress proto tcp from <nospamd> to any port smtp
#pass in log on egress proto tcp from <spamd-white> to any port smtp
#pass out log on egress proto tcp to any port smtp

## PROXY ##
pass in quick inet proto tcp from <squid> to !<mynets> port www divert-to 127.0.0.1 port 3128
## /PROXY ##

block in on $ext_if

# By default, do not permit remote connections to X11
block in on ! lo0 proto tcp to port 6000:6010

#secure ssh
table <ssh-brute> persist file "/etc/ssh.deny"
block in quick from <ssh-brute>
$open_tcp_port ssh flags S/SA keep state \
(max-src-conn-rate 3/60, overload <ssh-brute> flush global )
#secure ssh

pass proto { esp, ah, gre }

$open_tcp_port { ftp, www, 8080 }
$open_tcpudp_port_quick { domain, l2tp, pptp }

pass out on $ext_if inet from $lan_net to any nat-to $ext_if
pass out on $ext_if inet from $guest_vpn to ! <mynets> received-on pppx nat-to $ext_if

$open_udp_port $sip_ports rdr-to $phoner


sip.conf:

Код: Выделить всё

accept_outofcall_messages=yes
auth_message_requests=no
outofcall_message_context=dpma_message_context
vmexten=*97
context=from-sip-external
callerid=Unknown
notifyringing=yes
notifyhold=yes
tos_sip=cs3
tos_audio=ef
tos_video=af41
alwaysauthreject=yes
useragent=-2.11.0beta2(11.2.1)
disallow=all
allow=ulaw
allow=alaw
allow=gsm
allow=speex
callevents=no
jbenable=no
defaultexpiry=120
registertimeout=20
registerattempts=0
maxexpiry=3600
minexpiry=60
notifyringing=yes
checkmwi=10
srvlookup=no
allowguest=no
notifyhold=yes
g726nonstandard=no
videosupport=no
canreinvite=no
rtptimeout=30
rtpholdtimeout=300
rtpkeepalive=0
maxcallbitrate=384
nat=yes
externip=<тут внешний ип>
localnet=192.168.2.0/255.255.254.0
localnet=192.168.200.0/255.255.255.0
localnet=192.168.1.0/255.255.255.0


Код: Выделить всё

[general]
icesupport=yes
rtpend=20000
rtpstart=10000
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

Re: PF + SIP (IAX)

Сообщение nerve »

пробовал регистрироваться и звонить с клиента, который не за натом, а у котого честный ИП?
что из себя представляет клиент, какие у него настройки?
Спасибо сказали:
Аватара пользователя
kasak
Сообщения: 893
ОС: OpenBSD
Контактная информация:

Re: PF + SIP (IAX)

Сообщение kasak »

nerve писал(а):
17.10.2013 16:47
пробовал регистрироваться и звонить с клиента, который не за натом, а у котого честный ИП?
что из себя представляет клиент, какие у него настройки?


Только что обновил астериск и попробовал ещё раз - почему-то заработало. Потестирую несколько дней, вдруг опять сломается
Linux kasakoff 5.10.7-200.fc33.x86_64 #1 SMP Tue Jan 12 20:20:11 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Спасибо сказали:
Ответить