Greboca  

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

LinuxFr.org : les journaux  -  Un peu de configuration réseau pour VPN

 -  Juin 2020 - 

Sommaire

Comme d'autres, j'ai découverts ces derniers temps les joies du travail à distance.
Pour cela toujours dans l'originalité nous utilisons vpnc. J'ai déjà utilisé ce vpn quand j'étais à la fac, pas de problème particulier pour une utilisation de base. Néanmoins, j'ai mis en place quelques astuces pour rendre l'usage plus agréable pour moi et c'est ce que je vais décrire ici.

Rien d'incroyable, mais si ça peut aider quelqu'un c'est toujours ça.

Le DNS : dnsmasq

C'est le plus important. vpnc quand il s'active modifie vos DNS (dans /etc/resolv.conf). C'est logique si le réseau auquel vous tentez d'accéder gère lui-même ses domaines, mais ça pose des soucis :

  • vous ne voulais pas forcément que toutes vos requêtes DNS transitent par le DNS de votre entreprise. Si vous oubliez d'arrêter votre client VPN (entre midi et 2 ou le soir par exemple), vous pouvez ne pas vouloir que votre employeur sache sur quels sites vous allez
  • on peut imaginer que les DNS de votre entreprise fassent du filtrage
  • plus prosaïquement, ces DNS sont loin, le réseau peut ne pas être très bon et avoir tout son trafic ralentit parce que la connexion avec le réseau de votre entreprise a des problèmes c'est dommage et assez frustrant

La solution la plus simple est d'utiliser dnsmasq. C'est un serveur DNS1 qui est fait soit pour être utilisé au sein d'un réseau privé soit directement sur votre machine (pour un usage sur internet on privilégiera bind par exemple).

L'objectif est simple : il va nous servir de proxy :

  • les requêtes concernant un domaine de votre entreprise vont vers les DNS de votre entreprise (ceux qui sont configurés par le VPN)
  • les autres vont vers le DNS que vous souhaitez (celui de votre FAI ou autre)

Pour faire tout ça c'est simple :

apt install dnsmasq

J'ai laissé sa conf de base et j'ai simplement ajouté un fichier /etc/dnsmasq.d/ma-config.conf contenant :

server=/{domaine1}/{dns1}
server=/{domaine2}/{dns2}
server={dns FAI 1}
server={dns FAI 2}

Chaque ligne indique pour un domaine donné (et tous ses sous domaines) quel DNS utiliser.
Quand on indique pas de domaine c'est le DNS par défaut.

On a un DNS tout beau et tout propre, maintenant ce serait bien de s'en servir.

Config réseau : NetworkManager

J'utilise NetworkManager (nm) pour configurer mon réseau généralement. J'en suis pas forcément fan, mais pour des réseaux wifi il est pratique.
Il est possible de demander à nm de lancer lui-même dnsmasq. Je n'en ai pas l'intérêt personnellement.

Pour pouvoir choisir son serveur DNS, il faut éditer sa configuration réseau pour demander "Adresse only" et on peut ainsi choisir un DNS qui ne sera pas pris depuis la configuration DHCP.

VPN : vpnc

Il reste à lancer vpnc. La base pour le lancer c'est :

vpnc plouf.conf # démarré avec la conf décrite dans `/etc/vpnc/plouf.conf`
vpnc-disconnect # pour l'arrêter

Encore une fois il est possible d'utiliser l'intégration avec nm, mais ce n'est pas ce que j'utilise.
Sur ma debian stable, ce qui gère la configuration système autour de l'ouverture de la connexion par vpnc est le script /usr/share/vpnc-scripts/vpnc-script
C'est un script qui est lancé après l'ouverture de la connexion par vpnc. Malheureusement, il ne gère pas d'ensemble de script pour que je puisse faire ma modif dans mon coin.

On peut trouver sur internet des gens qui parlent d'une configuration DNSUpdate, mais elle n'est pas reconnue chez moi.

J'aurais pu utiliser une diversion debian, mais je vais partir sur un truc bête et méchant je crée le fichier /usr/share/vpnc-scripts/vpnc-script.custom.sh

#!/bin/sh
/usr/share/vpnc-scripts/vpnc-script

cat > /etc/resolv.conf <
# custom server by vpnc
nameserver 127.0.0.1
EOF

