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!