MTU值导致网络不通的原因是什么

描述

一、apt update 执行失败

问题描述

Docker安装后,里面没有ping、ifconfig等命令,执行apt update时,网络错误。

解决思路

  1. 排除网络链路,工具:tcpdump -i 指定端口 -vv。

分析包数据:发现能够正常进行114DNS的解析,但后续包接续不上。

  1. Docker内设置的MTU值太大,导致网络链路中丢弃。

解决方法

修改MTU值,原来是1500,改为1450,便可以执行apt update命令了。

二、小知识

  1. MTU

MTU(Maximum Transmission Unit,最大传输单元),是网络链路节点的管控值。大于该值的数据帧,或分片,或丢弃。

例如:VM -- 物理服务器 -- 路由器 -- 服务器

VM的MTU设置如果为1700,链路其他设备都设置为1500。路由器接收后,会对其分包或者直接丢弃,判断的依据是IP包DF标志位,为1则不允许分包。

  1. tcpdump抓包指令

tcpdump是一种网络分析工具,可以将数据包的“头”截获。

常用的命令:

tcpdump -i 指定端口 -vv

-i,指定网络端口,如eth0, ens,lo

-vv 输出详细的报文信息

示例:

12:12:09.782698 IP (tos 0x0, ttl 62, id 39791, offset 0, flags [DF], proto TCP (6), length 52)
    10.168.16.15.42204 >  .5901: Flags [.], cksum 0x700f (correct), seq 774, ack 10624633, win 13508, options [nop,nop,TS val 2029593093 ecr 1866739405], length 0
12:12:09.782803 IP (tos 0x0, ttl 62, id 39792, offset 0, flags [DF], proto TCP (6), length 52)
    10.168.16.15.42204 >  .5901: Flags [.], cksum 0x5472 (correct), seq 774, ack 10631623, win 13587, options [nop,nop,TS val 2029593093 ecr 1866739405], length 0
12:12:09.782853 IP (tos 0x0, ttl 62, id 39793, offset 0, flags [DF], proto TCP (6), length 52)
    10.168.16.15.42204 >  .5901: Flags [.], cksum 0x394c (correct), seq 774, ack 10638613, win 13547, options [nop,nop,TS val 2029593093 ecr 1866739405], length 0
12:12:09.782904 IP (tos 0x0, ttl 62, id 39794, offset 0, flags [DF], proto TCP (6), length 52)
    10.168.16.15.42204 >  .5901: Flags [.], cksum 0x1daf (correct), seq 774, ack 10645603, win 13626, options [nop,nop,TS val 2029593093 ecr 1866739405], length 0
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分