Am o rețetă pe care o folosesc deja în multe cazuri, dar de data aceasta nu funcționează pe Debian 11 (kernel 5.10.0-10-amd64)
configurația mea este practic o interfață internă eth0 pentru un LAN RFC1918 și două interfețe externe conectate la o cutie a unui ISP:
eth1 pentru ISP1 ca router implicit la 10.0.0.254 cu IP public 1.2.3.4 (la figurat)
eth2 pentru ISP2 are un router la 10.0.3.254 cu public 2.3.4.5
Am un alt traseu posibil. Vreau să controlez ce rută urmează pachetul meu, așa că creez niște reguli și fwmark. Mai întâi atasez 2<tab>al doilea router
în /etc/iproute2/rt_tables
regulă ip adăugați fwmark 0x3 căutare secundrouter
ip route add default via 10.0.3.254 table secondrouter
totul este bine in ceea ce priveste IP route list table secondrouter
și lista de reguli ip
în acest moment sunt capabil să fac:
curl -4 ifconfig.me
1.2.3.4 #<- adresa IP publică a rutei mele implicite
Atunci o fac
iptables-legacy -t mangle -A OUTPUT -d 34.117.59.81 -j MARK --set-mark 0x3
acum dacă o fac
curl -4 ifconfig.me
<timeout>
Unde mă așteptam la 2.3.4.5 ca IP public.
Deci, în mod clar, pachetul marcat nu ia traseul din tabelul de rute IP, și mai rău, expiră.
Dacă fac acest lucru exact în același mod pe Debian mai vechi, funcționează perfect.
NB: daca fac a
IP route add 34.117.59.81 prin <al doilea router IP>
testul meu de bucle funcționează perfect așa cum era de așteptat
curl -4 ifconfig.me
2.3.4.5 #<- Adresa IP Pub a celui de-al doilea router al meu
Problema mea apare la utilizare iptables
sau iptables-legacy
pentru a marca pachetele pe ruta.
BTW am o mulțime de reguli iptables care funcționează bine, așa că nu arată ca o problemă cu iptables.
iptables-legacy-save
# Generat de iptables-save v1.8.7 pe duminica 23 ianuarie 22:35:06 2022
*calandru
:ACCEPTAREA PRE-ROUTARE [41:5019]
:INPUT ACCEPT [41:5019]
: FORWARD ACCEPT [0:0]
: ACCEPT IEȘIRE [44:4752]
: POSTROUTING ACCEPT [44:4752]
-A IEȘIRE -d 192.168.0.0/16 -j RETURN
-A IEȘIRE -d 172.16.0.0/12 -j RETURN
-A IEȘIRE -d 10.0.0.0/8 -j RETURN
-A IEȘIRE -d 34.117.59.81/32 -j MARK --set-xmark 0x3/0xffffffff
COMMIT
# Finalizat duminică, 23 ianuarie 22:35:06 2022
# Generat de iptables-save v1.8.7 pe duminica 23 ianuarie 22:35:06 2022
*filtru
:INPUT DROP [19:7746]
: FORWARD DROP [0:0]
: ACCEPT IEȘIRE [846:62420]
-A INPUT -m stare --stare INVALID -j DROP
-A INPUT -m stare --stare RELATED,STABLISHED -j ACCEPT
-A INTRARE -i lo -j ACCEPT
-A INTRARE -p icmp -j ACCEPT
-A INTRARE -p udp -m udp --dport 500 -j ACCEPT
-A INTRARE -p esp -j ACCEPT
-A INTRARE -p ah -j ACCEPT
-A INTRARE -p tcp -m tcp --dport 22 -j ACCEPT
-A INTRARE -s 192.168.0.0/16 -p tcp -m tcp --dport 3128 -j ACCEPT
-A INTRARE -s 172.16.0.0/12 -p tcp -m tcp --dport 3128 -j ACCEPT
-A INTRARE -s 10.0.0.0/8 -p tcp -m tcp --dport 3128 -j ACCEPT
-A FORWARD -m stare --stare INVALID -j DROP
-A FORWARD -m stare --stare RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.0.0/16 -d 10.0.6.0/24 -j ACCEPT
-A FORWARD -s 10.0.6.0/24 -d 192.168.0.0/16 -j ACCEPT
COMMIT
# Finalizat duminică, 23 ianuarie 22:35:06 2022