Et dans le fichier /etc/vpnc/plouf.conf, j'ajoute la ligne :

Script /usr/share/vpnc-scripts/vpnc-script.custom.sh

Et nous voila avec une configuration DNS correct pour pouvoir utiliser un vpn sans dommage :)

vpn instable

Et pour finir… Je ne sais pas si c'est quelque chose d'habituel, mais mon vpnc n'est pas très stable. Il lui arrive de "tomber" de temps en temps.
Initialement, j'avais simplement ajouté un indicateur dans mon interface. J'utilise i3blocks.
Je me crée un script qui ping une IP accessible via le vpn et indique sur sa sortie standard si ça fonctionne ou pas :

#!/bin/bash

ping -c1 -W1 10.181.80.20 &> /dev/null

if [[ $? == 0 ]]; then
    echo "vpn: on"
else
    echo "vpn: off"
fi

et le petit bout de conf i3blocks qui va bien :

[vpn]
command=/usr/local/bin/vpn-check
interval=5
color=#C5D86D

Ça fonctionne bien, mais c'est assez frustrant. C'est à nous de remonter la connexion manuellement.
Pour palier à ça, j'ai choisi de mettre en place un watchdog.

Pour le plaisir de la découverte, j'ai choisi d'utiliser systemd pour ça. L'idée c'est de voir le vpn comme un service, je le lance et systemd se débrouille (en fait je vais l'aider un peu hein) pour maintenir la connexion.

Je crée un petit script perl :

#!/usr/bin/env perl

use strict;
use warnings;
use Net::Ping;
use 5.010;
use autodie;
use Time::HiRes qw(usleep);
use Systemd::Daemon qw( -hard notify );

sub watchdog {
    my $ip = shift;
    my $sleep = ($ENV{WATCHDOG_USEC} // 2_000_000) / 2;
    my $ping = Net::Ping->new("icmp", 1);
    while(1) {
        if ($ping->ping($ip)) {
            notify( WATCHDOG => 1 );
        }
        usleep $sleep;
    }
}

system("/usr/sbin/vpnc-disconnect");
system("/usr/sbin/vpnc --no-detach plouf.conf");
sleep(1);
notify( READY => 1 );

watchdog("{ip for check}");

On a besoin de Systemd::Daemon qui nécessite libsystemd-dev.

Et le service systemd qui va avec my-vpnc.service :

[Unit]
Description=VPN with watchdog

[Service]
ExecStart=/home/michel/bin/resilient-vpn
Restart=on-watchdog
WatchdogSec=5

Voila un coup de systemctl start my-vpnc.service et mon vpn est lancé et en cas de défaillance il va tout seul le relancer.

(Le journal est sous licence CC0 et si vraiment le code présenté pourrait être sous le coup de la propriété intellectuel il utilise la licence WTFPL


  1. et aussi DHCP, mais on ne se servira pas de cette fonctionnalité ici 

Commentaires : voir le flux atom ouvrir dans le navigateur

par barmic

LinuxFr.org : les journaux

LinuxFr.org : Journaux

antistress adventure in Flatpak land

 -  30 avril - 

Hello nal, ça faisait un bail !Certain (il se reconnaîtra) m'a demandé de le tenir au courant lorsque j'aurai basculé sur un usage de Firefox (...)


Téléphone sous Linux ?

 -  25 avril - 

Aujourd'hui, avoir un téléphone avec un Android libéré, c'est possible, on pense en particulier à Murena.Avoir un téléphone sous GNU/Linux, c'est (...)


Quand votre voiture vous espionne… et vous le fait payer

 -  23 avril - 

Ceci se passe aux États-Unis, pour l’instant, aucune preuve qu’une telle fuite existe en Europe. Mais… si votre assurance augmente brutalement, (...)


firefox, nouvelle fenêtre dans une session isolée

 -  15 avril - 

Les fenêtres de navigation privées de firefox partagent leurs cookies de session or je souhaitais avoir des fenêtres de navigation isolées, (qui ne (...)


Pretendo tente de déprogrammer l'obsolescence des consoles Nintendo

 -  9 avril - 

Ah Nal,Gros N vient de faire un gros doigt aux utilisateurs de ses consoles 3DS et Wii U en annonçant la fermeture des services en ligne pour (...)