我有一台在端口 50000 上运行 UDP 服务器的服务器。该服务器接收来自客户端的更新,并每 5 秒将客户端 ping 回客户端连接到的套接字。
现在我想通过另一台服务器重定向进出该 UDP 服务器的所有流量。基本上我想在这台服务器前面设置一个透明代理。原因是我希望能够轻松控制哪个服务器处理 UDP 流量,而无需更改 DNS 设置。
起初我尝试使用 socat 创建这个代理:
socat UDP-LISTEN:50000,fork UDP:myserver:50000
但这对于传入流量似乎很有效,但是从我的服务器到客户端的返回流量没有到达目的地。此外,似乎 socat 为每个连接分叉了另一个进程,因此当客户端断开连接/切换 IP 时,我可能会遇到太多进程和死进程。
我意识到我可以为此使用 iptables NAT 功能,但它似乎对我不起作用。我试过的配置是:
sudo iptables -t nat -A PREROUTING -p udp --dport 50000 -j DNAT --to-destination myserver:50000
但它似乎不起作用——我什至看不到我服务器上的连接。我不确定是由于配置错误还是由于其他一些问题。
一些问题:
更新:实际处理流量的服务器与我尝试在其上设置 iptables 的机器位于不同的机器上。
每个人都知道路由器就像防火墙一样工作。如果没有端口转发,则无法从路由器外部发起连接(无论是 TCP 还是 UDP)。但是,如果用户从路由器内部成功发起 TCP 连接,则路由器的双方就可以相互通信。
UDP 会发生什么?如果路由器后面的用户(他对端口转发根本不做任何事情)将 UDP 发送到外部 pc(假设没有任何防火墙或任何停止在该 pc 中接收数据报的东西),并且 pc 接收它。如果 PC 想要将一些数据发送回路由器后面的用户怎么办?用户能否接收到数据?或者数据可以通过路由器而无需任何特殊操作?
我问这个是因为每个人都知道 UDP 是无连接的。但是,我相信一些在线射击游戏使用UDP。如果我加入服务器玩,我不需要做任何关于端口转发的事情,但是我和服务器之间的udp数据传输仍然可以工作。
有什么可以向我解释一下吗?
非常感谢。
杰克
我正在尝试通过 iperf 测试 UDP 多播吞吐量,但它似乎没有从我的开发机器发送超过 10Mbit/s:
C:\> iperf -c 224.0.166.111 -u -T 1 -t 100 -i 1 -b 1000000000
------------------------------------------------------------
Client connecting to 224.0.166.111, UDP port 5001
Sending 1470 byte datagrams
Setting multicast TTL to 1
UDP buffer size: 8.00 KByte (default)
------------------------------------------------------------
[156] local 192.168.1.99 port 49693 connected with 224.0.166.111 port 5001
[ ID] Interval Transfer Bandwidth
[156] 0.0- 1.0 sec 1.22 MBytes 10.2 Mbits/sec
[156] 1.0- 2.0 sec 1.14 MBytes 9.57 Mbits/sec
[156] 2.0- 3.0 sec 1.14 MBytes …Run Code Online (Sandbox Code Playgroud) 我想阻止我的两个 DNS 服务器上的所有传入请求,除了某些 IP 地址,例如 1.2.3.4 的 IP 将被允许发出请求,但其他人不会。
你如何用 iptables 做到这一点?
非常感谢。
有什么方法可以使用 Netcat 和 UDP 发送文件(图片或视频)。它默认为 TCP,但我想使用 UDP 发送。我尝试简单地将 -u 添加到 nc 命令,但这不起作用。这是我正在使用的两个命令:
cat File.jpg | nc -u -l 777
nc -u 192.168.x.x 777 | pv -b > newfile.jpg
Run Code Online (Sandbox Code Playgroud)
我将我的 IP 地址用于 xx,以及我 PC 上的相应文件。我也在使用 Ubuntu。
感谢您的任何帮助!
我在我管理的一个小网络中遇到了一个大问题。该网络是 Apple 网络,包括机场极端、Express、mac book pro、imac、ipad、iphone 等...
今天我去向这个网络添加一些东西,发现交换机上的灯疯狂地闪烁。注意到这一点后,我启动了wireshark并查看了我的防火墙日志文件。
我在日志文件中一遍又一遍地看到的行是
拒绝 10.0.3.100 224.0.0.251 mdns/udp 5353 5353 1-Trusted Firebox udp 泛洪 123 255(内部策略) proc_id="firewall" rc="101"
源 IP 发生变化 (10.0.3.100),但消息保持不变。
我在弄清楚造成这种情况的原因时遇到了一个大问题。当我连接无线接入点时,我无法连接到网络上的任何内容。当我拔掉它们时,网络一切正常,并且没有因该流量而饱和。
有人有什么好的方法来诊断这个问题吗?我不确定这是否刚刚开始,或者自从我现在才注意到以来一直都是这样。
更新:我运行wireshark时看到的消息如下:
25 0.006498000 10.0.3.3 224.0.0.251 MDNS 135 标准查询响应 0x0000 A,缓存刷新 10.0.3.3 A,缓存刷新 169.254.233.55
我遇到了一些我不明白的奇怪行为。我正在 Windows 2003 Server 上安装软件。该软件需要绑定到特定的 UDP 端口和所有 TCP 地址才能侦听请求。我似乎能够绑定到我选择的几个端口,但不能绑定到其他端口;具体来说,我无法绑定到我需要的一个端口,即 5001。其他推测为空闲的端口(如 5002、5010)也会失败。我的第一个猜测是“它正在被另一个程序使用”,但它没有显示在 netstat 或 TCPView(来自 sysinternals)中,所以我不知道该怎么做。程序收到套接字错误 10048(地址已在使用中)。
这些是我用来尝试查找“违规”程序的示例命令:
c:\>netstat -a -v -n -o -p udp
Active Connections
Proto Local Address Foreign Address State PID
UDP 0.0.0.0:445 *:* 4
UDP 0.0.0.0:500 *:* 512
UDP 0.0.0.0:1434 *:* 1980
UDP 0.0.0.0:4500 *:* 512
UDP 0.0.0.0:5000 *:* 5920
UDP 0.0.0.0:5500 *:* 5288
UDP 127.0.0.1:123 *:* 856
UDP 127.0.0.1:1314 *:* 4376
UDP 172.20.1.10:123 *:* 856
UDP 172.20.1.10:137 *:* 4
UDP 172.20.1.10:138 *:* 4
(No UDP port …Run Code Online (Sandbox Code Playgroud) 我在 RHEL6 服务器上接收 UDP 流量时遇到问题。使用 tcpdump 捕获流量时,数据包是可见的(校验和正确,目标 IP 和 MAC 与机器的匹配)。然而,侦听特定端口的应用程序无法看到任何数据,即使套接字已成功打开并显示在 netstat -panu 输出中。我尝试了一个简单的 perl UDP 服务器脚本 ( http://www.perlmonks.org/?node_id=659588 ) 而不是实际的应用程序,但结果是一样的(套接字打开,没有收到数据)。
没有配置防火墙规则。这是iptables --list output:
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Run Code Online (Sandbox Code Playgroud)
还netstat -s -u没有显示系统所接收的任何UDP数据包:
Udp:
0 packets received
0 packets to unknown port received.
0 packet receive errors
0 packets sent
Run Code Online (Sandbox Code Playgroud)
这是一些安全的客户环境,我无法登录到网络中的另一台机器来尝试手动发送测试 UDP 数据包。
谁能指出我进一步排除故障的方向?
我有两台机器(两台机器都装有 Centos 7.3)通过 1G 交换机连接。当我用iperf它测量机器之间的 UDP 吞吐量时,它给出了大约 850 Mbit/s。但是,当我测量多播UDP 吞吐量时,它会导致 95 Mbit/s(几乎 10 倍的减速)。
造成这种情况的可能原因是什么?
单播的示例输出:
$ iperf -c 192.168.1.11 -u -b 9900m -f m -i 5 -t 30 -w 1m
------------------------------------------------------------
Client connecting to 192.168.1.11, UDP port 5001
Sending 1470 byte datagrams, IPG target: 1.19 us (kalman adjust)
UDP buffer size: 2.00 MByte (WARNING: requested 1.00 MByte)
------------------------------------------------------------
[ 3] local 192.168.1.208 port 52738 connected with 192.168.1.11 port 5001
[ ID] Interval Transfer Bandwidth
[ …Run Code Online (Sandbox Code Playgroud) 我想请社区帮助我找到以下问题的答案: