mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-01-11 23:49:30 -05:00
cli: set MTU in wg-quick conf
This commit is contained in:
parent
935b2a4490
commit
c0105a59aa
@ -1,13 +1,17 @@
|
|||||||
package cmd
|
package cmd
|
||||||
|
|
||||||
// wireguardKeyLength is the length of a WireGuard key in byte.
|
const (
|
||||||
const wireguardKeyLength = 32
|
// 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.
|
// masterSecretLengthDefault is the default length in bytes for CLI generated master secrets.
|
||||||
const masterSecretLengthDefault = 32
|
masterSecretLengthDefault = 32
|
||||||
|
|
||||||
// masterSecretLengthMin is the minimal length in bytes for user provided master secrets.
|
// masterSecretLengthMin is the minimal length in bytes for user provided master secrets.
|
||||||
const masterSecretLengthMin = 16
|
masterSecretLengthMin = 16
|
||||||
|
|
||||||
// constellationNameLength is the maximum length of a Constellation's name.
|
// constellationNameLength is the maximum length of a Constellation's name.
|
||||||
const constellationNameLength = 37
|
constellationNameLength = 37
|
||||||
|
)
|
||||||
|
@ -217,7 +217,7 @@ func (r activationResult) writeWGQuickFile(fileHandler file.Handler, config *con
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("create wg config: %w", err)
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("create wg-quick config: %w", err)
|
return fmt.Errorf("create wg-quick config: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
@ -728,7 +729,7 @@ func TestWriteWGQuickFile(t *testing.T) {
|
|||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
file, err := tc.fileHandler.Read(*tc.config.WGQuickConfigPath)
|
file, err := tc.fileHandler.Read(*tc.config.WGQuickConfigPath)
|
||||||
assert.NoError(err)
|
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.
|
// 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)
|
clientIP := net.ParseIP(clientVPNIP)
|
||||||
if clientIP == nil {
|
if clientIP == nil {
|
||||||
return nil, fmt.Errorf("invalid client vpn ip '%s'", clientVPNIP)
|
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{
|
quickfile := wgquick.Config{
|
||||||
Config: config,
|
Config: config,
|
||||||
Address: []net.IPNet{{IP: clientIP, Mask: []byte{255, 255, 0, 0}}},
|
Address: []net.IPNet{{IP: clientIP, Mask: []byte{255, 255, 0, 0}}},
|
||||||
|
MTU: mtu,
|
||||||
}
|
}
|
||||||
data, err := quickfile.MarshalText()
|
data, err := quickfile.MarshalText()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -192,7 +192,8 @@ func TestNewWGQuickConfig(t *testing.T) {
|
|||||||
t.Run(name, func(t *testing.T) {
|
t.Run(name, func(t *testing.T) {
|
||||||
assert := assert.New(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 {
|
if tc.wantErr {
|
||||||
assert.Error(err)
|
assert.Error(err)
|
||||||
@ -202,6 +203,7 @@ func TestNewWGQuickConfig(t *testing.T) {
|
|||||||
assert.NoError(quickConfig.UnmarshalText(quickFile))
|
assert.NoError(quickConfig.UnmarshalText(quickFile))
|
||||||
assert.Equal(tc.config.PrivateKey, quickConfig.PrivateKey)
|
assert.Equal(tc.config.PrivateKey, quickConfig.PrivateKey)
|
||||||
assert.Equal(tc.clientVPNIP, quickConfig.Address[0].IP.String())
|
assert.Equal(tc.clientVPNIP, quickConfig.Address[0].IP.String())
|
||||||
|
assert.Equal(mtu, quickConfig.MTU)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user