我想在 haproxy 1.4 前面放置 stunnel 来处理 HTTPS 流量。我还需要 stunnel 添加X-Forwarded-For标头。这可以通过 haproxy 网站上的“stunnel-4.xx-xforwarded-for.diff”补丁来实现。
但是,描述中提到:
请注意,此补丁不适用于 keep-alive,...
我的问题是:这对我来说在实践中意味着什么?我不确定,
我在配置文件中将 tcp_tw_recycle/reuse 都设置为 1。
这样做的后果是什么?
如果重复使用 tcp 套接字,是否会带来安全风险?即 2 个不同的连接都可能能够发送数据?
它适用于重新连接机会很小的短期连接吗?
我将机器中的tcp初始窗口更改为10,如下所示
[user@site etc]$ sudo ip route change default via 17.255.209.1 dev eth0 proto static initcwnd 10
Run Code Online (Sandbox Code Playgroud)
并更改tcp_slow_start_after_idle为如下所示
[user@site etc]$ sudo sysctl -a | grep tcp_slow_start_after_idle
net.ipv4.tcp_slow_start_after_idle = 0
Run Code Online (Sandbox Code Playgroud)
下面给出了一个 ip 路由显示确认
[user@site etc]$ ip route show
default via 17.255.209.1 dev eth0 proto static initcwnd 10
169.254.0.0/16 dev eth0 scope link metric 1002
17.255.209.0/24 dev eth0 proto kernel scope link src 17.255.209.19
Run Code Online (Sandbox Code Playgroud)
现在,当我在网站上执行 tcpdump 时,我似乎没有看到初始窗口中的更改,WIN/MSS 仍为默认值4。5840/1460=4
[user@site etc]$ sudo tcpdump -n -i any 'tcp[tcpflags] …Run Code Online (Sandbox Code Playgroud) 我们的基础设施分布在世界各地的几个主要地点——新加坡、伦敦和洛杉矶。任意两个位置之间的 RTT 超过 150 毫秒。
我们最近升级了所有服务器以使用 1Gbps 链接(从 100Mbps)。我们一直在不同位置的服务器之间运行一些基于 TCP 的测试,并看到了一些令人惊讶的结果。这些结果是完全可重复的。
似乎每当发送方以 1Gbps 的速度运行时,我们的吞吐量在长链接上都会受到很大影响。
之前的测试方法非常简单 - 我只是使用 cURL 从目标服务器下载一个 1GB 的二进制文件(因此在上述情况下,cURL 客户端在伦敦服务器上运行并从 LA 下载,因此 LA 是发送方) . 这当然是使用单个 TCP 连接。
使用 iperf 在 UDP 上重复相同的测试,问题就消失了!
我有一个三向 TCP 握手,然后是两次 FIX 登录。(FIX 是交易中使用的协议。)第一个 FIX 登录(第 4 帧)由 WireShark 很好地解释和解析,但第二个登录(第 6 帧)被解释为TCP segment of a reassembled PDU.
然而,帧 6不是重组 PDU 的 TCP 段。它包含一个完整的 TCP PDU,应该被解释和解析为 FIX 登录。我检查过序列号、ACK号、IP总长度等都是好的。
为什么第 6 帧被解释为重组 PDU 的 TCP 段?
我运行一个主要的媒体上传/下载站点,我注意到这些:
由于文件大小过大,这是严重的还是背景噪音,我是否可以向 /etc/sysctl.conf 添加任何调整以改进和防止问题?
[8822139.804040] TCP: Peer 177.47.116.196:53829/80 unexpectedly shrunk window 2513116350:2513136117 (repaired)
[8822140.944041] TCP: Peer 177.47.116.196:53829/80 unexpectedly shrunk window 2513116350:2513136117 (repaired)
[8822143.224052] TCP: Peer 177.47.116.196:53829/80 unexpectedly shrunk window 2513116350:2513136117 (repaired)
[8822147.776079] TCP: Peer 177.47.116.196:53829/80 unexpectedly shrunk window 2513116350:2513136117 (repaired)
[8822156.896049] TCP: Peer 177.47.116.196:53829/80 unexpectedly shrunk window 2513116350:2513136117 (repaired)
[8822175.136049] TCP: Peer 177.47.116.196:53829/80 unexpectedly shrunk window 2513116350:2513136117 (repaired)
[8900596.808027] TCP: Peer 101.109.227.138:56284/80 unexpectedly shrunk window 1388148754:1388196670 (repaired)
[8900598.444020] TCP: Peer 101.109.227.138:56284/80 unexpectedly shrunk window 1388148754:1388196670 (repaired)
[8914737.204037] TCP: Peer 2.238.243.60:63238/80 …Run Code Online (Sandbox Code Playgroud) 我正在评估一些 SSL 故障,并注意到当我使用curl其中一个故障站点时,我得到了curl: (56) SSL read: errno -5961; 但是,我对该错误的 google 查询没有显示 openssl 失败的原因。
问题: curl 失败是什么意思curl: (56) SSL read: errno -5961?
我包括以下完整curl...
[mpenning@mpenning-lnx ~]$ curl -vk https://192.0.2.168/
* About to connect() to 192.0.2.168 port 443 (#0)
* Trying 192.0.2.168... connected
* Connected to 192.0.2.168 (192.0.2.168) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* warning: ignoring value of ssl.verifyhost
* skipping SSL peer certificate verification
* SSL connection using TLS_RSA_WITH_AES_256_CBC_SHA …Run Code Online (Sandbox Code Playgroud) 我有一个 TCP 服务器在运行 Ubuntu 12.04.3(内核 3.8.0-31-generic)的机器(“服务器”)上进行监听。它接收来自 2 台不同客户端机器的连接。机器 A 运行 Ubuntu 12.04.4 (3.11.0-17-generic),机器 B 运行 Ubuntu 11.10 (3.0.0-32-server)。
如果服务器上启用了 TCP 时间戳(sysctl net.ipv4.tcp_timestamps=1),那么有时来自机器 A 的 SYN 数据包会被“忽略”。在服务器上使用 tcpdump(在非混杂模式下)我可以看到 SYN 到达正常并且校验和正确 - 只是没有响应 - 没有 SYN/ACK 和 RST。机器 A 在放弃之前多次重传 SYN。在机器 A 上运行的客户端软件(在本例中为 wget)立即使用新连接重试并成功,获得即时 SYN/ACK。
机器 B 在同一台服务器上没有问题,它的流量看起来很正常 - 它也使用与机器 A 相同的 TCP 选项(从我从捕获文件中看到的)。在服务器上禁用 TCP 时间戳会使一切正常工作。
被忽略的 SYN 数据包中的时间戳对我来说似乎是有效的,所以我不确定它们为什么会导致问题,或者它们是否是根本原因。
我在这里放了一个匿名 pcap https://www.dropbox.com/s/onimdkbyx9lim70/server-machineA.pcap。它是在服务器 (10.76.0.74) 上拍摄的,显示机器 A (10.4.0.76) 成功执行 HTTP GET(数据包 1 到 10),然后 1 秒后尝试再次获取相同的 URL(数据包 11 到 17),但相反忽略其 SYN。数据包 18 到 …
我想模拟以下场景:假设我有 4 台 ubuntu 服务器机器 A、B、C 和 D。我想将机器 A 和机器 C 之间的网络带宽减少 20%,将 A 和 B 之间的网络带宽减少 10%。如何使用网络模拟/节流工具来做到这一点吗?
我想阻止其他人在 nmap 标准扫描(非特权)中看到我的端口被过滤。假设我打开了以下端口:22、3306、995 和配置如下的防火墙:
-A INPUT -p tcp -m tcp --dport 22 -j DROP
-A INPUT -p tcp -m tcp --dport 3306 -j DROP
-A INPUT -p tcp -m tcp --dport 995 -j DROP
Run Code Online (Sandbox Code Playgroud)
这是 nmap 扫描的结果:
[+] Nmap scan report for X.X.X.X
Host is up (0.040s latency).
Not shown: 90 closed ports
PORT STATE SERVICE
22/tcp filtered ssh
995/tcp filtered pop3s
3306/tcp filtered mysql
Run Code Online (Sandbox Code Playgroud)
它将这些端口显示为已过滤,因为我的服务器没有为 SYN 回复 RST。有没有办法修改这种行为?例如:如果 iptables 防火墙阻止了一个端口,则为 SYN 回复 RST,而不是保持沉默(不回复任何内容)?