如何为网络接口设置MTU?

时间:2020-01-09 14:16:37  来源:igfitidea点击:

MTU(最大传输单元)与Linux/BSD/UNIX操作系统中的TCP/IP网络有关。
它指的是一次通信协议的给定层一次可以通过的最大数据报的大小(以字节为单位)。

您可以在Linux下使用ifconfig命令查看当前的MTU设置:

/sbin/ifconfig

输出:

eth0      Link encap:Ethernet  HWaddr 00:0F:EA:91:04:07
         inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
         inet6 addr: fe80::20f:eaff:fe91:407/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:141567 errors:0 dropped:0 overruns:0 frame:0
         TX packets:141306 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:101087512 (96.4 MiB)  TX bytes:32695783 (31.1 MiB)
         Interrupt:18 Base address:0xc000

更好的方法是使用ip命令:

$ ip link list

输出:

1: lo:  mtu 16436 qdisc noqueue
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0:  mtu 1500 qdisc pfifo_fast qlen 1000
   link/ether 00:0f:ea:91:04:07 brd ff:ff:ff:ff:ff:ff
3: sit0:  mtu 1480 qdisc noop
   link/sit 0.0.0.0 brd 0.0.0.0

如您所见,eth0的MTU设置为1500。
假设您要将其设置为1400,则可以使用以下任一命令来设置MTU:

ifconfig eth0 mtu 1400

或者

ip link set dev eth0 mtu 1400

使用以下命令验证是否已设置新的mtu:

$ ip link list

或者

$ /sbin/ifconfig

要使eth0的设置成为永久设置,请编辑配置文件:

/etc/network/interfaces(Debian Linux)

auto lo  
 iface lo inet loopback

auto eth0  
 iface eth0 inet static  
 name Ethernet LAN card  
 address 192.168.1.2  
 netmask 255.255.255.0  
 broadcast 192.168.1.255  
 network 192.168.1.0  
 gateway 192.168.1.254  
 mtu 1400  
 post-up /etc/fw.start  
 post-down /etc/fw.stop

/etc/sysconfig/network-scripts/ifcfg-eth0(Red Hat Linux)

DEVICE=eth0  
 BOOTPROTO=static  
 BROADCAST=192.168.1.255  
 HWADDR=00:0F:EA:91:04:07  
 IPADDR=192.168.1.111  
 NETMASK=255.255.255.0  
 NETWORK=192.168.1.0  
 MTU=1400  
 ONBOOT=yes  
 TYPE=Ethernet

保存文件并重新启动网络服务

如果您使用的是Redhat:

# service network restart

如果您使用的是Debian:

# /etc/init.d/networking restart