You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CentOS7下FreePBX与GOIP设备SIP注册失败及源IP被替换问题排查求助

CentOS7下FreePBX与GOIP设备SIP注册失败及源IP被替换问题排查求助

大家好,我现在碰到一个棘手的问题,折腾好几天都没搞定,想请教下社区的各位大佬:

我的服务器环境

我用CentOS7搭建了一台FreePBX服务器(也就是下面说的PC1),网卡配置如下:

  • eth0:固定IP 192.168.188.55
  • eth1:加入了br0网桥,网桥内IP是10.147.20.69
  • tap1:同样属于br0网桥,IP 10.147.20.2,用来连接PC2
  • eth1端口上平时接的是GOIP SIP中继设备,偶尔会换成PC3测试

测试的现象对比

正常情况(接PC3时)

  • PC2 ping服务器、ping eth1的IP都能通
  • PC3 ping服务器正常,用SIP客户端注册到FreePBX也完全没问题

异常情况(接GOIP时)

  • 不管是把GOIP当成SIP客户端注册,还是作为中继对接,都注册失败
  • 我用tcpdump -i eth0 src 10.147.20.2抓包分析,发现FreePBX发的SIP Option包有问题:From字段的源IP被莫名替换了——原本应该是2002@10.147.20.2,结果变成了2002@192.168.188.51(这个是eth0的网关地址)

当前的iptables规则

我现在配置的iptables规则如下:

-t nat -A POSTROUTING -o eth1 -j MASQUERADE
-A FORWARD -o eth1 -j ACCEPT
-t nat -A PREROUTING -i ztyqbvbk6k -p tcp --dport 8060  -j DNAT --to 10.147.20.17:80
-A FORWARD -i ztyqbvbk6k -p tcp --dport 80 -d 10.147.20.17 -j ACCEPT
-t nat -A POSTROUTING -o eth0 -j MASQUERADE
-A FORWARD -i eth0 -o zt+ -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i zt+ -o eth0 -j ACCEPT

补充测试信息

  1. 我试过把GOIP直接连到路由器,获取192.168.188.88的IP,这时候FreePBX就能正常注册到GOIP上,说明GOIP本身没问题
  2. 服务器的路由表(执行route -n输出):
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.188.1   0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.0.0.0       U     0      0        0 eth1
10.147.20.0     0.0.0.0         255.255.255.0   U     0      0        0 br0
10.147.20.0     0.0.0.0         255.255.254.0   U     0      0        0 tap1
192.168.188.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0

更新的排查信息

刚才执行了ip route get 10.147.20.2 from 10.147.20.69,结果返回network is unreachable,但之前PC3连eth1的时候,ping 10.147.20.2是完全正常的,这点我有点搞不懂。

想请教的问题

  • 这种场景下需要用到conntrack吗?如果需要的话,怎么检查它的状态或者启用它?
  • 我当前的iptables规则有没有哪里配置错了?会不会是NAT规则导致的源IP替换?
  • 各位大佬还有什么排查方向或者解决建议吗?

备注:内容来源于stack exchange,提问作者SHERIF OMRAN

火山引擎 最新活动