Wiki [Tuto] Se connecter à son OpenVPN depuis son LAN et WAN malgré routeur pas compatible hairpinning

0
26
sept.
2017

Sommaire

Introduction

Pour une raison suspicieuse, les box des Fournisseurs d'Accès Internet (FAI) sont régulièrement incompatible avec le hairpinning. Pour outrepasser ce problème, nous allons simplement dupliquer le fichier de conf (.ovpn) afin qu'un soit compatible avec le LAN et un avec internet (WAN). Ensuite nous lancerons un script au démarrage de la machine qui décidera quel fichier de conf (.ovpn) il faut lancer en fonction de si votre serveur est sur le même réseau ou non.
Ce script est compatible avec les tunnels SSH (au choix en local ou en wan ou même les deux ou aucun).

Mise en place sur le client

Note : pour ce tuto je pars du principe que votre OpenVPN est déjà installé et le port ouvert sur le routeur du réseau du serveur (par défaut 1194).

  1. Copiez le fichier de configuration de votre client OpenVPN, nous allons ajouter _LAN dans le titre du nouveau fichier
sudo cp /etc/openvpn/monUser.ovpn cp /etc/openvpn/monUser_LAN.ovpn 
  1. Éditez la copie qui nous servira pour le LAN
sudo nano /etc/openvpn/monUser_LAN.ovpn
  • A la ligne commençant par "remote", rajoutez _LAN dans le nom de domaine (ou remplacez le nom de domaine par l'IP LAN statique de votre serveur OpenVPN).
remote www.server_LAN.com 1194
  1. Ensuite éditez votre fichier /etc/hosts afin d'y indiquer la correspondance entre notre nouveau nom de domaine dédié au LAN et l'adresse IP du serveur OpenVPN.
sudo nano /etc/hosts
  • Ajoutez une ligne du style
192.168.1.42       www.server_LAN.com
  1. Créez le script de lancement /opt/scripts/vpnSwitcher.bash (CTRL+X pour sauver & quitter)
sudo nano /opt/scripts/vpnSwitcher.bash
  1. Puis collez le script suivant et adaptez le à votre config

Note : source du script

#!/bin/bash
# -- vpnSwitcher --
#  -> WTFPL - infos script : https://www.0rion.netlib.re/forum4/viewtopic.php?f=9&t=646&p=1460#p1460
# -> code by voxdemonix <-
# -> V1.11 (2017/09/11) <-
# uncomment next line for debug
#set -x

if [ ! "$SUDO_USER" ]; then
echo "!!! i need root !!!"
exit 0
fi

    #SCRIPTS OPTIONS
LANG="fr" # notification service ; accept : fr, usa (default)
notificationType="notify" # accept : echo; notify, nothing. Notify not work with root user.

    # NETWORK OPTIONS
INTERFACE="tun"
hostnameVpnLAN="192.168.1.69" # (VPN1 hostname) l'adresse IP locale (LAN) de votre serveur OpenVPN
MacVpnLocal="69:69:69:69:69:69" #l'adresse mac de votre serveur OpenVPN (tapez ifconfig dans un terminal sur votre server)

    # VPN OPTIONS
fichierOvpnLAN="/etc/openvpn/myUser_LAN.ovpn" # (VPN1) le PATH de votre fichier de conf .ovpn en LAN
fichierOvpnNotLAN="/etc/openvpn/myUser.ovpn" # (VPN2) le PATH de votre fichier de conf .ovpn pour les connnexions WAN/SSH
openVpn1Param=" " # add options (ex: --route-nopull) for openvpn connexion to server 1 (lan)
openVpn2Param=" " # add options (ex: --route-nopull) for openvpn connexion to server 2 (ssh/tor/wan)

    # SSH OPTIONS
hosnameVpnNotLAN="blablablablablabla.onion" # (VPN2 hostname)
UserLocalForSshTunneling="daenerys" # l'user a utiliser sur votre ordinateur pour le montage du tunnel (celui qui a exporté sa clés)
UserRemoteForSshTunneling="proxy-ssh" # l'user a utiliser côté server ( /!\ n'utilisez jamais root !)
portEntree="1194" # le port sur le pc local, par défaut 1194 (tcp)
portSortie="1194" # le port sur le serveur, par défaut 1194 (tcp)
sshLanEnable=0  # 0 for disable ; 1 for enable : enable or disable the ssh tunneling in LAN
sshNotLanEnable=0 # 0 for disable ; 1 for enable : enable or disable the ssh tunneling in Wan | Tor



            # NOTIFICATION SYSTEM
function vpnNotification {
        # $1 = message ID (watch switch/case);
        # $2 = hostnameVPN
    message=""
    #hostnameVPN=$(cat "$2" | grep "remote " | sed 's/remote //g' | sed 's/ [[:digit:]]\+//g')
    hostnameVPN=$2

    case $LANG in
        fr )
                case $1 in
                    VpnDisabled )
                            message="Connexion VPN fermée ($hostnameVPN)"
                        ;;
                    VpnConnecting )
                            message="Connexion VPN en cours ($hostnameVPN)"
                        ;;
                    VpnEnabled )
                            message="VPN Connecté ! ($hostnameVPN)"
                        ;;
                    SshStop )
                            message="Tunnel SSH STOP ($hostnameVPN)"
                        ;;
                    SshStart )
                            message="Tunnel SSH START ($hostnameVPN)"
                        ;;
                    * )
                            message="message inconnu"
                        ;;
                esac
            ;;
        usa | *)
                case $1 in
                    VpnDisabled )
                            message="VPN Connection Close ($hostnameVPN)"
                        ;;
                    VpnConnecting )
                            message="VPN Connection in progress ($hostnameVPN)"
                        ;;
                    VpnEnabled )
                            message="VPN Connected ! ($hostnameVPN)"
                        ;;
                    SshStop )
                            message="SSH Tunneling STOP ($hostnameVPN)"
                        ;;
                    SshStart )
                            message="SSH Tunneling START ($hostnameVPN)"
                        ;;
                    * )
                            message="unknow message"
                        ;;
                esac
            ;;
    esac


    case $notificationType in
        echo)
                echo "$message"
            ;;
        notify)
                notify-send "$message"
            ;;
        nothing | *)
            ;;
    esac
}

