大佬们, 请教一个 UDP 数据拦截过滤问题

2019-08-28 10:48:40 +08:00
 YakuMioto

SIP 协议

程序 A: 127.0.0.1:5050 -> 程序 B: 127.0.0.1:5060

我想在中间加一个过滤层怎么办, 有什么可行的方案么?

程序 A 的代码没法改(二进制). B 有 N 个且各种语言实现(比较繁琐).

2480 次点击
所在节点    程序员
12 条回复
azh7138m
2019-08-28 10:55:14 +08:00
自己写个 relay ?实现可以参考 https://github.com/docker/go-connections/blob/master/proxy/udp_proxy.go 并不会很麻烦
YakuMioto
2019-08-28 11:02:10 +08:00
@azh7138m 但是 程序 A 和 B 并不支持设置 proxy ..
robot1
2019-08-28 11:04:13 +08:00
linux 和 windows 都可以开发过滤驱动拦截数据包,窜改,查看 都可以支持了
LeeSeoung
2019-08-28 11:06:03 +08:00
中间做个代理层,不是设置 是把本身 A 想连接 B 的端口 替换为 proxy,proxy 处理完再转发给 B
azh7138m
2019-08-28 11:06:32 +08:00
A -> relay -> B
相当于 udp 反代,不是正向代理,不需要配置 A
YakuMioto
2019-08-28 11:06:58 +08:00
@robot1 用什么形式实现呢? iptable 可行么?
XiaoxiaoPu
2019-08-28 11:08:06 +08:00
@YakuMioto linux 的话可以试试用 iptables 重定向下 www.cyberciti.biz/faq/linux-port-redirection-with-iptables/
sujin190
2019-08-28 11:34:44 +08:00
@YakuMioto #2 不支持 proxy,总不能 ip 端口都不能设置把,设置成 relay 地址端口,有这台机器来转发不就可以过滤了
MMMMMMMMMMMMMMMM
2019-08-28 13:02:10 +08:00
也可以 debug 一下 A,hook 他的 socket send 地址,直接指向至你的自制中间人程序。
undefinedList
2019-08-28 14:22:25 +08:00
win 下我之前写过 lsp 的,就是 winsock 支持的代理层吧。可以做到拦截指定端口的流量并做任何操作。
关键字:winsock lsp
DoctorCat
2019-08-28 15:15:11 +08:00
最简单的就是做反向代理,最复杂的就是写 Netfilter Hooks 或用动态链接库的 HOOK 大法
YakuMioto
2019-09-16 18:18:52 +08:00
@azh7138m 感谢啊,反代可行~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/595773

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX