wgengine: drop wireguard MTU to 1280 bytes.
"tailscale.com/wgengine/packet"
)
+// minimalMTU is the MTU we set on tailscale's tuntap
+// interface. wireguard-go defaults to 1420 bytes, which only works if
+// the "outer" MTU is 1500 bytes. This breaks on DSL connections
+// (typically 1492 MTU) and on GCE (1460 MTU?!).
+//
+// 1280 is the smallest MTU allowed for IPv6, which is a sensible
+// "probably works everywhere" setting until we develop proper PMTU
+// discovery.
+const minimalMTU = 1280
+
type userspaceEngine struct {
logf logger.Logf
reqCh chan struct{}
@@ -84,7 +94,7 @@ func NewUserspaceEngine(logf logger.Logf, tunname string, listenPort uint16) (En
logf("Starting userspace wireguard engine with tun device %q", tunname)
- tundev, err := tun.CreateTUN(tunname, device.DefaultMTU)
+ tundev, err := tun.CreateTUN(tunname, minimalMTU)
if err != nil {
diagnoseTUNFailure(logf)
logf("CreateTUN: %v", err)