function quitOpenVPN {
        # $1 = ovpn ( $fichierOvpnLAN, $fichierOvpnNotLAN)
        # $2 = hostnameVPN ( $hostnameVpnLAN, $hosnameVpnNotLAN)
        ovpn=$1
        hostVPN=$2
            #stop VPN
        if [ $(pkill -c -f $ovpn) -gt 0 ]; then
        hostnameVPN=$(cat $ovpn | grep "remote " | sed 's/remote //g' | sed 's/ [[:digit:]]\+//g')
        vpnNotification "VpnDisabled" $hostnameVPN
        fi
            #stop ssh
        if [ $(pkill -c -f "autossh.*$UserRemoteForSshTunneling@$hostVPN") -gt 0 ]; then
            vpnNotification "SshStop" $hostVPN
        fi
        sleep 1
}

function startOpenVPN {
        # $1 = hostname VPN ($hostnameVpnLAN, $hosnameVpnNotLAN)
        # $2 = ovpn ($fichierOvpnLAN, $fichierOvpnNotLAN)
        # $3 = ssh enable (1) or not (0) ($sshLanEnable, $sshNotLanEnable)
        # $4 = OpenVpn Param ($openVpn1Param, $openVpn2Param)

        hostVPN=$1
        ovpn=$2
        sshChoice=$3
        openvpnParam=$4

                # SSH TUNNELING
            if [ $sshChoice == 1 ]; then
                    # kill oprevious ssh tunneling
                for pid in `ps -ef | grep "[a]utossh" | grep "$hostVPN" | awk '{print $2}'` ; do kill $pid ; done
                    # creat new ssh tunneling
                su $UserLocalForSshTunneling -c "autossh -M 0 -q -N -o 'ServerAliveInterval 60' -o 'ServerAliveCountMax 3' -L $portEntree:127.0.0.1:$portSortie $UserRemoteForSshTunneling@$hostVPN -f"
                if ps -aux | grep "[a]utossh" | grep "$hostVPN"  | grep -v "grep" >> /dev/null 2>&1; then
                    vpnNotification "SshStart" $hostVPN
                fi
            fi

                # START OpenVPN
            openvpn --daemon $openvpnParam --config $ovpn

                # NOTIFICATIONS
            hostnameVPN=$(cat $ovpn | grep "remote " | sed 's/remote //g' | sed 's/ [[:digit:]]\+//g')
            vpnNotification "VpnConnecting" $hostnameVPN

                # boucle qui permet de verifier si le VPN se connecte bien
        stop=0
        while [ $stop -lt 10 ]
        do       # temps d'attente entre chaque tentative
            if ifconfig | grep -iq $INTERFACE; then
                    vpnNotification "VpnEnabled" $hostnameVPN
                    stop=10
                    exit
            fi
                sleep 5
               stop=$((stop+1))
        done

}



        # boucle qui permet d'attendre que le réseau soit connecté
