我通过 1Gb LAN 上的 iperf 在两个 Ubuntu 服务器 (12.04) 之间传输数据。
iperf -s <-> iperf -c <addr> -n2G
TCP speed = 925 Mbits/sec
iperf -su <-> iperf -uc<addr> -b1G -n2G
UDP speed = 810 Mbits/sec
Jitter = 0.016 ms
Lost = 0 .. 0.01%
Run Code Online (Sandbox Code Playgroud)
我预计 UDP 比 TCP 快得多。谁能解释为什么 UDP 在 Ubuntu Server 上比 TCP 慢?
我需要在多个“真实服务器”之间对 UDP 流量进行负载平衡,并以真正的循环方式进行。我已经开始使用 keepalived,但意外地发现,LVS 将 UDP 流量视为“连接”(无论 UDP 是什么......)。实际上,这意味着来自特定客户端的所有流量始终都流向同一个“真实服务器”(这是一个大问题,因为某些客户端可能会产生如此大的流量,以至于单个后端将不堪重负) .
显然,这是预期的行为,但是最近的 LVS 版本有一个“--ops”标志,这使 LVS 绕过其上述行为,以便独立处理每个 UDP 数据报(这就是我想要的!)。但是(总是有一个但是……)这个功能没有从 keepalived.conf 中暴露出来。
有什么解决方案可以让我
显然应该是基于 Linux 的。任何形式的 DNS 轮询在这里都不起作用,因为客户端不知道 DNS。
PS我将尝试脉冲/食人鱼,但从阅读我收集的文档来看,它也没有公开“--ops”标志。我还将尝试mon(通过直接调用 ipvsadm使mon检查后端并添加/删除真实服务器)。
我们在 AWS 上的 ubuntu 实例上运行了许多 Web 服务器(nginx、php5.6-fpm)。它们已经运行了好几个月,但在过去的几天里,我们开始遇到一些问题,在实例启动后一切正常,但在 12 小时左右后,网络调用开始失败(特别是在这个实例套接字 tcp 调用 redis)。
使用 tcpdump 进行了一些挖掘后,看起来 dns 查找由于 udp 校验和失败而被丢弃:
17:13:38.013346 IP (tos 0x0, ttl 64, id 46236, offset 0, flags [DF], proto UDP (17), length 103) 10.0.0.121.34071 > 10.0.0.2.2.50 -> 0x3ae1!] 25855+ Type20736?xxxxxxxx.us-east-1.rds.amazonaws.com。(75)
如果我使用 telnet 从同一个实例连接到 Redis 服务器,那就没问题了,它似乎只影响 fpm。同样奇怪的是,它只发生在实例启动后的一小段时间 - 最初所有请求都通过正常。同样,重新启动 php5.6-fpm 服务似乎可以暂时解决问题。
在这一点上,我几乎处于知识的尽头,所以希望有人能指出我正确的方向!
作为开发项目的一部分,我正在执行数据包捕获,并在捕获文件中看到来自我的机器的一些奇怪的流量。
大约每 3600 秒,一个 NAT-PMP 请求被发送到 IP“1.1.168.192”。(有点有趣,看起来字节序出错了。)
我担心这台机器可能有恶意软件,但恶意软件扫描没有报告任何内容。
我开始了一个数据包捕获,只过滤出有问题的 NAT-PMP 数据包,数据包几乎每小时都发出,但不是每小时都可靠。
Wireshark 本身无法告诉我哪个进程正在发送数据包。TCPView 可以工作,但我必须确保我几乎在数据包发出时我在机器上,因为列表不会长时间保留关闭或不活动的连接。由于数据包不是每小时都可靠地发出,这是一个令人沮丧的提议。
关于如何确定哪个进程在很宽的时间间隔内发送这些数据包的建议?
我将服务器设置为拒绝所有传入的 UDP 数据包,以防止 UDP 泛洪。但是,有人告诉我,因为我将自己的域和服务器用于名称服务器,所以这可能会导致一些问题。我怎样才能解决这个问题?
我的防火墙是 iptables,我的发行版是 CentOS5.5。
我在StackOverflow上发布了这个,并被告知它可能更适合在这里。
我无法理解多播地址的工作原理。
首先,如果我有 N 个在不同网络上工作的客户端或对等点,它们是否都订阅同一个多播组,并且该组允许任何源发送消息,这些对等点/主机都可以通过这个相互通信吗?团体?(听起来像黑魔法!)
其次,我听说 IANA 控制/规范多播地址的暗示。那么您是否必须向 IANA 请求/询问您的项目/公司的特定多播地址?这是如何运作的?我错了吗?你能为我澄清多播网络吗?
非常感谢!
我正在编写一个与网络一起使用的应用程序。为了执行一些测试,我需要重现前一天的流程。但同时不允许停止当前工作的监听器。我也无法重写现有程序以保存传入流。为了解决我的任务,我决定使用 tcpdump。
我使用以下命令在目标机器上运行 tcpdump:
tcpdump -w capture.cap -n "dst host host.domain.com and port 5555"
Run Code Online (Sandbox Code Playgroud)
当我用 tcpick 或 scapy 阅读 capture.cap 时。我可以看到所有超过 1472 字节的有用数据都被截断为长度为 1472。但在标头中它仍然写入数据包的原始长度。我可以判断,UDP 数据包拆分为多个,然后再次连接。但是 tcpdump 可能会过滤掉所有没有标头的包(应该只出现在第一个包中)
有没有办法转储完整的 UDP 包?
我受到 UDP 洪水攻击。我使用以下保护措施来解决它:
iptable IP禁令:
iptables -I INPUT -s 37.187.231.xxx -j DROP
Run Code Online (Sandbox Code Playgroud)
尝试了另一种 iptable 语法
/sbin/iptables -I INPUT -i eth0 -s 37.187.231.xxx -j DROP
Run Code Online (Sandbox Code Playgroud)
尝试限制UDP数据包:
iptables -A INPUT -p udp -m udp --dport 0:65535 -m state --state NEW -m recent --update --seconds 1 --hitcount 10 --name UDP --rsource -j DROP
Run Code Online (Sandbox Code Playgroud)
完全禁用UDP数据包:
iptables -A INPUT -p udp -j DROP
Run Code Online (Sandbox Code Playgroud)
所有端口都关闭了。以下是 - netstat -an | 的输出 grep "udp"
udp 0 0 127.0.0.1:53 0.0.0.0:*
udp6 0 0 ::1:53 :::*
Run Code Online (Sandbox Code Playgroud)
我安装了以下软件:
Ubuntu 14.04
UFW …Run Code Online (Sandbox Code Playgroud) IPv4 需要 NAT 来保护地址。NAT 的防火墙特性也有利于安全。IPv4 NAT 防火墙规则是“阻止传入数据包remote-address:port -> local-address:port,除非local-address:port -> remote-address:port在最后 X 秒内发送传出数据包”。
对于点对点 UDP 应用程序,这需要介绍服务器来进行 NAT 打孔。对于Client连接到Server(包括有防火墙的NAT后面,FW),我们需要进行如下操作的情况发生:
periodic
keep-alive
Introducer <------>
Client FW FW Server
------------------------------------------
request
introduction
-------> Introducer
Client FW FW Server
--------------------->X
request connection
------------------------------------------
notify
introduction
[Client address:port]
Introducer ------->
Client FW FW Server
------------------------------------------
Client FW FW Server
<---------------------------
hello
------------------------------------------
Client FW FW Server
--------------------------->
request connection
------------------------------------------
Client FW FW Server …Run Code Online (Sandbox Code Playgroud) 我想知道 DNS 查询是否加密。如果是这样,您能否简要解释一下我认为要进行加密的过程,两方之间至少应该有一个最小的共同点(例如共享密钥),但是由于 DNS 使用 UDP 并且它是无连接的,我无法想象在这种情况下如何加密您的有效负载。
谢谢