diff --git a/backend/wireguard/device.go b/backend/wireguard/device.go index 9dd4fe7fb..2ebc88e0b 100644 --- a/backend/wireguard/device.go +++ b/backend/wireguard/device.go @@ -42,6 +42,7 @@ type wgDeviceAttrs struct { psk *wgtypes.Key keepalive *time.Duration name string + MTU int } type wgDevice struct { @@ -127,6 +128,7 @@ func newWGDevice(devAttrs *wgDeviceAttrs, ctx context.Context, wg *sync.WaitGrou // Create network device la := netlink.LinkAttrs{ Name: devAttrs.name, + MTU: devAttrs.MTU, } link := &netlink.GenericLink{LinkAttrs: la, LinkType: "wireguard"} diff --git a/backend/wireguard/wireguard.go b/backend/wireguard/wireguard.go index 71fbc2039..f88ee2530 100644 --- a/backend/wireguard/wireguard.go +++ b/backend/wireguard/wireguard.go @@ -87,11 +87,12 @@ func newSubnetAttrs(publicIP net.IP, publicIPv6 net.IP, enableIPv4, enableIPv6 b return leaseAttrs, nil } -func createWGDev(ctx context.Context, wg *sync.WaitGroup, name string, psk string, keepalive *time.Duration, listenPort int) (*wgDevice, error) { +func createWGDev(ctx context.Context, wg *sync.WaitGroup, name string, psk string, keepalive *time.Duration, listenPort int, mtu int) (*wgDevice, error) { devAttrs := wgDeviceAttrs{ keepalive: keepalive, listenPort: listenPort, name: name, + MTU: mtu, } err := devAttrs.setupKeys(psk) if err != nil { @@ -128,21 +129,21 @@ func (be *WireguardBackend) RegisterNetwork(ctx context.Context, wg *sync.WaitGr var publicKey string if cfg.Mode == Separate { if config.EnableIPv4 { - dev, err = createWGDev(ctx, wg, "flannel-wg", cfg.PSK, &keepalive, cfg.ListenPort) + dev, err = createWGDev(ctx, wg, "flannel-wg", cfg.PSK, &keepalive, cfg.ListenPort, be.extIface.Iface.MTU) if err != nil { return nil, err } publicKey = dev.attrs.publicKey.String() } if config.EnableIPv6 { - v6Dev, err = createWGDev(ctx, wg, "flannel-wg-v6", cfg.PSK, &keepalive, cfg.ListenPortV6) + v6Dev, err = createWGDev(ctx, wg, "flannel-wg-v6", cfg.PSK, &keepalive, cfg.ListenPortV6, be.extIface.Iface.MTU) if err != nil { return nil, err } publicKey = dev.attrs.publicKey.String() } } else if cfg.Mode == Auto || cfg.Mode == Ipv4 || cfg.Mode == Ipv6 { - dev, err = createWGDev(ctx, wg, "flannel-wg", cfg.PSK, &keepalive, cfg.ListenPort) + dev, err = createWGDev(ctx, wg, "flannel-wg", cfg.PSK, &keepalive, cfg.ListenPort, be.extIface.Iface.MTU) if err != nil { return nil, err } diff --git a/pkg/ip/iface_windows.go b/pkg/ip/iface_windows.go index 1f30f8a44..f8788151e 100644 --- a/pkg/ip/iface_windows.go +++ b/pkg/ip/iface_windows.go @@ -152,6 +152,7 @@ func IsForwardingEnabledForInterface(iface *net.Interface) (bool, error) { return powerShellJsonData.Forwarding == 1, nil } -func GetInterfaceByIP6(ip net.IP) (*net.Interface, error) { return nil, nil } -func GetInterfaceIP6Addrs(iface *net.Interface) ([]net.IP, error) { return nil, nil } -func GetDefaultV6GatewayInterface() (*net.Interface, error) { return nil, nil } +func GetInterfaceByIP6(ip net.IP) (*net.Interface, error) { return nil, nil } +func GetInterfaceIP6Addrs(iface *net.Interface) ([]net.IP, error) { return nil, nil } +func GetInterfaceBySpecificIPRouting(ip net.IP) (*net.Interface, net.IP, error) { return nil, nil, nil } +func GetDefaultV6GatewayInterface() (*net.Interface, error) { return nil, nil }