stop="0"
while [ $stop -lt 1 ]
do
    sleep 3       # temps d'attente entre chaque tentative

    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
            stop=1
    fi
done

if ps -aux | grep "[o]penvpn" >> /dev/null 2>&1; then
    #Connexion VPN active

            # vpn server 1
        quitOpenVPN $fichierOvpnLAN $hostnameVpnLAN
            # vpn server 2
        quitOpenVPN $fichierOvpnNotLAN $hosnameVpnNotLAN


else

        ping $hostnameVpnLAN -c 2 >> /dev/null 2>&1
        macRecover=$(arp -n | grep -i -o $MacVpnLocal)

        if [ "$macRecover" == "$MacVpnLocal" ]; then
        #        echo "local/LAN/First VPN"
            startOpenVPN $hostnameVpnLAN $fichierOvpnLAN $sshLanEnable $openVpn1Param

        else
        #        echo "tor/wan/second VPN"
            startOpenVPN $hosnameVpnNotLAN $fichierOvpnNotLAN $sshNotLanEnable $openVpn2Param

        fi

fi
  • Éditez les valeurs suivantes

    • hostnameVpnLAN="192.168.1.69" => (VPN1 hostname) l'adresse IP locale (LAN) de votre serveur OpenVPN
    • MacVpnLocal="69:69:69:69:69:69" => l'adresse mac de votre serveur OpenVPN (tapez ifconfig dans un terminal sur votre server)
    • fichierOvpnLAN="/etc/openvpn/myUser_LAN.ovpn" => (VPN1) le PATH de votre fichier de conf .ovpn en LAN
    • fichierOvpnNotLAN="/etc/openvpn/myUser.ovpn" => (VPN2) le PATH de votre fichier de conf .ovpn pour les connnexions WAN/SSH
  1. Sauvez et quittez avec CTRL+X, puis rendez votre fichier exécutable
sudo chmod +x /opt/scripts/vpnSwitcher.bash
  1. Lancez ensuite le script afin de le tester
sudo /opt/scripts/vpnSwitcher.bash

S'il fonctionne correctement, ajoutez le au démarrage du client soit via /etc/rc.local soit via cron

sudo crontab -e
  1. Ajoutez enfin la ligne suivante (CTRL+X pour sauver et quitter)
@reboot     /opt/scripts/vpnSwitcher.bash

Journal Dongle 4G sous environnement libre

Posté par (page perso) . Licence CC by-sa
28
20
sept.
2017

Cher Nal,

J'ai passé un peu de temps à tester une solution de connectivité 4G ; donc je partage avec toi un résultat obtenu.

Après quelques recherches aux réponses pas toujours très claires sur le net, je me suis orienté vers la clé 4G Huawei E3272, vendue ici : https://www.ldlc.com/fiche/PB00204764.html

Elle fonctionne « out of the box » sous Debian Jessie et Buster sur deux machines sur lesquelles j'ai pu tester. Les tests ont été faits avec une SIM Free 3G (abonnement tel (...)

Suricata 4.0 : la détection d’intrusion en mode hipster

35
29
juil.
2017
Sécurité

Suricata, l’outil de détection des menaces réseau, passe en version 4.0 avec pléthore de nouveautés :

  • ajout de l’analyse du protocole NFS ;
  • améliorations de la gestion de TLS ;
  • gestion des changements de protocoles (STARTTLS, HTTP CONNECT) ;
  • enrichissement des événements générés ;
  • prise en charge d’analyseurs de protocoles en Rust.

