← retour aux snippets

ip rule + fwmark: routage par marque

Marquer des paquets avec iptables/nft et sélectionner une table de routage dédiée via fwmark.

bash network #ip#rule#fwmark

objectif

Mettre en place un policy routing par application/port (ex: sortir par une autre gateway).

code minimal

# marquer les paquets sortant du user 'vpnapp' avec mark 0x1
sudo iptables -t mangle -A OUTPUT -m owner --uid-owner vpnapp -j MARK --set-mark 0x1

# règle de routage pour la marque 0x1
echo '100 vpnroute' | sudo tee -a /etc/iproute2/rt_tables >/dev/null
sudo ip rule add fwmark 0x1 table vpnroute
sudo ip route add default via 10.8.0.1 dev tun0 table vpnroute

utilisation

# vérifier
ip rule show
ip route show table vpnroute

variante(s) utile(s)

# nftables équivalent (marquage)
sudo nft add rule inet mangle output meta skuid vpnapp meta mark set 0x1

notes

  • la marque est un champ interne au noyau (fwmark).
  • assurez-vous que la table existe dans rt_tables.