我遇到了一个 Asterisk SIP 中继设置问题,该设置涉及多个云环境和一个会话边界控制器 (SBC)。我们的服务提供商 Airtel 要求 SIP 负载来自特定 IP 地址 (192.168.12.12),这是我们运行 Asterisk 16 LTS 的 SBC。但是,当将另一个拨号器连接到 SBC(也在 Asterisk 16 LTS 上)时,Airtel 拒绝了这些呼叫,显然认为它们来自不同的 IP(10.70.1.15),而不是所需的 192.168.12.12。尽管 NAT 配置和设置存在问题,但仍会出现此问题fromdomain
。该设置涉及两个不同的虚拟私有云 (VPC)。
Cloud 1 VPC 用于 Cloud 1 SBC 星号配置
[AIRTELSIP]
host=172.68.78.89 ;public is used here
type=peer
port=5060
canreinvite=yes
context=default
insecure=port,invite
trustrpid=yes
sendrpid=yes
directmedia=no
qualify=yes
fromdomain=192.168.12.12 ;public is used here
nat=yes
dtmfmode=rfc2833
disallow=all
allow=ulaw
allow=alaw
user=phone
[ASTTEST]
context=externalcalls
host=10.70.1.15 ;public is used here
type=peer
port=5060
fromdomain=192.168.12.12 ;public is used here
canreinvite=yes
insecure=port,invite
trustrpid=yes
sendrpid=yes
directmedia=no
qualify=yes
dtmfmode=rfc2833
disallow=all
allow=ulaw
allow=alaw
user=phone
[general]
nat=yes
externip = 192.168.12.12
localnet =10.8.0.5/24
registerattempts=0
registertimeout=60
用于云 1 SBC 星号配置的 extensions.conf
[globals]
[general]
[default]
[externalcalls]
exten => _.,1,NoOp()
exten => _.,n,Dial(SIP/AIRTELSIP/${EXTEN:1})
exten => _.,n,Hangup
sip.conf 连接云端 2 中用户的 PABX/拨号器
[SBCTEST]
context=outgoing
host=192.168.12.12
type=peer
port=5060
canreinvite=yes
insecure=port,invite
trustrpid=yes
sendrpid=yes
directmedia=yes
qualify=yes
dtmfmode=rfc2833
disallow=all
allow=ulaw
allow=alaw
user=phone
nat=yes
fromdomain=192.168.12.12
[100]
type=friend
username=100
callerid=100
secret=Ret26#%@$@GHfdg
context=outgoing
host=dynamic
allow=all
nat=yes
[general]
registerattempts=0
registertimeout=60
nat=yes
externip = 192.168.12.12
localnet =10.8.0.5/24
extensions.conf 连接云端 2 中用户的 PABX/拨号器
[outgoing]
exten => _.,1,NoOp()
exten => _.,n,Dial(SIP/SBCTEST/${EXTEN:1})
exten => _.,n,Hangup
物理图说明了 SBC 和 PABX 的设置,请注意,它们托管在不同的云环境中
问题:
Airtel 拒绝了来自 Cloud 2 (10.70.1.15) 的呼叫,因为它们似乎来自 10.70.1.15,而不是所需的 192.168.12.12,尽管fromdomain
和 NAT 设置。
问题:
如何确保所有 SIP 流量(无论其源自哪个云环境)在 Airtel 看来都来自所需的 IP(192.168.12.12)?为了实现这一点,是否需要在 Asterisk 或网络设置中进行特定配置或调整?
NAT 配置:我已经在 Asterisk 配置文件中配置了 NAT 设置,目的是确保所有流量都来自 IP 192.168.12.12。
fromdomain
环境:在 SBC 和 PABX 配置中,我都设置了fromdomain=192.168.12.12
指定所需的原始 IP 地址。直接媒体:我尝试过启用和禁用
directmedia
设置,因为它控制媒体流是否在端点之间直接发送。网络分析:我进行了网络流量分析以确认 SIP INVITE 确实是从正确的 IP 地址发送的,但 Airtel 似乎仍将源识别为 10.70.1.15。
咨询文档:我查看了 Asterisk 和网络配置文档,以查找我可能遗漏的任何相关设置或参数。
使用不同场景进行测试:我尝试连接来自同一 VPC 和不同 VPC 的呼叫,以隔离该问题是否特定于跨 VPC 通信。
以下是我致电时收到的回复
Using SIP RTP CoS mark 5 -- Called SIP/AIRTELSIP/07042047961 -- Got SIP response 500 "Server Internal Error" back from 172.68.78.89:5060 -- SIP/AIRTELSIP-00000e30 is circuit-busy == Everyone is busy/congested at this time (1:0/1/0)
剩余挑战:
尽管做出了这些努力,问题仍然存在:Airtel 仍然认为呼叫来自 10.70.1.15,而不是 192.168.12.12。我正在寻找有关我还可以尝试什么的见解或建议,或者我是否可能忽略了配置的某个特定方面。