Wie markiere ich ein Ausgabepaket und lasse es von der IP-Regel erkennen?

Wie markiere ich ein Ausgabepaket und lasse es von der IP-Regel erkennen?

Ich habe ein Routing konfiguriert:

# ip rule

0:      from all lookup local
25555:  from all fwmark 0x3000 lookup main
32766:  from all lookup another
32767:  from all lookup default

Ich versuche, ausgegebene HTTP-Anfragen (z. B. curl http://ifconfig.io/ip) mit 0x3000 zu markieren, damit 25555 funktioniert:

# iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 0x3000

Aber es funktioniert nicht. Was übersehe ich?

Antwort1

Es stellt sich heraus, dass die Standardroute erforderlich ist, damit der Routingcode die fwmark-Regel überhaupt auslöst, da sonst eine direkte Meldung „Netzwerk nicht erreichbar“ ausgegeben wird, ohne dass ein Paket generiert wird.

Ich habe diese seltsame Regel umgangen, indem ich am Ende der Regelliste die Standardroute ins Nirgendwo hinzugefügt habe:

ip route add default via 127.0.0.1 dev lo table 4222222222
ip rule add table 4222222222 priority 4294967295

verwandte Informationen