由于 GRE 隧道报头会占用 24 字节,且GRE隧道上不支持分片/重组,绑定 GRE 对接的 IP 的主机上需要将网卡的 MTU 改成1476。当服务端返回的数据包超过隧道 MTU 值的长度后,数据包被丢弃。
如果需要 kookeey 服务端改mss值,那么只能作用于 tcp 协议,udp 协议将用不了,所以最好的办法还是主机改 MTU。
什么是 MTU?
In networking, maximum transmission unit (MTU) is a measurement representing the largest data packet that a network-connected device will accept. Imagine it as being like a height limit for freeway underpasses or tunnels: Cars and trucks that exceed the height limit cannot fit through, just as packets that exceed the MTU of a network cannot pass through that network.
mtu: 最大传输单元,即网络上传输最大的数据包,mtu的单位是字节,大部分的网络设备的mtu值是1400-1500。
- 如果本机的mtu值大于网关的mtu值,大的数据包就会被拆开来传送,这样会产生数据包的碎片,增加丢包率,降低网络速度
- 把mtu设置比网关小或者相同,可以减少丢包
- 设置合适的mtu值,可以减少部分网站打不开,上网速度慢等问题
- 一般情况,可以把路由器、交换机和服务器的mtu值统一设置
如何修改Linux系统的MTU值?
Debian/Ubuntu系统更改mtu的方法:
查看服务器的mtu值:
cat /sys/class/net/eth0/mtu
临时修改mtu值:(重启服务器后失效)
ip link set mtu 1476 dev [你的网卡设备]
永久修改mtu值的方法:
在/etc/netplan/01-netcfg.yaml中,你的网卡设备名下新增一行:mtu: 1500,例如:
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp4-overrides:
use-mtu: false
mtu: 1500
match:
macaddress: 99:12:92:f8:f9:99
set-name: eth0
随后重启网卡(service network restart
)或者服务器生效
CentOS系统更改MTU的方法
在/etc/sysconfig/network-scripts/ifcfg-[你的网卡设备]中新增一行:MTU=1476,例如