Skip to content

Commit 609a554

Browse files
committed
Fix test and remove obsolete code
1 parent 8c7d71b commit 609a554

File tree

3 files changed

+10
-142
lines changed

3 files changed

+10
-142
lines changed

client/firewall/nftables/acl_linux.go

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -195,25 +195,6 @@ func (m *AclManager) DeletePeerRule(rule firewall.Rule) error {
195195
// createDefaultAllowRules creates default allow rules for the input and output chains
196196
func (m *AclManager) createDefaultAllowRules() error {
197197
expIn := []expr.Any{
198-
&expr.Payload{
199-
DestRegister: 1,
200-
Base: expr.PayloadBaseNetworkHeader,
201-
Offset: 12,
202-
Len: 4,
203-
},
204-
// mask
205-
&expr.Bitwise{
206-
SourceRegister: 1,
207-
DestRegister: 1,
208-
Len: 4,
209-
Mask: []byte{0, 0, 0, 0},
210-
Xor: []byte{0, 0, 0, 0},
211-
},
212-
// net address
213-
&expr.Cmp{
214-
Register: 1,
215-
Data: []byte{0, 0, 0, 0},
216-
},
217198
&expr.Verdict{
218199
Kind: expr.VerdictAccept,
219200
},

client/firewall/nftables/manager_linux.go

Lines changed: 4 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package nftables
22

33
import (
4-
"bytes"
54
"context"
65
"fmt"
76
"net"
@@ -207,44 +206,11 @@ func (m *Manager) AllowNetbird() error {
207206
m.mutex.Lock()
208207
defer m.mutex.Unlock()
209208

210-
err := m.aclManager.createDefaultAllowRules()
211-
if err != nil {
212-
return fmt.Errorf("failed to create default allow rules: %v", err)
213-
}
214-
215-
chains, err := m.rConn.ListChainsOfTableFamily(nftables.TableFamilyIPv4)
216-
if err != nil {
217-
return fmt.Errorf("list of chains: %w", err)
218-
}
219-
220-
var chain *nftables.Chain
221-
for _, c := range chains {
222-
if c.Table.Name == tableNameFilter && c.Name == chainNameInput {
223-
chain = c
224-
break
225-
}
226-
}
227-
228-
if chain == nil {
229-
log.Debugf("chain INPUT not found. Skipping add allow netbird rule")
230-
return nil
231-
}
232-
233-
rules, err := m.rConn.GetRules(chain.Table, chain)
234-
if err != nil {
235-
return fmt.Errorf("failed to get rules for the INPUT chain: %v", err)
209+
if err := m.aclManager.createDefaultAllowRules(); err != nil {
210+
return fmt.Errorf("create default allow rules: %w", err)
236211
}
237-
238-
if rule := m.detectAllowNetbirdRule(rules); rule != nil {
239-
log.Debugf("allow netbird rule already exists: %v", rule)
240-
return nil
241-
}
242-
243-
m.applyAllowNetbirdRules(chain)
244-
245-
err = m.rConn.Flush()
246-
if err != nil {
247-
return fmt.Errorf("failed to flush allow input netbird rules: %v", err)
212+
if err := m.rConn.Flush(); err != nil {
213+
return fmt.Errorf("flush allow input netbird rules: %w", err)
248214
}
249215

250216
return nil
@@ -260,10 +226,6 @@ func (m *Manager) Close(stateManager *statemanager.Manager) error {
260226
m.mutex.Lock()
261227
defer m.mutex.Unlock()
262228

263-
if err := m.resetNetbirdInputRules(); err != nil {
264-
return fmt.Errorf("reset netbird input rules: %v", err)
265-
}
266-
267229
if err := m.router.Reset(); err != nil {
268230
return fmt.Errorf("reset router: %v", err)
269231
}
@@ -283,41 +245,6 @@ func (m *Manager) Close(stateManager *statemanager.Manager) error {
283245
return nil
284246
}
285247

286-
func (m *Manager) resetNetbirdInputRules() error {
287-
chains, err := m.rConn.ListChains()
288-
if err != nil {
289-
return fmt.Errorf("list chains: %w", err)
290-
}
291-
292-
m.deleteNetbirdInputRules(chains)
293-
294-
return nil
295-
}
296-
297-
func (m *Manager) deleteNetbirdInputRules(chains []*nftables.Chain) {
298-
for _, c := range chains {
299-
if c.Table.Name == tableNameFilter && c.Name == chainNameInput {
300-
rules, err := m.rConn.GetRules(c.Table, c)
301-
if err != nil {
302-
log.Errorf("get rules for chain %q: %v", c.Name, err)
303-
continue
304-
}
305-
306-
m.deleteMatchingRules(rules)
307-
}
308-
}
309-
}
310-
311-
func (m *Manager) deleteMatchingRules(rules []*nftables.Rule) {
312-
for _, r := range rules {
313-
if bytes.Equal(r.UserData, []byte(allowNetbirdInputRuleID)) {
314-
if err := m.rConn.DelRule(r); err != nil {
315-
log.Errorf("delete rule: %v", err)
316-
}
317-
}
318-
}
319-
}
320-
321248
func (m *Manager) cleanupNetbirdTables() error {
322249
tables, err := m.rConn.ListTables()
323250
if err != nil {
@@ -421,44 +348,6 @@ func (m *Manager) createWorkTable() (*nftables.Table, error) {
421348
return table, err
422349
}
423350

424-
func (m *Manager) applyAllowNetbirdRules(chain *nftables.Chain) {
425-
rule := &nftables.Rule{
426-
Table: chain.Table,
427-
Chain: chain,
428-
Exprs: []expr.Any{
429-
&expr.Meta{Key: expr.MetaKeyIIFNAME, Register: 1},
430-
&expr.Cmp{
431-
Op: expr.CmpOpEq,
432-
Register: 1,
433-
Data: ifname(m.wgIface.Name()),
434-
},
435-
&expr.Verdict{
436-
Kind: expr.VerdictAccept,
437-
},
438-
},
439-
UserData: []byte(allowNetbirdInputRuleID),
440-
}
441-
_ = m.rConn.InsertRule(rule)
442-
}
443-
444-
func (m *Manager) detectAllowNetbirdRule(existedRules []*nftables.Rule) *nftables.Rule {
445-
ifName := ifname(m.wgIface.Name())
446-
for _, rule := range existedRules {
447-
if rule.Table.Name == tableNameFilter && rule.Chain.Name == chainNameInput {
448-
if len(rule.Exprs) < 4 {
449-
if e, ok := rule.Exprs[0].(*expr.Meta); !ok || e.Key != expr.MetaKeyIIFNAME {
450-
continue
451-
}
452-
if e, ok := rule.Exprs[1].(*expr.Cmp); !ok || e.Op != expr.CmpOpEq || !bytes.Equal(e.Data, ifName) {
453-
continue
454-
}
455-
return rule
456-
}
457-
}
458-
}
459-
return nil
460-
}
461-
462351
func insertReturnTrafficRule(conn *nftables.Conn, table *nftables.Table, chain *nftables.Chain) {
463352
rule := &nftables.Rule{
464353
Table: table,

client/internal/dnsfwd/manager.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,23 +161,21 @@ func (m *Manager) allowDNSFirewall() error {
161161

162162
dnsRules, err := m.firewall.AddPeerFiltering(nil, net.IP{0, 0, 0, 0}, firewall.ProtocolUDP, nil, dport, firewall.ActionAccept, "")
163163
if err != nil {
164-
log.Errorf("failed to add allow DNS router rules, err: %v", err)
165-
return err
164+
return fmt.Errorf("add udp firewall rule: %w", err)
166165
}
167-
m.fwRules = dnsRules
168166

169167
tcpRules, err := m.firewall.AddPeerFiltering(nil, net.IP{0, 0, 0, 0}, firewall.ProtocolTCP, nil, dport, firewall.ActionAccept, "")
170168
if err != nil {
171-
log.Errorf("failed to add allow DNS router rules, err: %v", err)
172-
return err
169+
return fmt.Errorf("add tcp firewall rule: %w", err)
173170
}
174-
m.tcpRules = tcpRules
175171

176172
if err := m.firewall.Flush(); err != nil {
177-
log.Errorf("failed to flush DNS firewall rules: %v", err)
178-
return err
173+
return fmt.Errorf("flush: %w", err)
179174
}
180175

176+
m.fwRules = dnsRules
177+
m.tcpRules = tcpRules
178+
181179
m.registerNetstackServices()
182180

183181
return nil

0 commit comments

Comments
 (0)