mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-01-11 15:39:33 -05:00
cli: set MTU in wg-quick conf
This commit is contained in:
parent
935b2a4490
commit
c0105a59aa
@ -1,13 +1,17 @@
|
||||
package cmd
|
||||
|
||||
// wireguardKeyLength is the length of a WireGuard key in byte.
|
||||
const wireguardKeyLength = 32
|
||||
const (
|
||||
// wireguardAdminMTU is the MTU designated for the admin's WireGuard interface.
|
||||
//
|
||||
// WireGuard doesn't support Path MTU Discovery. Thus, its default MTU can be too high on some networks.
|
||||
wireguardAdminMTU = 1300
|
||||
|
||||
// masterSecretLengthDefault is the default length in bytes for CLI generated master secrets.
|
||||
const masterSecretLengthDefault = 32
|
||||
// masterSecretLengthDefault is the default length in bytes for CLI generated master secrets.
|
||||
masterSecretLengthDefault = 32
|
||||
|
||||
// masterSecretLengthMin is the minimal length in bytes for user provided master secrets.
|
||||
const masterSecretLengthMin = 16
|
||||
// masterSecretLengthMin is the minimal length in bytes for user provided master secrets.
|
||||
masterSecretLengthMin = 16
|
||||
|
||||
// constellationNameLength is the maximum length of a Constellation's name.
|
||||
const constellationNameLength = 37
|
||||
// constellationNameLength is the maximum length of a Constellation's name.
|
||||
constellationNameLength = 37
|
||||
)
|
||||
|
@ -217,7 +217,7 @@ func (r activationResult) writeWGQuickFile(fileHandler file.Handler, config *con
|
||||
if err != nil {
|
||||
return fmt.Errorf("create wg config: %w", err)
|
||||
}
|
||||
data, err := vpn.NewWGQuickConfig(wgConf, r.clientVpnIP)
|
||||
data, err := vpn.NewWGQuickConfig(wgConf, r.clientVpnIP, wireguardAdminMTU)
|
||||
if err != nil {
|
||||
return fmt.Errorf("create wg-quick config: %w", err)
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
@ -728,7 +729,7 @@ func TestWriteWGQuickFile(t *testing.T) {
|
||||
assert.NoError(err)
|
||||
file, err := tc.fileHandler.Read(*tc.config.WGQuickConfigPath)
|
||||
assert.NoError(err)
|
||||
assert.NotEmpty(file)
|
||||
assert.Contains(string(file), fmt.Sprint("MTU = ", wireguardAdminMTU))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -148,7 +148,7 @@ func NewConfig(coordinatorPubKey, coordinatorPubIP, clientPrivKey string) (wgtyp
|
||||
}
|
||||
|
||||
// NewWGQuickConfig create a new WireGuard wg-quick configuration file and mashals it to bytes.
|
||||
func NewWGQuickConfig(config wgtypes.Config, clientVPNIP string) ([]byte, error) {
|
||||
func NewWGQuickConfig(config wgtypes.Config, clientVPNIP string, mtu int) ([]byte, error) {
|
||||
clientIP := net.ParseIP(clientVPNIP)
|
||||
if clientIP == nil {
|
||||
return nil, fmt.Errorf("invalid client vpn ip '%s'", clientVPNIP)
|
||||
@ -156,6 +156,7 @@ func NewWGQuickConfig(config wgtypes.Config, clientVPNIP string) ([]byte, error)
|
||||
quickfile := wgquick.Config{
|
||||
Config: config,
|
||||
Address: []net.IPNet{{IP: clientIP, Mask: []byte{255, 255, 0, 0}}},
|
||||
MTU: mtu,
|
||||
}
|
||||
data, err := quickfile.MarshalText()
|
||||
if err != nil {
|
||||
|
@ -192,7 +192,8 @@ func TestNewWGQuickConfig(t *testing.T) {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
quickFile, err := NewWGQuickConfig(tc.config, tc.clientVPNIP)
|
||||
const mtu = 2
|
||||
quickFile, err := NewWGQuickConfig(tc.config, tc.clientVPNIP, mtu)
|
||||
|
||||
if tc.wantErr {
|
||||
assert.Error(err)
|
||||
@ -202,6 +203,7 @@ func TestNewWGQuickConfig(t *testing.T) {
|
||||
assert.NoError(quickConfig.UnmarshalText(quickFile))
|
||||
assert.Equal(tc.config.PrivateKey, quickConfig.PrivateKey)
|
||||
assert.Equal(tc.clientVPNIP, quickConfig.Address[0].IP.String())
|
||||
assert.Equal(mtu, quickConfig.MTU)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user