• # Iptables + ip rule

    Posté par . En réponse au message Spécifier une interface réseau à un processus. Évalué à 5.

    Il te faut une règle iptables qui va matcher tout le trafic de transmission.
    Le plus simple, c'est d'exécuter tes applis qui doivent passer dans le VPN avec un utilisateur spécial, et d'utiliser le module 'owner' d'iptables. Ou d'utiliser un wrapper qui va marquer les paquets. Ou quoi que ce soit d'autre...

    Pour les paquets que tu veut faire passer par ton VPN, marque tes paquets dans une chaîne OUTPUT avec -j MARK --set-mark 0x42, par exemple. Ou avec n'importe quelle marque... Il faut être dans la table mangle pour pouvoir modifier des marques.

    Après, tu peux créer une table de routage spéciale qui va faire passer tout le trafic sur ton VPN, du genre ip route add default via la_bonne_gateway_de_ton_vpn table 42. Puis créer une règle pour dire d'utiliser cette table de routage avec les paquets marqués : ip rule add type unicast fwmark 0x42 table 42. Il faudra peut-être une règle pour le retour aussi, pour dire que tes paquets qui viennent de l'interface de ton vpn utilisaient cette table de routage, sinon le reverse path filtering va jeter tes paquets parce qu'ils sont censé venir de ton interface filaire...

    Fin bref, ça doit être drôle à expérimenter, tout ça. Après il faudra le sécuriser ;) Le noyau linux peut faire des choses bizarre, comme répondre à une requête ARP qui concerne l'IP que tu à sur le vpn, mais depuis ton interface filaire publique. Du coup c'est facile pour un espion avec le même FAI que le tiens de te trouver s'il cherche qui est derrière le VPN...