Fix listening in netstack mode

This commit is contained in:
Viktor Liu 2025-01-11 02:10:09 +01:00
parent d31543cb12
commit 648b22aca1
2 changed files with 9 additions and 5 deletions

View File

@ -27,6 +27,7 @@ import (
"github.com/netbirdio/netbird/client/iface" "github.com/netbirdio/netbird/client/iface"
"github.com/netbirdio/netbird/client/iface/bind" "github.com/netbirdio/netbird/client/iface/bind"
"github.com/netbirdio/netbird/client/iface/device" "github.com/netbirdio/netbird/client/iface/device"
"github.com/netbirdio/netbird/client/iface/netstack"
"github.com/netbirdio/netbird/client/internal/acl" "github.com/netbirdio/netbird/client/internal/acl"
"github.com/netbirdio/netbird/client/internal/dns" "github.com/netbirdio/netbird/client/internal/dns"
"github.com/netbirdio/netbird/client/internal/dnsfwd" "github.com/netbirdio/netbird/client/internal/dnsfwd"
@ -705,12 +706,16 @@ func (e *Engine) updateSSH(sshConf *mgmProto.SSHConfig) error {
} }
// start SSH server if it wasn't running // start SSH server if it wasn't running
if isNil(e.sshServer) { if isNil(e.sshServer) {
listenAddr := fmt.Sprintf("%s:%d", e.wgInterface.Address().IP.String(), nbssh.DefaultSSHPort)
if netstack.IsEnabled() {
listenAddr = fmt.Sprintf("127.0.0.1:%d", nbssh.DefaultSSHPort)
}
// nil sshServer means it has not yet been started // nil sshServer means it has not yet been started
var err error var err error
e.sshServer, err = e.sshServerFunc(e.config.SSHKey, e.sshServer, err = e.sshServerFunc(e.config.SSHKey, listenAddr)
fmt.Sprintf("%s:%d", e.wgInterface.Address().IP.String(), nbssh.DefaultSSHPort))
if err != nil { if err != nil {
return err return fmt.Errorf("create ssh server: %w", err)
} }
go func() { go func() {
// blocking // blocking
@ -759,7 +764,7 @@ func (e *Engine) updateConfig(conf *mgmProto.PeerConfig) error {
if conf.GetSshConfig() != nil { if conf.GetSshConfig() != nil {
err := e.updateSSH(conf.GetSshConfig()) err := e.updateSSH(conf.GetSshConfig())
if err != nil { if err != nil {
log.Warnf("failed handling SSH server setup %v", err) log.Warnf("failed handling SSH server setup: %v", err)
} }
} }

View File

@ -71,7 +71,6 @@ func TestMain(m *testing.M) {
} }
func TestEngine_SSH(t *testing.T) { func TestEngine_SSH(t *testing.T) {
// todo resolve test execution on freebsd
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {
t.Skip("skipping TestEngine_SSH") t.Skip("skipping TestEngine_SSH")
} }