SIP 协议
程序 A: 127.0.0.1:5050 -> 程序 B: 127.0.0.1:5060
我想在中间加一个过滤层怎么办, 有什么可行的方案么?
程序 A 的代码没法改(二进制). B 有 N 个且各种语言实现(比较繁琐).
1
azh7138m 2019-08-28 10:55:14 +08:00
自己写个 relay ?实现可以参考 https://github.com/docker/go-connections/blob/master/proxy/udp_proxy.go 并不会很麻烦
|
3
robot1 2019-08-28 11:04:13 +08:00
linux 和 windows 都可以开发过滤驱动拦截数据包,窜改,查看 都可以支持了
|
4
LeeSeoung 2019-08-28 11:06:03 +08:00
中间做个代理层,不是设置 是把本身 A 想连接 B 的端口 替换为 proxy,proxy 处理完再转发给 B
|
5
azh7138m 2019-08-28 11:06:32 +08:00 2
A -> relay -> B
相当于 udp 反代,不是正向代理,不需要配置 A |
7
XiaoxiaoPu 2019-08-28 11:08:06 +08:00
@YakuMioto linux 的话可以试试用 iptables 重定向下 www.cyberciti.biz/faq/linux-port-redirection-with-iptables/
|
8
sujin190 2019-08-28 11:34:44 +08:00
@YakuMioto #2 不支持 proxy,总不能 ip 端口都不能设置把,设置成 relay 地址端口,有这台机器来转发不就可以过滤了
|
9
MMMMMMMMMMMMMMMM 2019-08-28 13:02:10 +08:00
也可以 debug 一下 A,hook 他的 socket send 地址,直接指向至你的自制中间人程序。
|
10
undefinedList 2019-08-28 14:22:25 +08:00
win 下我之前写过 lsp 的,就是 winsock 支持的代理层吧。可以做到拦截指定端口的流量并做任何操作。
关键字:winsock lsp |
11
DoctorCat 2019-08-28 15:15:11 +08:00
最简单的就是做反向代理,最复杂的就是写 Netfilter Hooks 或用动态链接库的 HOOK 大法
|