MikroTik双PPPoE+WireGuard环境下SIP Trunk路由配置求助
嗨,这个场景我之前处理过类似的,给你一步步拆解配置思路和具体命令,应该能解决你的问题~
首先明确核心目标:让来自运营商xxx.xxx.16.0/24的流量,通过WireGuard链路导向站点A的备用SIP地址192.168.0.248,同时保证这条路由规则只作用于相关SIP流量,不影响其他业务。
第一步:先确认基础连通性
先确保站点B能ping通站点A的192.168.0.248,如果不通,先排查WireGuard的基础路由配置(比如两边有没有加静态路由让两个局域网段互通)。基础连通没问题再往下走。
第二步:给SIP专用FIB表加路由条目
在站点B上,把到运营商xxx.xxx.16.0/24的回程路由指向站点A的192.168.0.248,并放到你创建的SIP路由表中:
/ip route add dst-address=xxx.xxx.16.0/24 gateway=192.168.0.248 routing-table=SIP
小提示:如果站点A的WireGuard地址(比如
10.10.10.1)是站点B到A的下一跳,gateway也可以填这个WG地址,直接用192.168.0.248更直观,前提是两边局域网路由已打通。
第三步:配置路由规则触发专用表
要让符合条件的流量使用SIP表,分两种场景配置:
场景1:站点B的SIP中继主动发起的流量
如果是站点B的SIP中继主动向运营商网段发起注册/呼叫,按中继设备的源IP匹配(假设中继IP是192.168.5.10):
/ip route rule add src-address=192.168.5.10/32 action=lookup routing-table=SIP
场景2:运营商主动发往站点B的SIP流量
如果是运营商那边主动推送的SIP流量,按站点B的PPPoE出口IP(假设是yyy.yyy.yyy.yyy)匹配:
/ip route rule add dst-address=yyy.yyy.yyy.yyy/32 action=lookup routing-table=SIP
要是不确定精准IP,也可以用SIP常用端口匹配(UDP 5060、TCP 5060/5061),不过按IP匹配更精准:
/ip route rule add protocol=udp dst-port=5060 action=lookup routing-table=SIP /ip route rule add protocol=tcp dst-port=5060,5061 action=lookup routing-table=SIP
第四步:站点A的配套优化(可选但建议)
在站点A上,加一条反向路由确保192.168.0.248的回复流量能正确走WireGuard回站点B:
/ip route add dst-address=xxx.xxx.16.0/24 gateway=10.10.10.2 routing-table=main
这里的
10.10.10.2是站点B的WireGuard地址,根据你的实际网段调整。
最后验证配置
配置完成后,在站点B用以下命令检查:
ip route print routing-table=SIP:查看SIP表的路由是否存在ip route rule print:查看路由规则是否生效
然后测试SIP中继的注册状态,如果还是有问题,可以抓包看流量走向,确认路由规则是否正确触发。有不清楚的地方随时问我!
备注:内容来源于stack exchange,提问作者spjohnys

