工作笔记 - 记一次iNode网络连接故障的排查

概述

本文是一篇记述笔者在实际工作中,遇到的VPN网络的使用故障和排查过程的工作记录。笔者在复盘时发现,这个问题的场景可能对于经常使用VPN网络进行工作的系统开发和运维人员而言,还是比较典型的,也可能有很大的机会遇到同类的问题。所以进行了相关的记述和分析,希望对相关的读者有所帮助。

问题

由于工作的需求,笔者需要使用H3C的inode软件,来连接某政务云和业务系统平台提供的VPN系统,以进行业务系统的运维和管理工作。

这个VPN系统基于SSL VPN技术,它不能够直接在操作系统中直接配置和使用,需要先安装一个客户端软件(iNode智能客户端),然后启动这个软件,并执行相关的网络(SSL VPN Gateway)和安全配置,来建立VPN连接。在连接建立之后,就可以像使用正常网络一样,连接远程网络来进行工作了(上图)。

下面是此VPN系统软件的使用和操作界面:

这个软件的安装和配置过程,并不是本文主要讨论的重点。坦率的讲,这个软件不是很好用,兼容性不是很好(好像不支持虚拟机环境),安装和配置过程也是经常出现各种问题。但不管怎么样,笔者在自己的笔记本电脑和Windows 11系统上,还是成功的进行了安装和配置,也可以顺利的进行VPN的连接。

但是,在笔者的应用环境中,遇到了一些问题。VPN可以连接和登录,但是在连接建立之后,笔者也可以使用SSH软件,连接远程的服务器系统,也可以进行简单的命令行操作。但当需要使用如cat、vi等需要操作文件内容的命令的时候,命令行界面就卡住了,不能够顺利输出或者显示编辑界面,当前这个界面,也不能够再继续操作比如退出命令了。

这个问题困扰了笔者很久。因为在此之前,笔者是使用一个已经离职的同事的电脑,都是可以正常工作的。但当笔者想要迁移到自己的开发环境中,就出现了这个问题。原来以为是网络、系统配置或者是VPN软件、SSH软件的问题,但经过各种排列组合的设置,始终没有解决,都是命令行卡死的故障。

更令人无语的是,笔者咨询iNode的客服和相关技术人员,他们都只让你重新配置、安装新版的客户端软件。从事后看来,这应该是一个比较普遍的问题,但他们好像并不了解和理解这个问题的原因和可能的解决方案。对于一个大型网络科技公司,政务云的主要供应商和服务商,这是有点说不过去的。

后来,在互联网上搜索相关问题和解决方案的时候,无意中看到有人提到不适当的MTU设置,可能会导致网络无法正常工作,表象就是操作如cat、vi这种需要输出大量文本的时候会卡住。解决方案就是适当调整网络MTU的设置。遵循这个思路,经过一些测试和配置,笔者顺利的解决了这个问题。

MTU (Maximum Transmission Unit,最大网络传输单元)

在了解和实施解决方案之前,我们先来了解这个问题涉及的的一个核心概念,就是MTU。以下部分内容来自KEMI,由笔者补充整理,鸣谢一下。

MTU是网络通信中的一个重要概念,全称为"最大传输单元",指的是网络链路层能够传输的最大数据帧大小,以字节为单位。通常信息在网络上进行传输的时候,是以数据包的形式进行传输的。当数据包大小超过MTU时,网络设备会对数据包进行分片处理,这需要增加额外的资源消耗。通过合理设置MTU,可以减少分片操作,提高传输效率。但如果MTU值过大,虽然传输效率较高,但数据包延迟和错误率也会增加;而如果MTU值过小,则需要传输更多的数据包,增加设备处理负担。

MTU的设置的主要作用就是通过选择适当的数值,来在不同类型或者特性的网络中,优化传输效率。这个设置本质上是一个选择和平衡,没有绝对的好坏,主要是适配当前的网络传输环境和应用特性。

所以,一般认为,在不同的网络环境中,应当选择和设置不同的MTU。如通常以太网建议的值为1500(这也是操作系统和网络设备的默认值);而对于VPN环境,可能需要稍小一点,为1400;蓝牙设备的更小,为600。

笔者记得,在比较早的ADSL连接的时代,这个MTU还是一个比较重要的网络参数,需要在配置的时候进行检查和设置。但随着网络技术的成熟,系统和设备性能和适应性更强了,更强调易用性,这个检查工作就不是特别需要关注了。通常系统的默认设置都可以保证正常进行工作,只不过可能稍微影响最佳性能而已。所以慢慢的,这个设置就没有人特别关注了。

所以,当发现这个设置不当,甚至会影响网络正常使用的时候,笔者也是比较诧异的。归根结底,还是这个网络VPN系统的易用性和可靠性不够好,需要更多的设置和维护工作。

在理解了问题的基本缘由和逻辑之后,我们就可以更好的理解下述的检查和设置的实际操作过程了。

系统检查和配置

先简单的说明一下操作环境。

笔者使用的是Windows系统,已经安装好了iNode客户端软件,并且已经配置好网关地址、用户名和密码等连接信息,并且可以正常的建立VPN连接。

成功建立连接之后,VPN软件会在系统中,创建一个虚拟的网卡,并且通过这个网卡,和远程网络进行通信。我们前面提到的MTU网络配置,就需要针对这个虚拟网卡进行设置。这些检查和设置工作,都需要通过命令行方式,在在具有管理员权限的Power Shell环境中执行。

具体的检查和配置的基本过程如下:

    1. 检查当前活动的网络界面

这一步的主要目的是获取VPN所使用的虚拟网卡的名称。使用的命令是ipconfig,如下:

shell 复制代码
ipconfig /all

