J'ai une interface ppp0 configurée comme tunnel VPN en utilisant ce guide . Maintenant, je dois acheminer le trafic sur des ports spécifiques (80, 443) via l'interface ppp0. Idéalement, si le serveur VPN est en panne, toutes les demandes HTTP (S) devraient échouer.
Il existe de nombreuses réponses à des problèmes similaires suggérant d'utiliser iptables
, donc je suppose que c'est la voie à suivre, mais je ne peux pas trouver les bonnes commandes à utiliser pour ce scénario particulier.
Ici, nous prendrons www
comme service de routage. Utilisez la table mangle
d'iptable pour modifier les paquets www
.
Sudo iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 0x1
Nous marquons tous les paquets avec le port de destination 80
comme 0x1
.
Maintenant, enregistrez et redémarrez iptables
.
service iptables save
service iptables restart
Ensuite, créez une nouvelle table de routage IP dans /etc/iproute2/rt_tables
en donnant simplement une entrée
100 wwwtable
Écrire une règle pour les paquets www
.
ip rule add fwmark 0x1 lookup wwwtable
Ajouter une route à la nouvelle table wwwtable
. Tout autre trafic passera par la passerelle par défaut, visible par ip route show
commande.
Nous copions toutes les entrées à l'exception de l'entrée de passerelle par défaut de la table principale.
Sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table wwwtable $ROUTE; done
Ajouter une entrée de passerelle par défaut pour les paquets www
à la table wwwtable
Sudo ip route add default dev ppp0 table wwwtable
Utilisation ip route show table wwwtable
pour afficher tous les itinéraires dans wwwtable
.
Répétez tout pour https
sur le port 443
.