Suricata est un moteur de détection d’intrusions réseau et de supervision réseau orienté sécurité. En clair, il analyse le trafic des réseaux pour détecter des menaces et journaliser les événements. Suricata est disponible sous licence GPL v2 et est développé par une fondation à but non lucratif, l’OISF.

Suricata est devéloppé en C avec depuis la version 4.0 des analyseurs de protocoles en Rust écrits avec utilisant le framework Nom.

Forum Linux.debian/ubuntu Connecter deux réseaux OpenVPN

Posté par . Licence CC by-sa
Tags :
1
22
juil.
2017

J'essaye de connecter deux serveurs OpenVPN afin que les clients des deux réseaux puissent se joindre.

Mes fichiers de configurations sont ceux créé par PiVPN et il me semble que les push route sont faux (si je retire --route-nopull j'arrive encore a joindre le LAN et l'intérieur du réseau VPN mais plus aucun accès à internet).

Donc sauriez-vous se qu'il faut indiquer dans les fichiers /etc/openvpn/server.conf afin que le routage entre les deux réseaux fonctionne et ce sans forcer les (...)

Forum général.général 2 adresses IPv6 free.fr ?

Posté par . Licence CC by-sa
2
19
juil.
2017

Je suis chez free avec l'option IPv6 activée, et je me retrouve avec deux addresses IPv6 non locales sur ma machine avec les premiers 64 bits identiques.
- abcd:efab:cdef:abcd:3c91:904c:70d1:c35f
- abcd:efab:cdef:abcd:2e15:80ef:60de:b57c

$ ifconfig
wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.19  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 abcd:efab:cdef:abcd:3c91:904c:70d1:c35f  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::123:4567:8901:2345  prefixlen 64  scopeid 0x20<link>
        inet6 abcd:efab:cdef:abcd:2e15:80ef:60de:b57c  prefixlen 64  scopeid 0x0<global>

Un site comme wftismyip.com voit l'adresse abcd:efab:cdef:abcd:3c91:904c:70d1:c35f

Quelle est donc cette seconde adresse abcd:efab:cdef:abcd:2e15:80ef:60de:b57c ?

Merci !

Forum Linux.général Plus de réseau après la mise en veille de l'ordinateur

Posté par . Licence CC by-sa
2
5
juin
2017

Bonsoir,

Voici mon problème lorsque je sors mon ordinateur de veille, je perd mon réseau .

Ma configuration : Mageia 4.4.68-desktop-1.mga5 x86_64 sous GNOME Shell v3.14.3 .

Ma carte réseau :Realtek RTL8101 CE, le pilote utilisée par mon système est le R8169 .

je précise que je suis plutôt débutant dans le monde de GNU/LINUX .

A l'heure actuelle j'ai essayer les solution qui sont proposée sur ces topique quand c’était possible car sont proposée des solutions pour un système (...)

Forum Linux.debian/ubuntu [Tuto/HowTo] Accéder à son VPN depuis le réseau Tor via SSH Tunneling

Posté par . Licence CC by-sa
7
9
mai
2017

musique d'entrain : DJ Antoine - Sky Is The Limit | Mix #1
Ce tutoriel fonctionne sur : Ubuntu, Debian, Raspbian.

Introduction

  • L'objectif de ce tutoriel est de pouvoir joindre un VPN pas forcément accessible depuis le net.
  • Lorsque le serveur se trouvera sur le même réseau LAN que le client, alors un tunnel SSH sera établi en LAN.
  • Lorsque le serveur ne se trouvera pas sur le même LAN que le client, alors un tunnel (...)

Forum Linux.debian/ubuntu [Tuto/HowTo] Fixer ip des clients sur openvpn

Posté par . Licence CC by-sa
6
6
mai
2017

Mise en place

  1. Créez le dossier où ranger les configuration pour les clients
sudo mkdir -p /etc/openvpn/ccd
  1. Éditez /etc/openvpn/server.conf
sudo nano /etc/openvpn/server.conf
  1. Et ajoutez dedans
