标签: tcp

haproxy + stunnel + 保持活动状态?

我想在 haproxy 1.4 前面放置 stunnel 来处理 HTTPS 流量。我还需要 stunnel 添加X-Forwarded-For标头。这可以通过 haproxy 网站上的“stunnel-4.xx-xforwarded-for.diff”补丁来实现。

但是,描述中提到:

请注意,此补丁不适用于 keep-alive,...

我的问题是:这对我来说在实践中意味着什么?我不确定,

  1. 如果这是关于保持活动之间的
    • 客户端和 stunnel
    • stunnel 和 haproxy
    • 或haproxy 和后端服务器?
  2. 这对性能意味着什么:如果我在网页上有 100 个图标,浏览器是否必须协商 100 个完整的 SSL 连接,或者它可以重新使用 SSL 连接,只是创建新的 TCP 连接?

ssl https tcp haproxy stunnel

10
推荐指数
2
解决办法
8713
查看次数

将 tcp_tw_recycle/reuse 设置为 1 的后果是什么?

我在配置文件中将 tcp_tw_recycle/reuse 都设置为 1。

这样做的后果是什么?

如果重复使用 tcp 套接字,是否会带来安全风险?即 2 个不同的连接都可能能够发送数据?

它适用于重新连接机会很小的短期连接吗?

ubuntu tcp socket

10
推荐指数
3
解决办法
2万
查看次数

Linux 慢启动:更改 ip 路由对初始窗口没有任何影响

我将机器中的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 仍为默认值45840/1460=4

[user@site etc]$ sudo tcpdump -n -i any 'tcp[tcpflags] …
Run Code Online (Sandbox Code Playgroud)

networking linux optimization tcp tcp-slow-start

10
推荐指数
2
解决办法
3678
查看次数

1Gbps 服务器的 TCP 吞吐量低于大型 RTT 上的 100Mbps 服务器

我们的基础设施分布在世界各地的几个主要地点——新加坡、伦敦和洛杉矶。任意两个位置之间的 RTT 超过 150 毫秒。

我们最近升级了所有服务器以使用 1Gbps 链接(从 100Mbps)。我们一直在不同位置的服务器之间运行一些基于 TCP 的测试,并看到了一些令人惊讶的结果。这些结果是完全可重复的。

  1. 洛杉矶 (100Mbps) 到伦敦 (100Mbps):~96Mbps 吞吐量
  2. 洛杉矶 (100Mbps) 到伦敦 (1Gbps):~96Mbps 吞吐量
  3. 洛杉矶 (1Gbps) 到伦敦 (100Mbps):10-40Mbps吞吐量(不稳定)
  4. 洛杉矶 (1Gbps) 到伦敦 (1Gbps):10-40Mbps吞吐量(不稳定)
  5. 洛杉矶 (1Gbps) 到洛杉矶 (1Gbps):>900Mbps 吞吐量

似乎每当发送方以 1Gbps 的速度运行时,我们的吞吐量在长链接上都会受到很大影响。

之前的测试方法非常简单 - 我只是使用 cURL 从目标服务器下载一个 1GB 的二进制文件(因此在上述情况下,cURL 客户端在伦敦服务器上运行并从 LA 下载,因此 LA 是发送方) . 这当然是使用单个 TCP 连接。

使用 iperf 在 UDP 上重复相同的测试,问题就消失了!

  1. 洛杉矶 (100Mbps) 到伦敦 (100Mbps):~96Mbps 吞吐量
  2. 洛杉矶 (100Mbps) 到伦敦 (1Gbps):~96Mbps 吞吐量
  3. 洛杉矶 (1Gbps) 到伦敦 (100Mbps):~96Mbps 吞吐量
  4. 洛杉矶 (1Gbps) 到伦敦 …

networking tcp gigabit

9
推荐指数
1
解决办法
3916
查看次数

为什么WireShark认为这个帧是重组PDU的TCP段

在这里找到一个小的 pcap 文件说明我的问题。

我有一个三向 TCP 握手,然后是两次 FIX 登录。(FIX 是交易中使用的协议。)第一个 FIX 登录(第 4 帧)由 WireShark 很好地解释和解析,但第二个登录(第 6 帧)被解释为TCP segment of a reassembled PDU.

然而,帧 6不是重组 PDU 的 TCP 段。它包含一个完整的 TCP PDU,应该被解释和解析为 FIX 登录。我检查过序列号、ACK号、IP总长度等都是好的。

为什么第 6 帧被解释为重组 PDU 的 TCP 段?

tcp wireshark

9
推荐指数
1
解决办法
4万
查看次数

意外缩小的窗口

我运行一个主要的媒体上传/下载站点,我注意到这些:

由于文件大小过大,这是严重的还是背景噪音,我是否可以向 /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)

networking linux iptables kernel tcp

9
推荐指数
1
解决办法
1万
查看次数

“curl: (56) SSL read: errno -5961”错误的根本原因

我正在评估一些 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)

ssl timeout tcp curl

9
推荐指数
1
解决办法
4万
查看次数

启用时间戳时对某些 SYN 数据包无响应

我有一个 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 到 …

tcp timestamp syn

9
推荐指数
1
解决办法
3650
查看次数

模拟两台ubuntu服务器机器之间的慢速连接

我想模拟以下场景:假设我有 4 台 ubuntu 服务器机器 A、B、C 和 D。我想将机器 A 和机器 C 之间的网络带宽减少 20%,将 A 和 B 之间的网络带宽减少 10%。如何使用网络模拟/节流工具来做到这一点吗?

networking ubuntu bandwidth tcp linux-networking

9
推荐指数
1
解决办法
2337
查看次数

如何配置 iptables 以便不将不需要的端口报告为已过滤

我想阻止其他人在 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,而不是保持沉默(不回复任何内容)?

security linux tcpip iptables tcp

9
推荐指数
2
解决办法
4669
查看次数