refactor: update iptables and nftables methods to use receiver functions

This commit is contained in:
SunBK201 2025-11-12 00:56:05 +08:00
parent ba1ec470ee
commit 90097acb85
2 changed files with 16 additions and 14 deletions

View File

@ -36,19 +36,19 @@ func (s *Server) iptSetup() error {
return err return err
} }
if s.cfg.SetTTL { if s.cfg.SetTTL {
err = IptSetTTL(ipt) err = s.IptSetTTL(ipt)
if err != nil { if err != nil {
return err return err
} }
} }
if s.cfg.DelTCPTimestamp && !s.cfg.SetIPID { if s.cfg.DelTCPTimestamp && !s.cfg.SetIPID {
err = IptDelTCPTS(ipt) err = s.IptDelTCPTS(ipt)
if err != nil { if err != nil {
return err return err
} }
} }
if s.cfg.SetIPID { if s.cfg.SetIPID {
err = IptSetIP(ipt) err = s.IptSetIP(ipt)
if err != nil { if err != nil {
return err return err
} }
@ -67,7 +67,7 @@ func (s *Server) iptCleanup() error {
return nil return nil
} }
func IptSetTTL(ipt *iptables.IPTables) error { func (s *Server) IptSetTTL(ipt *iptables.IPTables) error {
err := ipt.Append(table, chain, RuleTTL...) err := ipt.Append(table, chain, RuleTTL...)
if err != nil { if err != nil {
return err return err
@ -75,7 +75,7 @@ func IptSetTTL(ipt *iptables.IPTables) error {
return nil return nil
} }
func IptDelTCPTS(ipt *iptables.IPTables) error { func (s *Server) IptDelTCPTS(ipt *iptables.IPTables) error {
err := ipt.Append(table, chain, RuleDelTCPTS...) err := ipt.Append(table, chain, RuleDelTCPTS...)
if err != nil { if err != nil {
return err return err
@ -83,7 +83,7 @@ func IptDelTCPTS(ipt *iptables.IPTables) error {
return nil return nil
} }
func IptSetIP(ipt *iptables.IPTables) error { func (s *Server) IptSetIP(ipt *iptables.IPTables) error {
err := ipt.Append(table, chain, RuleIP...) err := ipt.Append(table, chain, RuleIP...)
if err != nil { if err != nil {
return err return err

View File

@ -4,6 +4,7 @@ package netlink
import ( import (
"context" "context"
"fmt"
"sigs.k8s.io/knftables" "sigs.k8s.io/knftables"
) )
@ -18,13 +19,13 @@ func (s *Server) nftSetup() error {
tx.Add(s.nftable) tx.Add(s.nftable)
if s.cfg.SetTTL { if s.cfg.SetTTL {
NftSetTTL(tx, s.nftable) s.NftSetTTL(tx, s.nftable)
} }
if s.cfg.DelTCPTimestamp && !s.cfg.SetIPID { if s.cfg.DelTCPTimestamp && !s.cfg.SetIPID {
NftDelTCPTS(tx, s.nftable) s.NftDelTCPTS(tx, s.nftable)
} }
if s.cfg.SetIPID { if s.cfg.SetIPID {
NftSetIP(tx, s.nftable) s.NftSetIP(tx, s.nftable)
} }
if err := nft.Run(context.TODO(), tx); err != nil { if err := nft.Run(context.TODO(), tx); err != nil {
@ -48,7 +49,7 @@ func (s *Server) nftCleanup() error {
return nil return nil
} }
func NftSetTTL(tx *knftables.Transaction, table *knftables.Table) { func (s *Server) NftSetTTL(tx *knftables.Transaction, table *knftables.Table) {
chain := &knftables.Chain{ chain := &knftables.Chain{
Name: "TTL64", Name: "TTL64",
Type: knftables.PtrTo(knftables.FilterType), Type: knftables.PtrTo(knftables.FilterType),
@ -66,7 +67,7 @@ func NftSetTTL(tx *knftables.Transaction, table *knftables.Table) {
tx.Add(rule) tx.Add(rule)
} }
func NftDelTCPTS(tx *knftables.Transaction, table *knftables.Table) { func (s *Server) NftDelTCPTS(tx *knftables.Transaction, table *knftables.Table) {
chain := &knftables.Chain{ chain := &knftables.Chain{
Name: "HELPER_QUEUE", Name: "HELPER_QUEUE",
Type: knftables.PtrTo(knftables.FilterType), Type: knftables.PtrTo(knftables.FilterType),
@ -77,14 +78,15 @@ func NftDelTCPTS(tx *knftables.Transaction, table *knftables.Table) {
rule := &knftables.Rule{ rule := &knftables.Rule{
Chain: chain.Name, Chain: chain.Name,
Rule: knftables.Concat( Rule: knftables.Concat(
"tcp flags syn counter queue num 10301 bypass", "tcp flags syn",
fmt.Sprintf("counter queue num %d bypass", s.nfqServer.QueueNum),
), ),
} }
tx.Add(chain) tx.Add(chain)
tx.Add(rule) tx.Add(rule)
} }
func NftSetIP(tx *knftables.Transaction, table *knftables.Table) { func (s *Server) NftSetIP(tx *knftables.Transaction, table *knftables.Table) {
chain := &knftables.Chain{ chain := &knftables.Chain{
Name: "HELPER_QUEUE", Name: "HELPER_QUEUE",
Type: knftables.PtrTo(knftables.FilterType), Type: knftables.PtrTo(knftables.FilterType),
@ -95,7 +97,7 @@ func NftSetIP(tx *knftables.Transaction, table *knftables.Table) {
rule := &knftables.Rule{ rule := &knftables.Rule{
Chain: chain.Name, Chain: chain.Name,
Rule: knftables.Concat( Rule: knftables.Concat(
"counter queue num 10301 bypass", fmt.Sprintf("counter queue num %d bypass", s.nfqServer.QueueNum),
), ),
} }
tx.Add(chain) tx.Add(chain)