使用端口转发收听对话

时间:2014-01-03 18:07:18

标签: linux iptables portforwarding pjsip netcat

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

所以这就是我所做的:

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

和第二台Linux机器 Linux B 具有以下标识:IP:192.168.1.22 UDP port# : 2222

如果我使用 IPtables 执行以下操作,我应该能够听到在 Linux C上 linux B 上收到的那一方的对话(使用以下身份信息:IP:192.168.1.33 UDP 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上没有任何东西。 任何人都可以告诉我为什么这不起作用?其他策略也是受欢迎的。

1 个答案:

答案 0 :(得分:0)

最初,看到两个小问题:

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

希望这有帮助