web-dev-qa-db-ja.com

インバウンドSIP Cisco881を介したコールNAT数秒後に電話を切る

最近、WANリンク用にCisco 881ルーターに移動しました。以前は、Cisco Linksys WAG320Nをモデム/ルーター/ WiFi AP/NATファイアウォールとして使用していました。 WAG320Nは現在ブリッジモードで実行されているため、Cisco881のFE4 WANに接続されたLANポートの1つを備えたモデムとして機能しているだけです。

Cisco 881は、ISPからDHCP提供のIPを取得します。私のLANはデフォルトのVLAN 1(192.168.1.0/24)の一部です。一般的なインターネット接続はうまく機能しています。HTTP/ HTTPS/SMTP/etcに静的なNATルールを設定できました。私のLANで実行されているサービス。私がNVI NAT(ip nat enableを従来のip nat outside/ip nat inside)セットアップとは対照的に使用することを選択したことを言及する価値があるかどうかはわかりません。これは、NVIがLANからNATIPへのWANループバックを許可し、LAN上の必要なサーバーに戻ることができるためです。

LAN上でAsterisk1.8 PBXを実行し、インターネット上のSIPプロバイダーに接続します。古いセットアップ(ルーティング/ NATを提供するWAG320N)を介したインバウンドコールとアウトバウンドコールの両方が正常に機能しました。ただし、Cisco 881に移行してから、インバウンドコールは約10秒後にドロップしますが、アウトバウンドコールは正常に機能します。

次のメッセージがAsteriskPBXに記録されます。

[Dec  9 15:27:45] WARNING[27734]: chan_sip.c:3641 retrans_pkt: Retransmission timeout reached on transmission [email protected] for seqno 1 (Critical Response) -- See https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions
Packet timed out after 6528ms with no response
[Dec  9 15:27:45] WARNING[27734]: chan_sip.c:3670 retrans_pkt: Hanging up call [email protected] - no reply to our critical packet (see https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions).

(これは非常に一般的な問題であることを私は知っています-私はこれに2日間の大部分をしっかりと費やし、Googleをトロールしました。)

私は言われ、確認したとおりに完了しました https://wiki.asterisk.org/wiki/display/AST/SIP+Retransmissions 。上記のページの「その他のSIPリクエスト」セクションを参照すると、SIPプロバイダーからのACKがNAT PBXのアスタリスクに。

881のWANインターフェイスにパケットをダンプすることでこれを確認しようとしました。WANインターフェイスに出入りするパケットのPCAPダンプを取得することができました。これは、私のプロバイダーからルーターによって受信されたACKの例です。

689 21.219999   193.x.x.x   188.x.x.x   SIP 502 Request: ACK sip:[email protected] | 

ただし、AsteriskサーバーのSIPトレースは、PBXからの200 OKに応答してACKが受信されていないことを示しています。

http://Pastebin.com/wwHpLPPz

過去に、ルーターやファイアウォールでSIP ALGを無効にすることを強くお勧めしました。インターネット上のこの問題に関する多くの投稿は、これをサポートしているようです。ただし、Cisco IOSでは、SIPALGを無効にするconfigコマンドはno ip nat service sip udp port 5060であると思いますが、これは状況を改善するようには見えません。構成設定が設定されていることを確認するには:

Router1#show running-config | include sip
no ip nat service sip udp port 5060

もう1つの興味深い工夫:短期間、別のプロバイダーを試しました。幸い、トライアルアカウントはまだ利用できるので、現在のプロバイダーと統合する前に、Asteriskの設定をリビジョンに戻しました。その後、トライアルトランクに関連付けられたDDIにダイヤルインしましたが、通話は切断されず、上記のエラーも発生しませんでした。私にとって、これはプロバイダーを指していますが、すべてのプロバイダーがそうであるように、「SIPプロキシに問題はありません-これはファイアウォールです」と言うでしょう。この問題は古いWAG320NルーターではNAT処理を行っていたときに明らかではなかったため、私はこれに同意したくなります。

私もあなたが私の実行設定を見たいと思うでしょう:

!
! Last configuration change at 15:55:07 UTC Sun Dec 9 2012 by xxx
version 15.2
no service pad
service tcp-keepalives-in
service tcp-keepalives-out
service timestamps debug datetime msec localtime show-timezone
service timestamps log datetime msec localtime show-timezone
no service password-encryption
service sequence-numbers
!
hostname Router1
!
boot-start-marker
boot-end-marker
!
!
security authentication failure rate 10 log
security passwords min-length 6
logging buffered 4096
logging console critical
enable secret 4 xxx
!
aaa new-model
!
!
aaa authentication login local_auth local
!
!
!
!
!
aaa session-id common
!
memory-size iomem 10
!
crypto pki trustpoint TP-self-signed-xxx
 enrollment selfsigned
 subject-name cn=IOS-Self-Signed-Certificate-xxx
 revocation-check none
 rsakeypair TP-self-signed-xxx
