【问题标题】:listen to a conversation using port forwarding使用端口转发收听对话
【发布时间】:2014-01-03 18:07:17
【问题描述】:

我已经能够使用 SIP 客户端 Pjsua 从一台 Linux 计算机向另一台计算机拨打电话。如果你没有听说过这个用户代理,解释它的功能很容易。它使用每个 linux 的 IP 和端口号来创建一个唯一的 ID,然后调用这个特定的 ID 是可能的。 现在我还没有那么彻底地研究端口转发,但我想它所做的是将其中的任何数据转发到另一个“端口”或“IP 和端口”。 所以我想如果我的调用应用程序使用端口和 IP 来发送和接收语音,我应该能够将这些特定端口转发到第二个或第三个端口(或 IP 和端口)并在第三台计算机上收听对话。

这就是我所做的:

假设 linux A 机器 具有以下标识信息:IP:192.168.1.11UDP port# : 1111

第二台Linux机器,Linux B有如下标识:IP:192.168.1.22UDP port# : 2222

如果我使用 IPtables 执行以下操作,我应该能够在 Linux C 上听到在 linux B 上接收到的对话内容strong>(带有以下标识信息:IP:192.168.1.33UDP port# : 3333

在 Linux B 上运行:

iptables -t nat -A PREROUTING -p udp --dport 2222 -j DNAT
--to-destination 192.168.1.33:3333    //forward port 2222 to Linux C on port 3333

在 linux C 上运行:

aplay | nc -l -u 3333     //listen on the specified UDP port 

但我在 linux C 上什么都没有。 谁能告诉我为什么这不起作用?也欢迎使用其他策略。

【问题讨论】:

  • 路由是否在 linux B ( /proc/sys/net/ipv4/ip_forward '1' ) 上激活,作为 iptable 链 FORDWARD 策略接受。更多的 SIP 是一个复杂的协议,控制连接与数据流不同,并且有许多 NAT 穿越机制......不是那么容易。总体目标是什么,挖掘和现有流量? forwarding 只会转发它(因此如果你听某人他不会得到它的语音数据......)......

标签: linux iptables portforwarding pjsip netcat


【解决方案1】:

一开始,看看两个可能的小问题:

  • 在 Linux B 中:您还应该在 FORDWARD 链中具有 ACCEPT 策略。
  • 在 Linux C 中:您应该在监听命令行上反转 aplaync 顺序:nc -l -u 3333 | aplay

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-22
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 2017-05-11
    • 2020-06-24
    • 2019-04-25
    相关资源
    最近更新 更多