Je travaille dans un endroit où mon imap pour le courrier électronique (utilisant thunderbird) n'est ouvert que par wifi. Le reste ne fonctionne qu'en filaire (et c'est de toute façon plus rapide). Je ne sais pas s'il est possible d'utiliser le port imap pour le smtp 993 et 465 sur le wifi et tous les autres sur le filaire, lorsque le wifi et le filaire sont tous deux connectés. Et seulement pour cet endroit d'ailleurs (donc probablement un lot à défaire et à refaire). J'utilise ubuntu 14.04 desktop (sur ordinateur portable).
Réponses
Trop de publicités?Le problème peut être résolu en ajoutant des routes supplémentaires basées sur la destination.
Du terminal
sudo ip route add ip_address_mail_server dev wlan0
Cela peut être fait en modifiant la connexion dans /etc/NetworkManager/system-connections/connection_name
sudo nano /etc/NetworkManager/system-connections/connection_name
[connection]
id=Auto XXXX
uuid=f4a27a71-202f-45ac-bc58-59a55600f515
type=802-11-wireless
[802-11-wireless]
ssid=XXXX
mode=infrastructure
mac-address=18:CF:5E:23:2A:0A
security=802-11-wireless-security
[802-11-wireless-security]
key-mgmt=wpa-psk
auth-alg=open
psk=yyyyyyyyy
[ipv4]
method=auto
routes1=xxx.xxx.xxx.xxx;32;yyy.yyy.yyy.yyy;0;
[ipv6]
method=auto
xxx.xxx.xxx.xxx - représente l'adresse IP du serveur de messagerie
yyy.yyy.yyy.yyy - représente la passerelle pour l'interface wlan0
Édition 1
La deuxième méthode est plus précise mais aussi plus compliquée
Commençons par l'iptable. Nous prendrons ici smtp
comme service de routage. Utiliser mangle
d'iptable pour modifier la table smtp
paquets.
sudo iptables -t mangle -A OUTPUT -p tcp –dport 993 -j MARK –set-mark 0×1
Nous marquons tous les paquets avec le port de destination 993
comme "0×1 .
Sauvegardez et redémarrez iptables
.
service iptables save
service iptables restart
Pour supprimer cette entrée de iptables
nous pouvons utiliser -D
au lieu de -A
.
Ensuite, créez une nouvelle table de routage IP dans /etc/iproute2/rt_table
en donnant simplement une entrée
100 smtp
Règle d'écriture pour smtp
paquets.
ip rule add fwmark 0×1 lookup smtp
Ajouter une route à la nouvelle table smtp. Ici, nous utiliserons '192.168.1.1 comme passerelle pour smtp
. Tous les autres trafics passeront par le passeront par la passerelle par défaut, comme le montre la commande IP route show.
Nous copions toutes les entrées à l'exception de l'entrée de la 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 sshtable $ROUTE; done
Ajouter une entrée de passerelle par défaut pour smtp
paquets vers le tableau smtp
sudo ip route add default via 192.168.1.1 table smtp
Utilisation ip route show table smtp to show all routes at
smtp`.
Voilà, c'est fait !!!
Répétez tout pour imap
sur le port 465
.
Tout d'abord, assurez-vous que vous avez le iproute
installé. Si vous disposez de la commande ip, vous êtes prêt.
Editer /etc/iproute2/rt_tables
et ajoutez un nouveau tableau en ajoutant la ligne suivante :
200 wlan-route
Vous devez ensuite configurer votre nouvelle table de routage nommée wlan-route avec une passerelle par défaut et créer des règles pour envoyer conditionnellement du trafic à cette table. Je suppose que votre passerelle par défaut est 192.168.0.1. Naturellement, cela doit correspondre à votre réseau réel, et pas seulement à mes suppositions.
ip route add default via 192.168.0.1 dev wlan0 table wlan-route
ip rule add fwmark 0x1 table wlan-route
Votre script annoté final ressemblerait à ceci :
# Populate secondary routing table
ip route add default via 192.168.0.1 dev wlan0 table wlan-route
# Anything with this fwmark will use the secondary routing table
ip rule add fwmark 0x1 table wlan-route
# Mark these packets so that iproute can route it through wlan-route
iptables -A OUTPUT -t mangle -o eth1 -p tcp --dport 993 -j MARK --set-mark 1
# now rewrite the src-addr
iptables -A POSTROUTING -t nat -o wlan0 -p tcp --dport 993 -j SNAT --to 192.168.0.2
ce script envoie tout trafic sur le port 993 via wlan0