Adding rules in code produces different results and logs than the rules I added directly from the command line
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 25/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- go, linux
- Ambito
- networking
Direzione di ricerca
Non sono indicati file del repository né test. Inizia riproducendo le regole della riga di comando e il programma Go mostrati nell'issue, quindi confronta le regole nftables e i log risultanti, in particolare gli intervalli degli insiemi di intervalli e le espressioni di lookup. Il lavoro è completato quando la discrepanza è stata identificata e corretta, in modo che la regola creata da Go non blocchi traffico non intenzionale come 127.0.0.1.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
When i used command lines
{
nft add table ip filter
nft add chain ip filter output { type filter hook output priority 0; }
nft add set filter ipSet { type ipv4_addr ; flags interval;}
nft add element ip filter ipSet {10.34.11.179}
nft add set filter portSet { type inet_service ; flags interval;}
nft add element ip filter portSet {1234}
nft add rule ip filter output ip daddr @ipSet tcp dport @portSet counter log drop
}
to add a rule related to set, it worked correctly.
But when i used nftables-main to add a similar rule, it blocked tcp flow to "127.0.0.1" too.
The code is :
func main() {
c, err := nftables.New()
if err != nil {
return
}
c.FlushRuleset()
filter := c.AddTable(&nftables.Table{
Family: nftables.TableFamilyIPv4,
Name: "filter",
})
input := c.AddChain(&nftables.Chain{
Name: "output",
Hooknum: nftables.ChainHookOutput,
Priority: nftables.ChainPriorityFilter,
Table: filter,
Type: nftables.ChainTypeFilter,
})
ipSet := &nftables.Set{
Name:"ipSet",
Table: filter,
Interval: true,
Concatenation: true,
KeyType: nftables.TypeIPAddr,
}
if err := c.AddSet(ipSet, []nftables.SetElement{
{
Key: []byte(net.ParseIP("10.34.11.179").To4()),
KeyEnd: []byte(net.ParseIP("10.34.11.180").To4()),
},
}); err != nil {
return
}
portSet := &nftables.Set{
Name:"portSet",
Table: filter,
Interval: true,
Concatenation: true,
KeyType: nftables.TypeInetService,
}
if err := c.AddSet(portSet, []nftables.SetElement{
{
Key: binaryutil.BigEndian.PutUint16(1234),
KeyEnd:binaryutil.BigEndian.PutUint16(1235),
},
}); err != nil {
return
}
c.AddRule(&nftables.Rule{
Table: filter,
Chain: input,
Exprs: []expr.Any{
&expr.Payload{
DestRegister: 1,
Base: expr.PayloadBaseNetworkHeader,
Offset: 16,
Len: 4,
},
&expr.Lookup{
SourceRegister: 1,
SetName: ipSet.Name,
SetID: ipSet.ID,
},
&expr.Meta{Key: expr.MetaKeyL4PROTO, Register: 1},
&expr.Cmp{
Op: expr.CmpOpEq,
Register: 1,
Data: []byte{unix.IPPROTO_TCP},
},
&expr.Payload{
DestRegister: 1,
Base: expr.PayloadBaseTransportHeader,
Offset: 2,
Len: 2,
},
&expr.Lookup{
SourceRegister: 1,
SetName: portSet.Name,
SetID: portSet.ID,
},
&expr.Counter{},
&expr.Log{},
&expr.Verdict{
Kind: expr.VerdictDrop,
},
},
})
if err := c.Flush(); err != nil {
return
}
}
log
- Lingua principale
- Go
- Stelle
- 1.4k
- Fork
- 187
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di google/nftables
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
-
Multiple Netlink Decode Paths Can Panic on Malformed or Undersized InputForse già presa @vulragrag-star l’ha presa 32 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 68/100
-
New Tag release.Aperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di google/nftables
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
[BUG] steve: Updating a resource through /v1 ignores dryRun, fieldManager and fieldValidationApertaarea/frameworks area/steve kind/bug team/frameworks
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Exclude merge queue branches from push trigger in ci-workflow.yaml to eliminate duplicate CI runsApertabug infra ready-for-triage triaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
redhat-et/ProtoBot#312 · 2 commenti · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno