O asterisco não usa externip

2

Estou tentando configurar um servidor Asterisk na nuvem que está por trás de um NAT com o exemplo hello-world. Eu tenho problemas de NAT. O endereço IP que o Asterisk está fornecendo ao cliente através do SDP é seu endereço local atrás do NAT, não o endereço externo.

Eu tentei definir o valor externip em sip.conf , mas isso parece não ter efeito.

[general]
externip=xxx.yyy.zzz.vvv
nat=yes
tcpenable=yes

O SDP recebido no cliente não é consistente com a configuração externip do servidor:

v=0
o=root 291445984 291445984 IN IP4 172.31.46.110
s=Asterisk PBX 11.7.0~dfsg-1ubuntu1
c=IN IP4 172.31.46.110
t=0 0
m=audio 10078 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
m=video 0 RTP/AVP 96

Espero que o endereço no SDP corresponda ao fornecido no campo externip . Eu tentei o endereço IP real, bem como o nome do servidor, que resolve corretamente o endereço IP através do DNS.

Estou configurando o valor externip incorretamente? Ou há uma configuração diferente necessária para que o Asterisk anuncie seu endereço IP externo?

    
por mattm 16.07.2015 / 04:56

1 resposta

4

Você esqueceu de definir localnet . O arquivo de configuração avisou que você precisa definir isso como igual ao netblock de sua rede local.

;----------------------------------------- NAT SUPPORT ------------------------
;
; WARNING: SIP operation behind a NAT is tricky and you really need
; to read and understand well the following section.
;
; When Asterisk is behind a NAT device, the "local" address (and port) that
; a socket is bound to has different values when seen from the inside or
; from the outside of the NATted network. Unfortunately this address must
; be communicated to the outside (e.g. in SIP and SDP messages), and in
; order to determine the correct value Asterisk needs to know:
;
; + whether it is talking to someone "inside" or "outside" of the NATted network.
;   This is configured by assigning the "localnet" parameter with a list
;   of network addresses that are considered "inside" of the NATted network.
;   IF LOCALNET IS NOT SET, THE EXTERNAL ADDRESS WILL NOT BE SET CORRECTLY.
;   Multiple entries are allowed, e.g. a reasonable set is the following:
;
;      localnet=192.168.0.0/255.255.0.0 ; RFC 1918 addresses
;      localnet=10.0.0.0/255.0.0.0      ; Also RFC1918
;      localnet=172.16.0.0/12           ; Another RFC1918 with CIDR notation
;      localnet=169.254.0.0/255.255.0.0 ; Zero conf local network

Geralmente, é bom simplesmente descomentar todas as quatro diretivas localnet do exemplo e chamá-la por dia.

(E você deve reclamar muito alto sobre a falta de suporte IPv6 do seu provedor de serviços ...)

    
por 16.07.2015 / 05:02

Tags