!
!
crypto pki certificate chain TP-self-signed-xxx
 certificate self-signed 01
    quit
no ip source-route
no ip gratuitous-arps
ip auth-proxy max-login-attempts 5
ip admission max-login-attempts 5
!
!
!
!
!
no ip bootp server
ip domain name dmz.merlin.local
ip domain list dmz.merlin.local
ip domain list merlin.local
ip name-server x.x.x.x
ip inspect audit-trail
ip inspect udp idle-time 1800
ip inspect dns-timeout 7
ip inspect tcp idle-time 14400
ip inspect name autosec_inspect ftp timeout 3600
ip inspect name autosec_inspect http timeout 3600
ip inspect name autosec_inspect rcmd timeout 3600
ip inspect name autosec_inspect realaudio timeout 3600
ip inspect name autosec_inspect smtp timeout 3600
ip inspect name autosec_inspect tftp timeout 30
ip inspect name autosec_inspect udp timeout 15
ip inspect name autosec_inspect tcp timeout 3600
ip cef
login block-for 3 attempts 3 within 3
no ipv6 cef
!
!
multilink bundle-name authenticated
license udi pid Cisco881-SEC-K9 sn 
!
!
username xxx privilege 15 secret 4 xxx
username xxx secret 4 xxx
!
!
!
!
!
ip ssh time-out 60
! 
!
!
!
!
!
!
!
!
interface FastEthernet0
 no ip address
!
interface FastEthernet1
 no ip address
!
interface FastEthernet2
 no ip address
!
interface FastEthernet3
 switchport access vlan 2
 no ip address
!
interface FastEthernet4
 ip address dhcp
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 ip nat enable
 duplex auto
 speed auto
!
interface Vlan1
 ip address 192.168.1.1 255.255.255.0
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 ip nat enable
!
interface Vlan2
 ip address 192.168.0.2 255.255.255.0
!
ip forward-protocol nd
ip http server
ip http access-class 1
ip http authentication local
ip http secure-server
ip http timeout-policy idle 60 life 86400 requests 10000
!
!
no ip nat service sip udp port 5060
ip nat source list 1 interface FastEthernet4 overload
ip nat source static tcp x.x.x.x 80 interface FastEthernet4 80
ip nat source static tcp x.x.x.x 443 interface FastEthernet4 443
ip nat source static tcp x.x.x.x 25 interface FastEthernet4 25
ip nat source static tcp x.x.x.x 587 interface FastEthernet4 587
ip nat source static tcp x.x.x.x 143 interface FastEthernet4 143
ip nat source static tcp x.x.x.x 993 interface FastEthernet4 993
ip nat source static tcp x.x.x.x 1723 interface FastEthernet4 1723
!
!
logging trap debugging
logging facility local2
access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1 permit 192.168.0.0 0.0.0.255
no cdp run
!
!
!
!
control-plane
!
!
banner motd 
Authorized Access only

!
line con 0
 login authentication local_auth
 length 0
 transport output all
line aux 0
 exec-timeout 15 0
 login authentication local_auth
 transport output all
line vty 0 1
 access-class 1 in
 logging synchronous
 login authentication local_auth
 length 0
 transport preferred none
 transport input telnet
 transport output all
line vty 2 4
 access-class 1 in
 login authentication local_auth
 length 0
 transport input ssh
 transport output all
!
!
end

...そして、それが役に立ったら、これが私のアスタリスクSIP configです:

[general]
context=default                 ; Default context for calls
allowoverlap=no                 ; Disable overlap dialing support. (Default is yes)
udpbindaddr=0.0.0.0             ; IP address to bind UDP listen socket to (0.0.0.0 binds to all)
                                ; Optionally add a port number, 192.168.1.1:5062 (default is port 5060)
tcpenable=no                    ; Enable server for incoming TCP connections (default is no)
tcpbindaddr=0.0.0.0             ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces)
                                ; Optionally add a port number, 192.168.1.1:5062 (default is port 5060)
srvlookup=yes                   ; Enable DNS SRV lookups on outbound calls
                                ; Note: Asterisk only uses the first Host
                                ; in SRV records
                                ; Disabling DNS SRV lookups disables the
                                ; ability to place SIP calls based on domain
                                ; names to some other SIP users on the Internet
                                ; Specifying a port in a SIP peer definition or
                                ; when dialing outbound calls will supress SRV
                                ; lookups for that peer or call.
