Lorsque je me connecte à un VPN, tout mon trafic réseau y est automatiquement acheminé. Y a-t-il un moyen d'ajouter des exemptions à cela? Je ne sais pas si l'ajout d'exceptions a quelque chose à voir avec le protocole VPN, mais le VPN que j'utilise est du protocole OpenVPN.
En parlant d’OpenVPN, pourquoi n’est-il pas installé par défaut sur les installations d’Ubuntu contrairement à PPTP?
Je n'ai pas pu obtenir la liste des serveurs d'IRCHighWay, et voici le résultat de ma tentative de connexion à XChat avec l'exécution du script bash:
* Looking up irc.irchighway.net
* Connecting to irc.irchighway.net (65.23.153.98) port 6667...
* Connected. Now logging in...
* You have been K-Lined.
* *** You are not welcome on this network.
* *** K-Lined for Open proxies are not allowed. (2011/02/26 01.21)
* *** Your IP is 173.0.14.9
* *** For assistance, please email [email protected] and include everything shown here.
* Closing Link: 0.0.0.0 (Open proxies are not allowed. (2011/02/26 01.21))
* Disconnected (Remote Host closed socket).
L'IP 173.0.14.9
est celui dû à mon VPN. J'avais oublié de vérifier ip route list
avant d'exécuter le script, et voici celui qui l'a exécuté:
~$ ip route list
99.192.193.241 dev ppp0 proto kernel scope link src 173.0.14.9
173.0.14.2 via 192.168.1.1 dev eth1 proto static
173.0.14.2 via 192.168.1.1 dev eth1 src 192.168.1.3
192.168.1.0/24 dev eth1 proto kernel scope link src 192.168.1.3 metric 2
169.254.0.0/16 dev eth1 scope link metric 1000
default dev ppp0 proto static
Oh, et l'exécution du script a renvoyé cette sortie:
~$ Sudo bash irc_route.sh
Usage: inet_route [-vF] del {-Host|-net} Target[/prefix] [gw Gw] [metric M] [[dev] If]
inet_route [-vF] add {-Host|-net} Target[/prefix] [gw Gw] [metric M]
[netmask N] [mss Mss] [window W] [irtt I]
[mod] [dyn] [reinstate] [[dev] If]
inet_route [-vF] add {-Host|-net} Target[/prefix] [metric M] reject
inet_route [-FC] flush NOT supported
J'ai exécuté le script après la connexion au VPN.
Créez un fichier, irc_route.sh, qui contient:
#!/bin/bash
# script to make connections to irc.irchighway.net go via DEV.
DEV=eth0
GW=$(ip route list | sed "s/.* via \([0-9.]*\) dev $DEV.*/\1/;t;d"|head -1)
route add -Host irc.irchighway.net gw $GW $DEV
Changez DEV pour être l'interface avec laquelle vous obtenez votre connexion Internet (par exemple, wlan0, eth1, eth0, ppp0). Ensuite, exécutez le script avec Sudo bash irc_route.sh
, vous pouvez vérifier les résultats en exécutant ip route list
avant et après.
L'adresse IP de la passerelle par défaut pour le trafic Internet sur le périphérique DEV est stockée dans la variable GW, qui est ensuite utilisée pour router tout le trafic allant au serveur irc.irchighway.net via votre GW par défaut au lieu de la connexion OpenVPN que vous avez.
Pour que cela fonctionne avec tous les serveurs IRCHighWay, vous devez obtenir une liste de tous les serveurs.
liste_serveur.txt:
irc.irchighway.net
caliburn.pa.us.irchighway.net
Scénario:
#!/bin/bash
# script to make connections to irchighway go via DEV.
DEV=eth0
GW=$(ip route list | sed "s/.* via \([0-9.]*\) dev $DEV.*/\1/;t;d"|head -1)
cat server_list.txt| xargs -iSERVER route add -Host SERVER gw $GW $DEV
Il existe une solution "plus facile", vous pouvez marquer les ports et les routes en fonction, voir tutoriel iproute2 mais je ne l'ai pas utilisé. Et il y a quelques problèmes avec ce type de routage si vous ne savez pas ce que vous faites.
Vous ne pouvez pas empêcher des programmes spécifiques d'établir des connexions via le VPN, mais s'ils souhaitent atteindre un hôte ou un numéro de port spécifique, c'est possible. Je vais supposer dans le pire des cas que vous voulez que certaines applications contournent le pare-feu.
Cela devrait être possible en utilisant SELinux, en bannissant les connexions réseau d'un programme. Je ne connais pas de bons outils pour faire cette configuration, ni comment le changer à la volée.
Je pense qu’il était une fois un module dans iptables qui pourrait correspondre à un programme d’envoi, mais je ne l’ai pas vu depuis un moment.