web-dev-qa-db-fra.com

Acheminer uniquement le trafic HTTP (S) via VPN

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.

1
blade

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.

2
2707974