directmedia=no                  ; Don't allow direct RTP media between extensions (doesn't work through NAT)
externhost=<MY DYNDNS HOSTNAME> ; Our external hostname to resolve to IP and be used in NAT'ed packets
localnet=192.168.1.0/24         ; Define our local network so we know which packets need NAT'ing
qualify=yes                     ; Qualify peers by default
dtmfmode=rfc2833                ; Set the default DTMF mode
disallow=all                    ; Disallow all codecs by default
allow=ulaw                      ; Allow G.711 u-law
allow=alaw                      ; Allow G.711 a-law

; ----------------------
; SIP Trunk Registration
; ----------------------

; Orbtalk
register => <MY SIP PROVIDER USER NAME>:[email protected]/<MY DDI>       ; Main Orbtalk number

; ----------
; Trunks
; ----------

[orbtalk]                       ; Main Orbtalk trunk
type=peer
insecure=invite
Host=sipgw3.orbtalk.co.uk
nat=yes
username=<MY SIP PROVIDER USER NAME>
defaultuser=<MY SIP PROVIDER USER NAME>
fromuser=<MY SIP PROVIDER USER NAME>
secret=xxx
context=inbound

どこに行けばいいのか本当にわかりません。誰かが私にこれらの電話が途絶えている理由を見つけるのを手伝ってくれるなら、あなたがチャイムを入れてくれれば私は感謝します!さらに情報が必要な場合はお知らせください。

更新2012年10月12日(1)

@GerryEganは、次の静的NATを追加することを提案しました。ip nat source static udp 192.168.1.2 5060 interface FastEthernet 4 5060これで問題は解決したようですが、5060でブルートフォース攻撃を受ける可能性があります。

@GerryEganはまた、検査ルールを提案しました:WANインターフェースのip inspect name autosec_inspect sip...および(config-if)#ip inspect autosec_inspect in NAT NVI変換をクリアした後でも、これだけでは問題を解決します。

ドロップされたインバウンドコールのdebug ip nat sipは次のとおりです: http://Pastebin.com/3WHPcyDD

注:上記のno ip nat service sip udp port 5060構成設定を試しても、debug ip nat sipからデバッグ出力が得られないため、今のところ、構成にデフォルトのip nat service sip udp port 5060があります。これと物事を混同していません。