...
以太网适配器 以太网 7:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : iNode VPN Virtual NIC
   物理地址. . . . . . . . . . . . . : 02-50-F2-00-00-02
   DHCP 已启用 . . . . . . . . . . . : 否
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::afd9:ccf9:ba76:77b4%16(首选)
   IPv4 地址 . . . . . . . . . . . . : 172.x.x.x(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . :
   DHCPv6 IAID . . . . . . . . . . . : 268587250
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-29-14-1A-5C-60-F2-62-BB-34-E7
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用
...

      

通过相关的描述信息(iNode VPN Virtual NIC),这里可以得到当前笔者的VPN使用的虚拟网卡在系统中的名称为: "以太网 7"。这里还可以看到相关的网络配置信息,如VPN连接后的网络地址,就是远程网络的一部分。

    1. 检查VPN网络的MTU配置

使用netsh命令,可以查看网卡的工作状态,包括MTU配置。这个命令的使用方式如下:

js 复制代码
// 2. 检查网卡的配置参数
netsh interface ipv4 show subinterfaces

       MTU  MediaSenseState      输入字节     输出字节  接口
----------  ---------------  ------------  ------------  -------------
4294967295                1             0        281946  Loopback Pseudo-Interface 1
      1500                5             0             0  VPN88 - VPN Client
      1500                5             0             0  本地连接* 1
      1500                5             0             0  本地连接
      1500                5             0             0  本地连接* 2
      1500                1             0        254153  以太网 6
      1500                1      34038190     318245926  以太网 3
      1500                5             0             0  蓝牙网络连接
      1500                1         94704        232636  以太网 7
      

可以看到,VPN网卡(以太网 7)当前的MTU的配置数值为1500,这也是操作系统默认的MTU配置。 我们通过前面的讨论已经知道,这个配置对于VPN网络可能是不合适的。需要进行修改。

    1. 估算合适的MTU数值

经过简单的资料查证,笔者发现一般的建议是应当根据不同的网络类型,选择合适的MTU数值。比如以太网一般的建议是1500(也是很多操作系统的默认数值);VPN建议为1400等等。

另外,还可以使用ping命令,来检查当前的网络环境中,更合适的参数设置。这个检查过程基本是,从默认或者建议值开始,先检查这个默认值,看是否能够正常响应。如果不能正常响应(DF设置提示),则使用当前值减去28的倍数,依次进行检查,直到得到正常响应,然后加上28就可以得到合适的设置。这里的28是数据包包头的大小,应当在计算时考量进去。

以笔者的环境为例,我们从VPN网络推荐的1400开始:

js 复制代码
ping -f -l 1400 172.x.x.x

正在 Ping 172.xxx 具有 1400 字节的数据:
需要拆分数据包但是设置 DF。
需要拆分数据包但是设置 DF。

.... 忽略中间检查过程

ping -f -l 1190 172.xxx

正在 Ping 172.64.118.26 具有 1190 字节的数据:
需要拆分数据包但是设置 DF。
需要拆分数据包但是设置 DF。
需要拆分数据包但是设置 DF。

ping -f -l 1162 172.xxx

正在 Ping 172.64.118.26 具有 1162 字节的数据:
来自 172.xxx 的回复: 字节=1162 时间=21ms TTL=127
来自 172.xxx 的回复: 字节=1162 时间=9ms TTL=127

可以看到,最大的一个正常响应的数值是1162,所以笔者网络环境中比较合适的MTU数值应当1190(1163+28)。

    1. 修改VPN网卡的MTU参数

在知晓了需要设置的MTU参数值后(本例中为1190),就可以使用netsh命令的设置命令,来对这个参数进行设置了,命令如下:

shell 复制代码
netsh interface ipv4 set subinterface "以太网 7" mtu=1190 store=persistent
确定。

在这个命令中,需要指定网卡的名称,和设置MTU的数值。还可以选择告知操作系统保存这一设置。这样就不需要在系统重启之后,再次进行设置了。

设置完成之后,应当能够看到"确定"的消息。当然,还应当使用步骤2中的命令,再次检查一下网卡的设置状态。

完成这一系列操作之后,笔者使用VPN客户端连接网络之后,就可以正常的使用如SSH或者WinSCP等软件,正常的进行日常的系统运维工作了,也没有出现或命令或者系统卡住的现象。说明这些问题,确实是MTU设置不当引起的。

小结

至此,文章开始的问题已经得到了很好解决,这里简单小结一下。

本文探讨的主要问题是,iNode VPN连接之后,SSH虽然能够正常连接,但无法正常工作,表象为使用cat、vi等命令时,界面卡死并且无法响应或者退出。这个问题可能是由于VPN网络的MTU设置不当引起的。本文还叙述了在Windows环境中如何进行相关的检查和配置。作为背景知识,本文还讨论了MTU的基本概念和主要作用。

相关推荐
虚无火星车28 分钟前
HTTPS 与 HTTP 的区别在哪?
网络协议·http·https
网络安全Jack2 小时前
校园的网络安全
安全·web安全
Hacker_Oldv2 小时前
网络安全和爬虫的关系
爬虫·安全·web安全
十五0013 小时前
Apache部署Vue操作手册(SSL部分)
网络协议·apache·ssl
D-river4 小时前
【静态网站渗透测试流程与关键点】
安全·web安全·网络安全
csdn5659738506 小时前
AI 时代下,操作系统如何进化与重构?
人工智能·重构·操作系统
一只小姜丝3328 小时前
解决各大浏览器中http地址无权限调用麦克风摄像头问题
网络·vue.js·网络协议·http
网安-轩逸10 小时前
网络安全防御模型
安全·web安全·php
夏炎正好眠12 小时前
seacmsv9报错注入
安全