Pe un Linux Centos7, am ceva trafic care este direcționat cu rute statice de la o interfață la alta.
Am observat că, cu firewalld activat, ambele interfețe adăugate într-o zonă și nimic permis în această zonă, tot traficul este în continuare direcționat fără nicio restricție.
Am încercat să configurez ip_forward=0 : atunci traficul nu a mai fost direcționat.
Apoi am adăugat reguli FORWARD în firewalld direct.xml: traficul a fost direcționat și filtrat.
Întrebările mele sunt:
- Setarea nucleului ip_forward „ocolește” firewalld?
- De ce se explică pe diverse forumuri că ip_forward este obligatoriu pentru a direcționa traficul de la o interfață la alta, dacă folosirea unui iptable FORWARD funcționează cu această setare dezactivată?
Am găsit foarte puține explicații despre relațiile dintre firewalld și kernel ip_forward și aș dori să înțeleg ce îmi lipsește aici
EDITARE: Masquerade este activată în zona firewalld
EDIT2: Am făcut alte teste și se pare că nu este vorba despre setarea ip_filter, ci despre mascarada. Am fost păcălit de faptul că „firewall-cmd --reload” forțează ip_forward la 1.
Iată cum să reproduc cazul meu:
Proaspăt sistem de operare Centos7. Configurarea a două interfețe eth1 și eth2 cu adrese IP X și Y
-----------------> @X CENTOS @Y -----------------> @Z -------
dst_IP = A dst_IP = A
src_IP = B dst_IP = B
editați /etc/firewalld/zones/TEST.xml, adăugați cele două interfețe, activați masquerade.
adăugați o rută după cum urmează:
Destination Gateway GenMask
A Z 255.255.255.255
Apoi activați ip forward și dezactivați rp_filter:
sysctl net.ipv4.ip_forward=1
sysctl net.ipv4.conf.eth1.rp_filter=2
sysctl net.ipv4.conf.eth2.rp_filter=2
În această configurare, pachetele sunt transferate la @Z, dar nu există nicio regulă în firewalld configurată pentru a le accepta și nu înțeleg de ce