さらに悪いことに、私の静的なNAT NVIルールは、ルーターのリロードで混乱しているようです:-(。これは別の問題ですが、応答に何らかの影響がある可能性があります。

UPDATE 2012年12月12日(2):アスタリスクによって通話が切断されると、/var/log/syslogに次のように表示されます。

Dec 10 20:02:39 <PBX> asterisk[26620]: rc_avpair_new: unknown attribute 1490026597

更新2012年11月12日

@GerryEganは追加を提案しました:

access-list 101 permit udp X.X.X.X 0.0.0.255 Host 1.2.3.4 eq 5060
access-list 101 deny   udp any any eq 5060
access-list 101 permit ip any any

そして

interface FastEthernet4
ip access-group 101 in

私は理論を見ることができたので、これが機能することを期待していましたが、残念ながらそうではありませんでした。

これは奇妙なことです。以前に私がSIPを同じプロバイダーやPBXなどに処理し、構成やNATを必要としないためです。これにより、新しい881を再構築するように促されました。完全を期すために、現在の構成は次のとおりです。

!
! Last configuration change at 20:20:15 UTC Tue Dec 11 2012 by xxx
version 15.2
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname xxx
!
boot-start-marker
boot-end-marker
!
!
enable secret 4 xxxx
!
aaa new-model
!
!
aaa authentication login local_auth local
!
!
!
!
!
aaa session-id common
!
memory-size iomem 10
!
crypto pki trustpoint TP-self-signed-xxx
 enrollment selfsigned
 subject-name cn=IOS-Self-Signed-Certificate-xxx
 revocation-check none
 rsakeypair TP-self-signed-xxx
!
!
crypto pki certificate chain TP-self-signed-xxx
 certificate self-signed 01
  xxx
    quit
ip gratuitous-arps
ip auth-proxy max-login-attempts 5
ip admission max-login-attempts 5
!
!
!
!
!
ip domain list dmz.xxx.local
ip domain list xxx.local
ip domain name dmz.xxx.local
ip name-server 192.168.1.x
ip cef
login block-for 3 attempts 3 within 3
no ipv6 cef
!
!
multilink bundle-name authenticated
license udi pid Cisco881-SEC-K9 sn xxx
!
!
username admin privilege 15 secret 4 xxx
username joe secret 4 xxx
!
!
!
!
!
ip ssh time-out 60
! 
!
!
!
!
!
!
!
!
interface FastEthernet0
 no ip address
!
interface FastEthernet1
 no ip address
!
interface FastEthernet2
 no ip address
!
interface FastEthernet3
 switchport access vlan 2
 no ip address
!
interface FastEthernet4
 ip address dhcp
 ip access-group 101 in
 ip nat enable
 duplex auto
 speed auto
!
interface Vlan1
 ip address 192.168.1.x 255.255.255.0
 no ip redirects
 no ip unreachables
 no ip proxy-arp
 ip nat enable
!
interface Vlan2
 ip address 192.168.0.x 255.255.255.0
!
ip forward-protocol nd
ip http server
ip http access-class 1
ip http authentication local
ip http secure-server
!
!
ip nat source list 1 interface FastEthernet4 overload
ip nat source list 2 interface FastEthernet4 overload
ip nat source static tcp 192.168.1.x 1723 interface FastEthernet4 1723
!
!
access-list 1 permit 192.168.0.0 0.0.0.255
access-list 2 permit 192.168.1.0 0.0.0.255
access-list 101 permit udp 193.x.x.0 0.0.0.255 any eq 5060
access-list 101 deny   udp any any eq 5060
access-list 101 permit ip any any
!
!
!
!
control-plane
!
!
banner motd 
Authorized Access only

!
line con 0
 exec-timeout 15 0
 login authentication local_auth
line aux 0
 exec-timeout 15 0
 login authentication local_auth
line vty 0 4
 access-class 2 in
 login authentication local_auth
 length 0
 transport input all
!
!
end

私がaccess-list 101 permit udp 193.x.x.0 0.0.0.255 any eq 5060ではなくaccess-list 101 permit udp X.X.X.X 0.0.0.255 Host 1.2.3.4 eq 5060を使用していることに気づくでしょう。その理由は、私のWAN IPはDHCPによって提供されているため、Hostの後に入力するIPを設定していません。これが有効な代替品(?)であることを願っています。

繰り返しますが、繰り返しますが、このSIPプロバイダーは、NAT、ファイアウォールの構成なしで、古い「ホーム」Linksys WAG320Nで完全に動作しました。 SIP ALGは、そのシステムではデフォルトで無効になっています。

もう1つの興味深い点-現時点では、このルーターを介してNAT PPTPインバウンドすることができません。 GREトラフィックが通過していないようです。 2つが同じではないことはわかっていますが、ルーターが各プロトコルのトラフィックを正しくNATするのを妨げているのは、同じ根本的な構成の問題である可能性があります-間違ったツリーを吠えている可能性があります...

UPDATE 16/12/2012

Asteriskのsip.confでlocalnet=192.168.1.0/24をコメントアウトすると、改善が見られました。この設定を省略した場合、電話を切らずに着信を受信できます。

これは問題の修正と見なすことができることは知っていますが、ファイアウォール/ルーターとしてWAG320Nの背後に配置されていたときにPBXがこの設定で6か月間機能した理由を説明していません。これを念頭に置いて、誰かがこれ以上のアイデアを持っていますか? localnetディレクティブをコメントアウトすることは私の頭の中に正しくありません。古いルーターでうまく機能した場合、これを永続的な解決策として信頼することには消極的です。

3
JoeNyland

NATオーバーロードを実行し、インターフェイスを使用して展開した複数の881で問題が発生しました。ほとんどの場合、WANリンクを静的IPにし、IP natoverloadコマンドをそれに変更すると、通話や電話のフリーズに関する問題のほとんどが修正されました。幸運を

1
Raul

NATと検査ルールを追加することで問題が解決したが、インターネットへのポートを開きたくない場合は、WANインターフェイスにアクセスリストを追加して、ポート5060のトラフィックのみを許可します。 SIPプロバイダーのIPアドレスの範囲から?次のようなものが必要になります。

access-list 101 permit udp X.X.X.X 0.0.0.255 Host 1.2.3.4 eq 5060
access-list 101 deny   udp any any eq 5060
access-list 101 permit ip any any

ここで、X.X.X.X/24はSIPプロバイダーの範囲であり、1.2.3.4は外部IPです。次に、それを外部インターフェイスに適用します。

interface FastEthernet4
ip access-group 101 in

NATルールで完全に修正され、別の方法で機能させるために削除したのか、それともNATルールでまだ機能しないのか、アップデートからはわかりません。 NATはそれを修正し、アクセスリストを追加すれば問題ないはずです。さらに問題がある場合はお知らせください。

0
GerryEgan

1か月間、同じ問題が2つのVPS間でジャンプしました。1つは電力不足ですが、問題なく動作し、もう1つは電力不足で同じ問題が発生しています。答えがないままインターネットを一周して、問題が見つかるまでテストを続けなければなりませんでした。 FreePBX Advance設定で「qualify = no」を設定すると、すべてが機能し始めました。

唯一の原因はQualifyです。

0
Joe Crowman