我有一个内核为 2.6.39 的 Linux 网关,通过 vpnc 连接到 Cisco ASA 5500。我使用带有伪装和转发功能的 iptables 为连接到 VPN 的 tun0 设备提供 LAN 访问权限。
我的 Cisco IP 电话 7941 可以连接到呼叫管理器,但建立呼叫后我只能获得单向音频。我的 LAN 网关上的 tcpdump -i any 显示 rtp 流量源自我的电话 lan IP,然后被 NAT 到 tun0 地址,最后通过封装在 esp 中的我的 ext 接口。tun0 接口上的 tcpdump 仅显示从 tun0 src IP 流向 rtp 目的地的流量。从我的 LAN 的角度来看,出站 rtp 流量正在正确转换。
但是,asa 系统日志显示我的 lan IP 地址(而不是我的 tun0 地址)被丢弃在远程 VPN 服务器上。有什么建议可以继续进行故障排除吗?
答案1
从http://docwiki.cisco.com/wiki/Cisco_Unified_Communications_--_One-Way_Audio:
“单向或无向音频的一个常见原因是两个端点之间存在网络地址转换 (NAT)、端口地址转换 (PAT) 或防火墙。SCCP 协议将 IP 地址嵌入 IP 数据包的有效负载中,以指示将 RTP 数据包发送到哪个 IP 地址。如果执行 NAT 或 PAT 的设备不知道这一事实,则不会转换嵌入的 IP 地址。因此,导致单向或无向音频。”
使用http://oisec.net/download/skinny/1.48/skinny-proxy.pl在您的网关上。它将监听端口 2000,并将来自您的 IP 电话的呼叫重定向到呼叫管理器。使用:
iptables -t nat -A PREROUTING -i $LAN_IFACE -p tcp --dport 2000 -j REDIRECT --to-ports 2000
将 LAN 流量重定向到 skinny-proxy。有效。