Il faut donc empêcher ddclient de faire la mise à jour de l’adresse via le VPN, ou le forcer à passer par la connexion internet normale. Je ne connais pas bien le fonctionnement de ddclient et compagnie, ayant la chance (si on peut dire, mais en fait c’est un choix) de bénéficier d’adresses IP publiques fixes depuis que j’ai l’ADSL. J’imagine qu’il communique en HTTP(S) avec un serveur distant de DynDNS. Méthodes envisageables, faisabilité à étudier :
- forcer ddclient à utiliser l’adresse d’eth1 comme source de la connexion au serveur de mise à jour (mais pas comme adresse IP à associer au nom de domaine évidemment) ;
- forcer ddclient à utiliser un port source défini, qu’il serait possible de marquer avec iptables pour le router avec la table 99 ;
- si ddclient s’exécute sous un utilisateur spécifique, marquer les paquets émis par cet utilisateur avec iptables pour les router avec la table 99 ;
- si l’adresse IP du serveur DynDNS ne change pas, créer une route spécifique pour elle ; c’est probablement la méthode la plus simple. Si le nom de domaine du serveur résoud en plusieurs adresses IP, créer une route pour chaque adresse.
Les ip route/rule et le VPN sont deux choses indépendantes. Pour exécuter les premières au démarrage, le meilleur endroit est dans le fichier /etc/network/interfaces si c’est lui qui configure eth1 (je suppose en statique) :
iface eth1 inet static
address 192.168.0.x
...
up ip route add default via 192.168.0.254 dev eth1 table 99
up ip route add 192.168.0.0/24 dev eth1 table 99
up ip rule add from 192.168.0.0/24 lookup 99
down ip rule del from 192.168.0.0/24 lookup 99
Inutile d’ajouter des commandes pour supprimer les routes, elles le sont automatiquement lorsque l’interface est arrêtée.
Pour démarrer automatiquement openvpn au démarrage, je suppose qu’il faut regarder du côté de /etc/default/openvpn.