Add default firewall rules and fix tests in the github flow.

This commit is contained in:
Givi Khojanashvili
2023-03-23 16:54:04 +04:00
parent 9eb5de6d62
commit 4c56578b0c
7 changed files with 111 additions and 38 deletions
+1 -1
View File
@@ -223,7 +223,7 @@ func (e *Engine) Start() error {
e.routeManager = routemanager.NewManager(e.ctx, e.config.WgPrivateKey.PublicKey().String(), e.wgInterface, e.statusRecorder)
e.firewallManager, err = buildFirewallManager()
e.firewallManager, err = buildFirewallManager(wgIfaceName)
if err != nil {
log.Errorf("failed to create firewall manager, ACL policy will not work: %s", err.Error())
} else {
+7
View File
@@ -6,6 +6,7 @@ import (
"net"
"net/netip"
"os"
"os/exec"
"path/filepath"
"runtime"
"strings"
@@ -945,6 +946,12 @@ func TestEngine_firewallManager(t *testing.T) {
if runtime.GOOS != "linux" {
t.Skipf("firewall manager not supported in the: %s", runtime.GOOS)
return
} else {
_, err := exec.LookPath("iptables")
if err != nil {
t.Skipf("iptables not found: %v", err)
return
}
}
ctx, cancel := context.WithTimeout(CtxInitState(context.Background()), 10*time.Second)
+4 -9
View File
@@ -1,3 +1,5 @@
//go:build !linux
package internal
import (
@@ -5,15 +7,8 @@ import (
"runtime"
"github.com/netbirdio/netbird/client/firewall"
"github.com/netbirdio/netbird/client/firewall/iptables"
)
func buildFirewallManager() (fw firewall.Manager, err error) {
switch runtime.GOOS {
case "linux":
return iptables.Create()
default:
return nil, fmt.Errorf("not implemented for this OS: %s", runtime.GOOS)
}
func buildFirewallManager(wgIfaceName string) (fw firewall.Manager, err error) {
return nil, fmt.Errorf("not implemented for this OS: %s", runtime.GOOS)
}
+18
View File
@@ -0,0 +1,18 @@
package internal
import (
log "github.com/sirupsen/logrus"
"github.com/netbirdio/netbird/client/firewall"
"github.com/netbirdio/netbird/client/firewall/iptables"
)
// buildFirewallManager creates a firewall manager instance for the Linux
func buildFirewallManager(wgIfaceName string) (firewall.Manager, error) {
fw, err := iptables.Create(wgIfaceName)
if err != nil {
log.Debugf("failed to create iptables manager: %s", err)
return nil, err
}
return fw, nil
}