Vlad1983 писал(а):покажите дамп на машине с астериском
собственно, начнем.
Вариант реализации с nat'ом
первое что хотелось бы отметить
astsrv ~ # iptables -L
Код: Выделить всё
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
далее текущий конфиг на сервере
[general]
context=public
allowoverlap=no
bindport=5060
bindaddr=0.0.0.0
udpbindaddr=0.0.0.0
tcpenable=no
transport=udp
srvlookup=no
allowguest=no
dtmfmode=rfc2833
disallow=all
allow=alaw
language=ru
alwaysauthreject=yes
t38pt_udptl=yes
canreinvite=no
localnet=192.168.0.0/255.255.255.0
externip=88.87.76.35
register => 78442526660:**************:526660@188.187.253.3:5060
[ertelecom-in](!)
type=peer
context=incoming
nat=no
insecure=port,invite
[ertelecom-in-1](ertelecom-in)
host=188.187.253.1
[ertelecom-in-2](ertelecom-in)
host=188.187.253.2
[ertelecom-in-3](ertelecom-in)
host=188.187.253.3
[ertelecom-line](!)
t38pt_udptl=yes,redundancy,maxdatagram=400
type=peer
host=188.187.253.3
call-limit=1
nat=force_rport,comedia
directmedia=yes
[ertelecom526660](ertelecom-line)
username=78442526660
fromuser=78442526660
secret=**************
далее немного настроек
[general]
rtpstart=10000
rtpend=20000
[general]
udptlstart=4000
udptlend=4999
;udptlchecksums=no
udptlfecentries = 3
udptlfecspan = 3
use_even_ports = no
настройки фаервола на шлюзе
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -F
iptables -F
iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT
iptables -P FORWARD DROP
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j SNAT --to-source 88.87.76.35
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source 192.168.0.51
#проброс asterisk
iptables -t nat -A PREROUTING -p udp -d 192.168.0.51 --dport 5060 -j DNAT --to-destination 192.168.0.65:5060
iptables -t nat -A POSTROUTING -p udp --dst 192.168.0.65 --dport 5060 -j SNAT --to-source 192.168.0.51
iptables -t nat -A PREROUTING -p udp --dport 5060 -i ppp0 -j DNAT --to 192.168.0.65
#проброс asterisk
iptables -t nat -A PREROUTING -p udp -d 192.168.0.51 --dport 4000:4999 -j DNAT --to-destination 192.168.0.65
iptables -t nat -A POSTROUTING -p udp --dst 192.168.0.65 --dport 4000:4999 -j SNAT --to-source 192.168.0.51
iptables -t nat -A PREROUTING -p udp --dport 4000:4999 -i ppp0 -j DNAT --to 192.168.0.65
iptables -t nat -A PREROUTING -p udp -d 192.168.0.51 --dport 10000:20000 -j DNAT --to-destination 192.168.0.65
iptables -t nat -A POSTROUTING -p udp --dst 192.168.0.65 --dport 10000:20000 -j SNAT --to-source 192.168.0.51
iptables -t nat -A PREROUTING -p udp --dport 10000:20000 -i ppp0 -j DNAT --to 192.168.0.65
iptables -A FORWARD -m iprange --dst-range 192.168.0.1-192.168.0.254 -j ACCEPT
iptables -A FORWARD -m iprange --src-range 192.168.0.1-192.168.0.254 -j ACCEPT
собственно имеем в такой компоновке:
1. исходящие звонки вполне себе работают (и соединение есть и голос в обе стороны)
2. отправка факса. звоним на внешний номер, sip соединение устанавливается, есть звук в обе стороны, далее с помощью SendFAX с опциями dfzs успешно проходит факс с использованием t38. лог отправки факса можно посмотреть тут
http://mdc-vlg.ru/astsrv.fax.nat.dump (снимался на сервере при помощи tcpdump -nn -v -s0 port 5060 or portrange 4000-4999 or portrange 10000-20000)
3. а вот при попытке сделать входящий звонок - беда.
лог с сервера
Код: Выделить всё
19:15:12.937845 IP (tos 0xb8, ttl 62, id 51650, offset 0, flags [DF], proto UDP (17), length 1141)
192.168.0.51.1149 > 192.168.0.65.5060: SIP, length: 1113
INVITE sip:s@88.87.76.35:5060 SIP/2.0
Via: SIP/2.0/UDP 188.187.253.2:5161;rport;branch=z9hG4bK-3793281038-3809572128-4082921892-1817713916
From: "78442374901" <sip:78442374901@188.187.253.2:5161;user=phone>;tag=470933518-3809572128-4082921892-1817713916
To: <sip:78442526660@88.87.76.35;user=phone>
Call-ID: 0ee0114e207511e3a4715cf3fc1c586c@188.187.253.2
CSeq: 1 INVITE
Contact: "78442374901" <sip:78442374901@188.187.253.2:5161;user=phone>
Content-Type: application/sdp
Allow: ACK, BYE, CANCEL, INFO, INVITE, OPTIONS, REFER, REGISTER, SUBSCRIBE, UPDATE
Max-Forwards: 70
User-Agent: MERA MVTS3G v.4.3.0-38t
Cisco-Guid: 248558568-544543203-2758892787-4229716076
Content-Length: 415
v=0
o=- 1379517314 1379517314 IN IP4 188.187.253.2
s=-
c=IN IP4 188.187.253.2
t=0 0
m=audio 42136 RTP/AVP 8 0 18 97 98 99 96
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:97 G729/8000
a=fmtp:97 annexb=yes
a=rtpmap:98 G729/8000
a=fmtp:98 annexb=no
a=rtpmap:99 G729/8000
a=fmtp:99 annexb=yes
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-15
a=sendrecv
19:15:12.938166 IP (tos 0x0, ttl 64, id 541, offset 0, flags [none], proto UDP (17), length 670)
192.168.0.65.5060 > 192.168.0.51.1149: SIP, length: 642
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 188.187.253.2:5161;branch=z9hG4bK-3793281038-3809572128-4082921892-1817713916;received=192.168.0.51;rport=1149
From: "78442374901" <sip:78442374901@188.187.253.2:5161;user=phone>;tag=470933518-3809572128-4082921892-1817713916
To: <sip:78442526660@88.87.76.35;user=phone>;tag=as083e2094
Call-ID: 0ee0114e207511e3a4715cf3fc1c586c@188.187.253.2
CSeq: 1 INVITE
Server: Asterisk PBX 11.5.1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="12e41015"
Content-Length: 0
19:15:12.939307 IP (tos 0xb8, ttl 62, id 51651, offset 0, flags [DF], proto UDP (17), length 489)
192.168.0.51.1149 > 192.168.0.65.5060: SIP, length: 461
ACK sip:s@88.87.76.35:5060 SIP/2.0
Via: SIP/2.0/UDP 188.187.253.2:5161;rport;branch=z9hG4bK-3793281038-3809572128-4082921892-1817713916
From: "78442374901" <sip:78442374901@188.187.253.2:5161;user=phone>;tag=470933518-3809572128-4082921892-1817713916
To: <sip:78442526660@88.87.76.35;user=phone>;tag=as083e2094
Call-ID: 0ee0114e207511e3a4715cf3fc1c586c@188.187.253.2
CSeq: 1 ACK
Max-Forwards: 70
User-Agent: MERA MVTS3G v.4.3.0-38t
Content-Length: 0
лог со шлюза
Код: Выделить всё
19:15:14.682838 IP (tos 0xb8, ttl 63, id 51650, offset 0, flags [DF], proto UDP (17), length 1141) 188.187.253.2.5161 > 88.87.76.35.5060: SIP, length: 1113
INVITE sip:s@88.87.76.35:5060 SIP/2.0
Via: SIP/2.0/UDP 188.187.253.2:5161;rport;branch=z9hG4bK-3793281038-3809572128-4082921892-1817713916
From: "78442374901" <sip:78442374901@188.187.253.2:5161;user=phone>;tag=470933518-3809572128-4082921892-1817713916
To: <sip:78442526660@88.87.76.35;user=phone>
Call-ID: 0ee0114e207511e3a4715cf3fc1c586c@188.187.253.2
CSeq: 1 INVITE
Contact: "78442374901" <sip:78442374901@188.187.253.2:5161;user=phone>
Content-Type: application/sdp
Allow: ACK, BYE, CANCEL, INFO, INVITE, OPTIONS, REFER, REGISTER, SUBSCRIBE, UPDATE
Max-Forwards: 70
User-Agent: MERA MVTS3G v.4.3.0-38t
Cisco-Guid: 248558568-544543203-2758892787-4229716076
Content-Length: 415
v=0
o=- 1379517314 1379517314 IN IP4 188.187.253.2
s=-
c=IN IP4 188.187.253.2
t=0 0
m=audio 42136 RTP/AVP 8 0 18 97 98 99 96
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:97 G729/8000
a=fmtp:97 annexb=yes
a=rtpmap:98 G729/8000
a=fmtp:98 annexb=no
a=rtpmap:99 G729/8000
a=fmtp:99 annexb=yes
a=rtpmap:96 telephone-event/8000
a=fmtp:96 0-15
a=sendrecv
19:15:14.683548 IP (tos 0x0, ttl 63, id 541, offset 0, flags [none], proto UDP (17), length 670) 88.87.76.35.5060 > 188.187.253.2.5161: SIP, length: 642
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 188.187.253.2:5161;branch=z9hG4bK-3793281038-3809572128-4082921892-1817713916;received=192.168.0.51;rport=1149
From: "78442374901" <sip:78442374901@188.187.253.2:5161;user=phone>;tag=470933518-3809572128-4082921892-1817713916
To: <sip:78442526660@88.87.76.35;user=phone>;tag=as083e2094
Call-ID: 0ee0114e207511e3a4715cf3fc1c586c@188.187.253.2
CSeq: 1 INVITE
Server: Asterisk PBX 11.5.1
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
WWW-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="12e41015"
Content-Length: 0
19:15:14.684418 IP (tos 0xb8, ttl 63, id 51651, offset 0, flags [DF], proto UDP (17), length 489) 188.187.253.2.5161 > 88.87.76.35.5060: SIP, length: 461
ACK sip:s@88.87.76.35:5060 SIP/2.0
Via: SIP/2.0/UDP 188.187.253.2:5161;rport;branch=z9hG4bK-3793281038-3809572128-4082921892-1817713916
From: "78442374901" <sip:78442374901@188.187.253.2:5161;user=phone>;tag=470933518-3809572128-4082921892-1817713916
To: <sip:78442526660@88.87.76.35;user=phone>;tag=as083e2094
Call-ID: 0ee0114e207511e3a4715cf3fc1c586c@188.187.253.2
CSeq: 1 ACK
Max-Forwards: 70
User-Agent: MERA MVTS3G v.4.3.0-38t
Content-Length: 0
итог: фейл.
Вариант без ната
настройки фаервола на сервере не меняем.
[general]
context=public
allowoverlap=no
bindport=5060
bindaddr=0.0.0.0
udpbindaddr=0.0.0.0
tcpenable=no
transport=udp
srvlookup=no
allowguest=no
dtmfmode=rfc2833
disallow=all
allow=alaw
language=ru
alwaysauthreject=yes
t38pt_udptl=yes
canreinvite=no
;;;;;;;;;;;;;localnet=192.168.0.0/255.255.255.0
;;;;;;;;;;;;;externip=88.87.76.35
register => 78442526660:****************:526660@188.187.253.3:5060
[ertelecom-in](!)
type=peer
context=incoming
nat=no
insecure=port,invite
[ertelecom-in-1](ertelecom-in)
host=188.187.253.1
[ertelecom-in-2](ertelecom-in)
host=188.187.253.2
[ertelecom-in-3](ertelecom-in)
host=188.187.253.3
[ertelecom-line](!)
t38pt_udptl=yes,redundancy,maxdatagram=400
type=peer
host=188.187.253.3
call-limit=1
;;;;;;;;;;;;;;nat=force_rport,comedia
nat=no
directmedia=yes
[ertelecom526660](ertelecom-line)
username=78442526660
fromuser=78442526660
secret=****************
настройки iptables на шлюзе аналогичны тем что выше, но без блока "проброс asterisk", т.е. 5060 не пробрасываем, только rtp и udptl
в сухом остатке:
1. исходящая связь работает, устанавливается соединение, есть звук в обе стороны
2. входящая связь работает, устанавливается соединение, есть звук в обе стороны
3. а вот факс увы не отправляется (устанаваливаеся исходящее sip соединение, имеем звук в обе стороны, отправляем факс с помощью SendFAX с опциями dfzs и получаем что наш астериск не услышал факс, а на факсе видим что он не услышал астериск...
логи тут поинтереснее:
дамп со шлюза (снимался при помощи tcpdump -nn -v -s0 \(port 5060 or portrange 4000-4999 or portrange 10000-20000\) and \(src 188.187.253.3 or dst 188.187.253.3 or src 188.187.253.1 or dst 188.187.253.1 or src 188.187.253.2 or dst 188.187.253.2 or src 192.168.0.65 or dst 192.168.0.65\) )
http://mdc-vlg.ru/mgsrv.fax.nonat.dump
и дамп с самого сервера
http://mdc-vlg.ru/astsrv.fax.nonat.dump
итог: фейл.
P.S. потратил несколько часов на полную аналитику и разбор полетов. все привел как можно подробнее, чтобы было как можно меньше неясностей. заранее всем спасибо.