最近在家里经常遇到 ssh 超时的问题,一开始也没太当回事,感觉是网络不稳定导致的,但是后来慢慢的发现这种超时问题只会出现在跟 ssh 相关的程序中,例如 git、ssh。这成功的引起了我的注意,于是我开始尝试着去排查。

首先我测试了一下 ping 远程服务器,发现结果还是比较正常的,所以在 icmp 协议上,连接应该是没有问题的。然后安装 tcping 软件包,测试 tcp 连接,结果显示也是正常的,那么看起来就是 ssh 协议的问题了。于是接着尝试让 ssh 输出调试信息:

$ ssh -v -o ConnectTimeout=10 test-server

输出结果如下:

# .....

debug1: SSH2_MSG_KEXINIT sent

debug1: SSH2_MSG_KEXINIT received

debug1: kex: algorithm: curve25519-sha256

debug1: kex: host key algorithm: ecdsa-sha2-nistp256

debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: compression: none

debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: compression: none

debug1: expecting SSH2_MSG_KEX_ECDH_REPLY

# 一直等待,直到超时

可以看到,ssh 连接的建立一直阻塞在了 expecting 这个阶段,用这行命令的输出在网络上查找,发现了是 MTU 过大引起的问题: mtu missmatch。 这片文章给出的解决方案是将系统的 MTU 的设置成一个较小的值(例如,576)。使用 ip 命令简单的执行了一下,发现确实可以解决 ssh 超时的问题:

查看当前的 MTU 设置

$ ip link list

1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: wlp4s0: mtu 1500 qdisc fq_codel state UP mode DORMANT group default qlen 1000

link/ether ac:bc:32:d4:cd:af brd ff:ff:ff:ff:ff:ff

接着修改无线网卡的 MTU 设置:

$ sudo ip link set dev wlp4s0 mtu 576

但是我的潜意识告诉我这么干并不优雅,于是我在 Arch Wiki 上面找到了这个内容。这里面提到一个内核参数 —— tcp_mtu_probing,启用这项内核功能可以让操作系统根据网络状况自动的调节 MTU 大小,从而在性能与稳定性之间找到一个微妙的平衡,具体的介绍可以看 Cloudflare 这篇介绍

只要先在 /etc/sysctl.d/99-sysctl.conf 加上下面的内容:

net.ipv4.tcp_mtu_probing = 1

然后使用 sysctl 加载配置就好了:

$ sudo sysctl --system