client-config-dir /etc/openvpn/ccd
  1. Si vous voulez empêcher un client n'ayant pas de fichier de config de se connecter au VPN, ajoutez aussi, à la ligne le paramètre suivant
ccd-exclusive
  1. Créez un fichier par utilisateur et donnez leur le nom de chaque utilisateur
sudo nano /etc/openvpn/ccd/monClient
  1. Ajoutez dedans ifconfig-push suivit de l'adresse IP que vous souhaitez attribuer (...)

Forum Linux.debian/ubuntu [Tuto/HowTo] Monter un serveur VPN avec PiVPN sur Raspbian

Posté par . Licence CC by-sa
9
6
mai
2017

musique d'ambiance : Tryo - Watson Tryo - La misère d'en face
Note : PiVPN fonctionne autant sur Raspbian, Debian qu'Ubuntu

_


_

Qu'est-ce qu'OpenVPN ?

  • OpenVPN est un logiciel permettant de créer un Réseau Virtuel Privé (ou Virtual Private Network), plus communément appelé VPN. Le client et le serveur sont sous licence GPLv3 (libre).
  • Dans ce tutoriel nous allons utiliser PiVPN qui est un ensemble de scripts permettant de faciliter l'installation et l'utilisation d'OpenVPN Je vous conseil (...)

Forum général.petites-annonces [À vendre] Serveur NAS sûr mesure (sans disques durs) 600€

Posté par . Licence CC by-sa
4
17
mar.
2017

Bonjour,

Je me sépare de mon serveur NAS, monté sûr mesure il est vendu SANS DISQUES DURS. Il est en excellent état, l'ensemble des composants ont été achetés sur Amazon et LDLC courant 2016.

Voici la configuration détaillée du boîtier :
- Processeur Intel Core i5-4690K 4 cœurs à 3.5GHz
- Mémoire vive DDR3 Crucial Ballistix 8Go (2x 4Go) PC3-12800 à 1600MHz
- Carte-mère mini ITX Gigabyte Z97N-WIFI socket Intel 1150 LGA
- Alimentation Corsair CS550M de 550W
- SSD (...)

Forum général.petites-annonces [VENDU] Routeur libre Turris Omnia 250€

Posté par . Licence CC by-sa
1
25
jan.
2017

Bonjour,

Je me sépare de mon routeur Turris Omnia (open-source et open-hardware made in Republic Czech) car il est doté de beaucoup trop de fonctionnalités pour mon utilisation et mes besoins basiques.

Il est de couleur gris et est dotés (notamment) des fonctionnalités suivantes :
- OS : Turris OS, dérivé d'OpenWRT
- Processeur : Marvell Armada 385 ARM Dual-Core 1,6 GHz
- Mémoire vive : 1 Go RAM
- Stockage : 8 Go mémoire flash
- Divers : Module (...)

Forum Linux.général Créer un failover pour un accès à Internet

Posté par . Licence CC by-sa
2
3
jan.
2017

Bonjour,

Avant tout, bonne année 2017.

J'ai une infrastructure en grande partie virtualisée dans un Dell Poweredge 2900 sous ESXI 5.5.

J'ai une livebox fibre et une freebox adsl.

Actuellement, j'ai un serveur windows dont le rôle routage et accès distant est actualisé.
Malheureusement, ce rôle ne fonctionne qu'avec une seule carte réseau côté internet.

Mon objectif serait (si c'est possible) de créer une VM Linux (peu importe la distribution) qui aurait 3 cartes réseau.

Livebox
\ ___ Nouvelle VM (...)

Forum Astuces.divers IPv6 ne m'amuse pas !

Posté par . Licence CC by-sa
Tags :
1
21
nov.
2016

Bonjour !

C'est après avoir lu le journal de SpaceFox que je réalise qu'IPv6 ne m'amuse pas, surtout en réseau local.

Imaginons que vous soyer un utilisateur de Linux, avec quelques connaissance en programmation mais ne maîtrisant pas tout l'art du réseau. Comment vous faîtes pour, ne serait-ce que pinger une machine de votre réseau local ?

Vous apprenez par cœur votre adresse IPv6 ?