From your wireless-info
output:
wlp3s0 Link encap:Ethernet HWaddr <MAC 'wlp3s0' [IF2]>
inet addr:172.21.227.43 Bcast:172.21.255.255 Mask:255.255.0.0
inet6 addr: fe80::a06b:d623:7a53:48a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:95202 errors:0 dropped:0 overruns:0 frame:0
TX packets:81103 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:124882281 (124.8 MB) TX bytes:8863246 (8.8 MB)
On the 4th line, MTU:1500
shows the misconfiguration. MTU
is the Maximum Transmission Unit
, the size, in bytes, of the largest packet your system will send. Any larger lump-of-data to send will be split into multiple packets.
An MTU:1500
setting will cause your system to send 1500 byte packets to wlp3s0
, which, because it's wireless, will wrap your 1500-byte packet in some additional metadata, making the actual packet length larger than 1500. Your ONE packet will have to be split into TWO packets to transmit. It takes longer to send two packets.
What can be done?
Install the iputils-tracepath
package:
sudo apt-get install iputils-tracepath
Read man tracepath
, then
tracepath -n slashdot.org
and look at the pmtu
(Path MTU
) value. Remember this number! Or, have the shell remember it for you:
newMTU=$(tracepath -n slashdot.org| grep -o 'pmtu [0-9]\+'| tail -n 1 | awk '{print $2}')
Then, change the MTU
. Since the MTU
configuration setting is used in setting up the connection, you must do the Down-Change-Up dance. Note this is going to break all connections going through wlp3s0
, so, if you're administering this system remotely (via ssh
) you will be disconnected.
sudo ifconfig wlp3s0 down
sudo ifconfig wlp3s0 mtu $newMTU
sudo ifconfig wlp3s0 up
Alternate method:
Change the configuration of your router to provide the $newMTU
value via DHCP
, then take wlp3s0
down and up.