Puncte:2

iptables s-a spălat la reîncărcarea firewalld

drapel br

Rulez pe Rocky Linux (bazat pe RHEL8) și mă confrunt cu firewalld și iptables. Ei bine, oricum nu chiar iptables... Permite-mi să explic.

Am configurat un cluster K8S pe VMWare ESXi cu șase mașini virtuale, toate la fel. eu nevoie să ruleze firewalld, având în vedere acest mediu. Folosesc Weave CNI, care folosește iptables pentru a-și crea regulile de rețea.

Iată constatările mele inițiale:

  • pe containerele docker de țesătură și Se utilizează gazde VM, iptables cu backend nf_tables
    • acest lucru este confirmat de iptables -V ieșire care îmi dă iptables v1.8.4 (nf_tables)
  • firewalld este configurat pentru a utiliza nftables ca backend (FirewallBackend)
  • serviciu iptables nu există (Unitatea iptables.service nu a putut fi găsită.)
  • Serviciul nftables este încărcat, dar inactiv
  • serviciul firewalld rulează
  • dacă pornesc serviciul nftables, serviciul firewalld este oprit și invers

Din punctul meu de vedere despre firewalld, deoarece folosește nftables, nu ar trebui să șteargă iptables deloc, conform lor postare pe blog despre backend-ul nftables.

Când weave își stabilește regulile iptables (pentru politicile de rutare și rețea), le pot vedea fie cu iptables-salvare sau set de reguli liste nft. Aceasta înseamnă că, chiar dacă Weave folosește iptables pentru a-și stabili regulile, acestea sunt de fapt setate în nftables.

Acum, problema mea este că dacă reîncarc firewalld (cu firewall-cmd --reîncărcare sau systemctl reîncărcați firewalld.service) după ce Weave și-a stabilit regulile, toate regulile sunt eliminate! Pot confirma asta cu iptables-salvare sau set de reguli liste nft.

Poate fi legat de folosire iptables comenzi în loc de nft? Chiar dacă iptables folosește backend-ul nf_tables?

Vă rugăm să rețineți că această problemă este parțial abordată de țesătură, deoarece acestea monitorizează regulile pentru a vedea dacă un lanț special (gol) WEAVE-CANARY mai există. Dacă nu este acolo, ei recreează rutele de rutare, dar nu se face nimic pentru regulile politicii de rețea. Acesta este în prezent un cerere de caracteristică.

Care sunt soluțiile posibile? M-am gândit să mă conectez la serviciul firewalld pentru a adăuga ExecStopPre și ExecReloadPre pentru a salva alte reguli decât cea a firewall-ului /etc/sysconfig/nftables.conf (sau alt fișier, inclus de acolo), dar este un fel de hacker și nu-mi place această „soluție”. În plus, nici măcar nu sunt sigur că va funcționa, având în vedere că serviciul nftables este oprit.

Edit: Am făcut niște teste și comportamentul este chiar ciudat.

Am adăugat o regulă cu iptables: iptables -I INTRARE 3 -s 10.1.1.9 -j DROP, apoi am reîncărcat firewall-ul și regula nu mai există! Am incercat la fel cu nft: nft add rule ip filter INPUT ip saddr 10.1.1.9 drop, firewall reîncărcat și rezultatul este acelașiâ¦

Acest lucru mă înnebunește, firewalld nu ar trebui să atingă alte tabele de reguli decât ale sale, dar nu este cazul aici!

A.B avatar
drapel cl
A.B
Dacă firewalld folosește cu adevărat nftables ca backend, ar trebui să funcționeze numai cu tabelul firewalld: https://firewalld.org/2018/07/nftables-backend#only-flush-firewallds-rules . Există un tabel cu firewall?
A.B avatar
drapel cl
A.B
Vedeți și acest Q/A: https://serverfault.com/questions/1046179/rhel-centos-now-to-add-nftable-rules-to-firewalld-on-system-boot (rețineți remarca mea despre serviciul nftables clătirea tuturor).
drapel br
@A.B Într-adevăr, există un tabel cu firewall.Și FirewallBackend este setat la nftables în configurația firewalld, așa cum se precizează în postarea mea. De aceea mă înnebunește ^^' Am văzut și citit deja întrebările/răspunsurile pe care le-ați indicat, dar nu cred că asta ar rezolva problema, deoarece serviciul nftables nu rulează deloc (din cauza rulării serviciului firewalld). De fapt, ideea de a te conecta la serviciul firewalld este foarte inspirată din răspunsul tău. Cu toate acestea, am testat să adaug niște reguli la /etc/sysconfig/nftables.conf și să reîncarc firewalld, dar nu văd acele reguli, așa că nu este o soluție de lucru... Sunt cam blocat rn.
drapel br
@A.B. Pentru claritate, iată tabelele pe care le am rn: filtru ip, filtru ip6, filtru bridge, securitate ip, ip raw, ip mangle, ip nat, ip6 security, ip6 raw, ip6 mangle, ip6 nat, bridge nat, inet firewalld, ip firewalld, ip6 firewalld. Weave își adaugă regulile în filtrul ip, ip mangle și ip nat. La reîncărcarea/repornirea firewall-ului, acele tabele sunt șters.
A.B avatar
drapel cl
A.B
Într-adevăr, la pornirea/oprirea/reîncărcarea firewalld, o regulă nftables într-un alt tabel decât iptables sau firewalld este păstrată, dar regulile iptables nu sunt. Așa că blogul la care am legat pare să fie greșit.
A.B avatar
drapel cl
A.B
Rețineți că firewalld cu backend nftables poate folosi în continuare iptables: cu reguli directe. Deci acesta ar putea fi motivul pentru care iptables este încă șters. Acum pentru a afla unde este documentat acest lucru dacă este...
drapel br
Din păcate, este blogul oficial firewalld... Cred că ar fi bine să depun o problemă pe GitHub-ul lor atunci! Multumesc pentru ajutor btw :)
Puncte:2
drapel br

Sursă: Răspunsul la problemele GitHub de la colaboratorul unui firewall

Sunt câteva lucruri care se întâmplă aici.

  • Varianta nft a iptables va adăuga reguli la nftables în tabelele cunoscute: filtru, nat, brut, etc.
  • firewalld șterge întotdeauna toate iptables reguli (de ex. iptables -F -t filtru) care spălă toate lanțurile din filtru masa. Aceasta corespunde cunoscutului nftables nume de tabel menționate mai sus.

Firewalld nftables backend numai atinge firewalld masă, dar mese filtru, nat, brut, etc sunt atinse indirect via iptables-nft pentru a suporta regulile directe iptables. Acest comportament nu poate fi modificat din cauza compatibilității. Firewalld nu va atinge altele nftables tabele totuși, de ex. un tabel numit foobar nu s-ar înroși.

Din păcate nu putem face nimic aici. Noi fie a) menținem compatibilitatea și lăsăm iptables mesele cu nume sunt eliminate sau b) pică iptables suport direct al regulilor. Opțiunea A este cea mai ușor de utilizat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.