linux自动探测mtu,Arch Linux 启用 MTU 探测相关推荐

  1. arch linux安装_安装Arch Linux如何使我的旧笔记本电脑重获新生

    arch linux安装 by Jonathan Baldie 乔纳森·巴尔迪(Jonathan Baldie) 安装Arch Linux如何使我的旧笔记本电脑重获新生 (How installing ...

  2. linux uefo引导 win_windows10+arch linux双系统 uefi启动

    安装前的准备 Archlinux 安装ISO镜像,下载:http://mirrors.163.com/archlinux/iso/2013.05.01/ U盘一个,最好1G以上,格式化成FAT32.把 ...

  3. linux自动登录cmcc脚本,Linux下移动CMCC WLAN自动连接认证

    山东移动的WLAN目前覆盖了很多居民区.公共场所和高校.价格低廉,速度尚可,普通网络应用绰绰有余,准备把家中的10M廉通宽带打入冷宫. 不过CMCC WLAN每次都要Web页认证比较麻烦.幸亏Linu ...

  4. arch Linux添加源,在Arch Linux系统中使用Archlinuxcn源(清华源)的方法

    如果你想在Arch Linux系统中更换为Archlinuxcn源(清华源),那就按本文的方法操作,只需要三步就可以使用到Archlinuxcn源(清华源)了. 背景:在Arch Linux系统中选择 ...

  5. 红帽 linux 安装gns3,在Arch Linux和Manjaro系统上安装GNS3的方法

    本文介绍在Arch Linux和Manjaro系统上安装GNS3的方法,适合所有基于Arch Linux的发行版.我们还将为Gns3创建一个启动器,适用于KDE.Gnome 3和Linux上其它桌面环 ...

  6. linux自动下载icloud,在Linux系统上安装和使用iCloud的方法

    本文介绍在Linux操作系统上安装和使用iCloud的方法.尽管在Linux平台上有很多人使用iPhone,但Apple并没有认真对待它的Linux用户,由于他们的疏忽,没有一种在Linux上使用iC ...

  7. arch linux 2014 安装教程,Arch Linux 2014.03.01 硬盘安装 Win + Grub4dos + Arch

    Arch Linux 安装有很多方法,但是,Grub4dos 下安装可以具有更多的灵活性,且可以随时调整. 好了,步入正题吧. 第一步,准备 1.首先,还是GRUB4DOS,这个资料Linux公社很多 ...

  8. linux自动生成mac地址,Linux自动生成MAC地址的多种方法

    Linux自动生成MAC地址的多种方法 Linux下生成MAC地址的方法有很多种,除了常见的shell生成法外,还能通过Perl.ruby等方法来生成MAC地址,下面小编对MAC地址的自动生成方法做了 ...

  9. linux自动挂载文件修复,Linux文件系统管理 开机自动挂载及fstab文件修复

    概述 开机自动挂载及fstab文件修复 开机自动挂载 实现开机后自动挂载,就需要修改系统的自动挂载文件 /etc/fstab.因为系统就是依赖这个文件决定启动时加载的文件系统的. 通过vi 打开/et ...

  10. 怎么给linux装桌面,给Arch Linux系统安装桌面的方法

    Arch Linux基本系统安装完成后并没有默认安装桌面,所以现在我们为Arch Linux安装桌面,我选择的是安装Xfce桌面. 1.准备工作 1.1.安装Xorg 由于Xfce是基于图形库GTK+ ...

最新文章

  1. 超越YOLOv5,1.3M超轻量,高效易用,这个目标检测开源项目太香了!
  2. 缩略图信息提取工具vinetto
  3. python模块matplotlib.pyplot用法_python – 虽然使用pyplot.show(),但如何使用matplotlib保持图形大小不变?...
  4. 安卓怎么显示res文件夹中的html_安卓手机如何打开.mhtml文件?
  5. 每天学习python 30分钟 -了解python - 看懂#!/usr/bin/python
  6. dos命令在vba中应用
  7. Android的三种网络联接方式(URL / HttpURLConnection | HttpClient | InetAddress )
  8. Java 面向对象:构造器详解
  9. docker学习(7) docker-compose使用示例
  10. 解决securecrt rz 上传rar,gif文件不正确问题【转】
  11. 太火!这本 AI 图书微软强推,程序员靠它拿下 50K!
  12. GitHub热榜第四!这套Python机器学习课,免费获取还易吸收 | 资源
  13. Python 语言程序设计(1)
  14. 【转】Windows和Ubuntu双系统,修复UEFI引导的两种办法
  15. DICOM中的入门概念
  16. 最新苹果CMSV10视频电影网站源码+自适应手机版
  17. win10pe命令打开计算机,Win10是怎么进入安全模式
  18. php 冗余代码检测,冗余代码检查工具Simian | 求索阁
  19. java strut2通配符_Struts2的通配符
  20. C#中COM串口连接、发送、接收数据

热门文章

  1. 二、crm用户登录实现
  2. java bho_无法让BHO工作在64位
  3. OpenCVSharp 笑脸检测
  4. 计算机电源缓冲器,集成电路中缓冲器的作用
  5. 企业网站的设计与实现
  6. html怎么设置外面有线,TP-Link路由器有线方式桥接设置图文教程
  7. 信息技术与计算机网络国际会议,第七届信息技术国际会议(ICIT 2019)顺利召开...
  8. python实现单纯形法迭代形式(待更新人工法+对偶)
  9. 校招丨智连时空,达至未来!中海达
  10. Lesson 77-78 Socially Discriminated Against