Bonjour,

Ceci n’est pas un tutoriel mais plus un retour d’expérience car je n’ai pas la prétention de connaitre tout les mécanismes en place dans l’IPv6.

Suite a quelque méli-mélo  un problème commercial avec OVH, je me suis retrouvé avec un serveur en housing chez eux, mais sans IPv4 pour mes VM.

J’ai donc profité de cette latence commerciale pour tenter le faire un point sur l’avancement de l’IPv6.

Afin de pouvoir accrocher des nom d’hote sur mon domaine, j’ai décidé d’affecter des IPv6 statiques sur mes différentes VM.

Attribution:

En IPv6, le fournisseur vous fourni un sous réseau IPv6, généralement de classe /64 et vous laisse donc les 64 autres bits a votre disposition soit 18 milliards de milliards d’adresses !

Passerelle:

Chez FREE, l’adresse de la freebox est généralement la 1ere IP de la plage  donc l’adresse 2001:xxxx:xxxx:xxxx::1
Chez OVH, selon leur documentation, les octets bas des 5 derniers nombres sont a ff cela donne donc quelque chose du genre
2001:xxxx:xxxx:xxff:ff:ff:ff:ff   c’est a dire en affichant l’adresse avec les zero non significatifs cela donne 2001:xxxx:xxxx:xxff:00ff:00ff:00ff:0ff …

=> Oups !!! OVH semble avoir oublié le but d’un masque de sous réseau => Tout ce qui est en dehors du masque est défini comme extérieur et donc à la passerelle située OBLIGATOIREMENT dans le sous réseau…
Le masque réellement fonctionnel avec une telle passerelle est donc /56

Expérimentation sous Windows:

Depuis ma machine virtuelle équipée d’un Windows 2008 Sp2, l’IPv6 se configure sans difficulté. Microsoft n’est pas regardant sur le fait que la passerelle ne se trouve pas dans le même sous réseau…
En faisant pointer les DNS IPv6 vers ceux de Google dont je le rappel les ip sont:

2001:4860:4860::8888 et
2001:4860:4860::8844

L’accès à google est immédiat. Un petit test sur www.ipv6-test.com confirme que tout vas bien.

1ère observation: Sur un poste uniquement IPv6, on n’a accès a aucun site dont le serveur n’est qu’en IPv4.
2ème observation, plus curieuse: Windows Update ne fonctionne pas… il n’est pas IPv6 ready en 2015 alors qu’ils intègrent pourtant l’IPv6 depuis 2008 dans leurs logiciels ?!

Hormis ce problème de défaut de préparation du système de mise à jour, le système s’accoutume bien de l’IPv6 statique, et fonctionne de façon stable, même en désactivant totalement l’IPv4.
La connexion au bureau distant par exemple fonctionne très bien, ainsi qu’un serveur web IIS situé sur ce poste.
En revanche les petits logiciels annexes, une très vieille version de Serv-U (version 6.4) et freeFTPd ne fonctionnent pas mais cela parait assez logique.

Expérimentation sous Ubuntu 14.04.2

L’installation de l’IPv6 statique se fait dans le fichier /etc/network/interfaces

1ère observation: La mise à jour via apt-get update && apt-get upgrade -y fonctionne nickel. Preuve que les dépôts Ubuntu ont une longueur d’avance sur leurs alter-égo de Microsoft.
2ème observation: SSH fonctionne nickel. La connexion réalisée avec Winscp et Putty depuis mon poste abouti parfaitement.
3ème observation: La suppression de la config de l’IPv4 mène a un dysfonctionnement et a plus de 2 mn d’attente a chaque redémarrage. Donc j’ai laisser un config réseau bidon pour qu’il passe outre ce problème.

Sauf qu’Ubuntu, contrairement a Microsoft, ne tolère pas cette erreur de masque… Et au bout d’un délai aléatoire se plante, perte de connectivité totale du serveur jusqu’au reboot.

L’incohérence a pour effet de lui faire perdre sa route par défaut … Donc seul les postes dans le même sous réseau que lui peuvent continuer a dialoguer avec lui… et … c’est bête pour un serveur situé dans un datacentre !

conclusions

Même les grands de l’informatique tel qu’OVH peuvent se perdre dans la complexité de l’IPv6.
Les choses avances tout doucement sur cette évolution inévitable. Il y’a plein de pièges a connaitre, les mécanismes sont beaucoup plus complexes qu’en IPv4 et on est encore loin de pouvoir faire du FULL IPv6 sous peine de ce couper d’une grande partie du monde…

A bientôt

 

Compacter le vhdx d’un serveur Ubuntu virtualisé sur Hyper-v

Attention, AVANT TOUTE CHOSES:

  • Pour éviter tout problème, d’abord faire une sauvegarde de la machine virtuelle avant cette opération a faire à vos risques & périls
  • L’opération est longue, donc à faire a un moment ou la machine peut être arrêté suffisamment longtemps (genre 2h)

 La problématique:

Hyper-v fait croitre un disque dynamique mais ne le réduit jamais. Lorsqu’une machine travaille beaucoup en création/effacement de fichiers, le volume s’accroit sans jamais décroitre une fois l’activité terminée. Ce qui peut poser des problèmes de place et aussi des difficultés pour sauvegarder un vhdx devenu gigantesque.

Dans cette exemple, un serveur Ubuntu nommé srv-travail (serveur web de test) et autre nommé srv-web (serveur proxy) tous deux passés de Ubuntu V12 à V14.

0-avancompactage

Sur un Windows virtualisé, seule l’étape 2 de ce tutoriel serait nécessaire: il suffit d’ordonner à hyper-v de compacter l’image.
Mais un serveur Ubuntu virtualisé, le contenu de l’image n’est pas directement « comprise » par hyper-v, il faut faire une étape supplémentaire assez longue qui consiste à remplir l’espace vide de 0.

Ceci peut se faire grâce à la commande zerofree

Sauf que bien sûr, cette opération ne marche pas sur un volume en activité donc, il faut le faire en étant « offline ».
On peut donc facilement réaliser cette opération avec un système portable nommé SystemRescueCD

Il peut être téléchargé sur ce lien

http://sourceforge.net/projects/systemrescuecd/files/latest/download?source=typ_redirect

1ère Étape: le vidage de l’espace libéré

  • Arrêter votre machine virtuelle Ubuntu,
  • Chargez le l’image iso dans le lecteur cdrom virtuel de votre machine,
    1-insertioncd
  • Redémarrez votre machine => celle-ci va se lancer sur SystemRescueCD
    2-demarragesystemrescuecd
  • Choisissez l’option 1, le chargement se lance pour ne s’interrompre uniquement pour demander la définition du clavier.
  • Tapez fr puis entrer
  • Vous arrivez alors sur l’interface.
    3-arrivesurinterface
  • A ce point, deux possibilités soit votre système est installé sur un LVM, soit il est basé sur un partition normale:

Si votre système est créé sur une partition LVM:

vgchange -a y

=> cette instruction vous renvoi un warning a ignorer, mais aussi le nom du volume LVM.

  • zerofree /dev/[nom du volume LVM]/root

Si votre système est créé sur une partition normale:

Vous trouverez alors votre VHDX en /dev/sda1

  • zerofree /dev/sda1

Si vous avez réussi, l’opération est longue (genre 20mn à 1h). Si cela rend la main presque immédiatement, c’est qu’en sda1 est monté une partition de boot toute petite pour un volume LVM donc dans ce cas il faut suivre le process pour un volume LVM

Exemple en LVM sur la seconde machine, srv-web:

4-operationsurlvm

 

2ème étape: le compactage

Comme d’habitude ce qui fonctionnait très bien sur les versions précédentes (Windows 2008r2) ne fonctionne plus sur les version actuelles (Windows 2012r2), quand on demande le compactage du volume sous un Windows 2012r2… il ne se passe rien ! Génial ! Donc il faut le faire en PowerShell

Click droit sur votre icône Powershell puis « Exécuter en tant qu’Administrateur »
Dans la console PowerShell, vous devrez saisir les 3 instructions suivantes

Mount-VHD -Path "[chemin et nom du fichier]" -ReadOnly
Optimize-VHD -Path "[chemin et nom du fichier]" -Mode Full

5-compactagevhdx
Là aussi, cela dure assez longtemps… voire très longtemps…

Dismount-VHD "[chemin et nom du fichier]"

A noter que les commandes Mount et Dismount sont optionnelles, mais elles permettent de verrouiller le VHDX pendant l’opération pour diminuer les risques sur un environnement multi utilisateurs.

Opération terminée. Ejectez le cdrom du lecteur virtuel de la VM puis redémarrez.

Résultats

7-resultat

Dans mon exemple, j’ai gagné 6Go sur la VM srv-travail et 9Go sur la VM srv-travail. Sur d’autre machines ou j’ai effectué l‘opération, le gain a même été bien plus important. Ainsi sur un serveur de prod le vdhx est passé de 156Go à 27Go.

Montage permanent d’un dossier ftp

Suivant l’article précédent permettant de monter un partage Windows de façon permanent sous Ubuntu.

Ceci est réaliser grâce a curlftp

apt-get install curlftp

Ensuite on ajoute le point de montage dans fstab:

vi /etc/fstab et ajouter la ligne

curlftpfs#(login):(pass)@(adresse) (dossier de montage) fuse rw,user,allow_other,uid=1000,utf8,_netdev 0 0

Puis

modprobe fuse

Référence:

http://doc.ubuntu-fr.org/curlftpfs

Remerciements à Maxime pour cette information.

Monter un partage NFS d’un nas netgear sur Ubuntu

Si, par exemple pour sauvegarder vos données ou avoir un partage commun entre plusieurs machine
Ubuntu vous souhaitez partager un dossier sur un nas NETGEAR voici la méthode.

Un préambule a savoir:
Les nas netgear comporte un dossier parent dans lequel se trouve les partages que vous pouvez créer. Selon la version de Raidiator (nom du firmware) présente, ce dossier ne porte pas le même nom.

Sur la version 4.xxxx de RAIDiator celui-ci s’appelle « c ».
Sur la version 6.xxxx de RAIDiator celui-ci s’appelle « data »
dans cette exemple, on prendra la version 4. donc /c/ comme début de chemin. a remplacer donc par /data/ pour une version 6.

Méthode:
Sur le Nas:
– Il faudra activer le protocole NFS dans les services
– Creer le partage NFS

Sur la version 6, (au design palot pour suivre la mode Microsoft/Apple et comportant multiples bugs non existant dans la version 4):

La même chose sur la version 4:

Notez un point très important:

Pour avoir le droit de faire un CHMOD sur les dossiers, vous devrez Obligatoirement définir l’ip de l’ordinateur Ubuntu ayant l’autorisation d’acces racine (ROOT) sinon vous chercherez un moment pour comprendre pourquoi un CHMOD lancé en root depuis votre ubuntu échoue avec des problèmes de droits.
Sur Ubuntu:
– Il faudra installer NFS
– Creer un dossier pour recevoir le montage
– Puis monter le partage soit pour l’usage unique, soit pour qu’il se recrée à chaque démarrage.
 

sudo apt-get install nfs-common

cd /
sudo mkdir /monpointdemontage
sudo mount -o soft,intr,rsize=8192,wsize=812 ipdemonnas:/c/partagesurmonnas /monpointdemontage
pour l’auto-monter au démarrage:

sudo vi /etc/fstab

et ajouter la ligne

ipdemonnas:/c/monpartage /monpointdemontage nfs soft,intr,rsize=8192,wsize=8192

puis rebooter: sudo shutdown -r 0

après le reboot, voir le resultat avec la commande df -h

OpenVPN sur Ubuntu

Openvpn_logoL’installation d’OpenVPN présente un certain niveau de difficulté et il y’a des choses a bien garder a l’esprit.
En premier lieu, les étapes a réaliser:

1) Installer OpenVPN
2) Installer Webmin et le module de controle de OpenVPN
3) Creer l’autorité de certification
4) Creer les deux certificats (serveur et client)
5) Creer la connexion VPN partie serveur
6) Creer la connexion VPN partie cliente
7) Récuperer l’export de la partie cliente et sur l’ordinateur client dans le dossier correspondant
8) La connexion est opérationnelle.

En second lieu, le fait que l’on aura 3 réseaux: le réseau local du serveur VPN, le sous réseau de connexion, et le réseau local du client. Aucun des 3 ne doit être identiques sinon aucun routage n’est possible.
Dans cet exemple:
– le réseau local sera 192.168.10.0/24 au sein duquel, le serveur vpn sera en 192.168.10.5 sur sa carte eth0,
– le réseau de connexion 10.10.10.0/24. le réseau local du client est inconnu mais devra OBLIGATOIREMENT être différents de ces deux la.

1) Installer OpenVPN:

sudo apt-get install openvpn

Le VPN aura une interface réseau séparé (tun0) de l’interface de base (eth0) donc pour que les clients connecté puis accéder au réseau local il y aura 2 choses a effectuer:

  • S’assurer que le serveur VPN achemine les paquets entre le réseau de connexion et le réseau local en activant routage de paquets:
sudo vi /etc/sysctl.conf

décommenter la ligne
net.ipv4.ip_forward=1
puis sauvegarder et sortir.

  • Pour que les appareils du réseau local puisse répondent aux client connectés, il est nécessaire qu’ils puisse acheminer cette réponse. Les appareils ne connaissent qu’une adresse de sortie: la passerelle par défaut, donc pour des raisons pratique, c’est sur celle ci qu’il sera souhaitable d’ajouter la route vers les clients vpn pointant sur le serveur VPN.

Dans notre exemple, la route sera du style:

route add 10.10.10.0 mask 255.255.255.0 192.168.10.5

=>   où 192.168.10.5 est l’ip lan du serveur vpn et 10.10.10.0/24 le sous réseau de connexion vpn.

Il existe un cas d’exception: Free qui considère que leur usagers sont trop basiques pour avoir besoin de route statique donc, contrairement au livebox, sfr box et autres petits routeurs meme de premier prix, la Freebox n’intègre aucune route statique. Pour les malheureux freenautes, dont je fais parti, soit on transforme le serveur VPN en routeur pour en faire la passerelle par défaut du réseau, soit il faudra alors définir la route statique en persistant dans tous les appareil nécessitant un dialogue avec les clients VPN.

2) Installer webmin

(voir tuto webmin)

Installer le module openvpn en spécifiant le liens de téléchargement dans l’interface de webmin
L’adresse est:
http://www.openit.it/downloads/OpenVPNadmin/openvpn-2.6.wbm.gz

OPENVPN-1-install-module-webmin-openvpnDans Webmin =>Configuration de Webmin =>Module Webmin
recharger le modules => le module OpenVPN+CA est présent

OPENVPN-2-Apres-install-module-webmin-openvpn

3) Créer l’autorité de certification:

Remplir le formulaire puis valider.

IMPORTANT: contrairement a cette capture d’écran State doit contenir LE CODE du pays c’est a dire FR sinon cela provoque un message d’erreur.

OPENVPN-3-creation-autorite-certificationLa création dure un certain temps puis se termine:

OPENVPN-5-creation-autorite-termine

Ensuite cliquer sur Retourner a OpenVPN Administration

4) Créer les deux certificats (serveur et client):

Cliquer sur Certification authority list puis sur la droite de la ligne de votre autorité de certification sur list

D’abord le certificat serveur:

OPENVPN-7-creation-certificat-serveurPuis cliquer sur Sauvegarder
Ensuite le certificat client

OPENVPN-8-creation-certificat-client

Puis cliquer sur Sauvegarder

Normalement on doit a ce moment avoir 2 certificats avec le statut « active »:OPENVPN-9-resultat-creation-certificats

Cliquez sur « Retourner à OpenVPN Administration ».

5) Creer la connexion VPN partie serveur:

Sur l’écran OpenVPN Administration cliquez sur le bouton « VPN list » puis sur le bouton « New VPN server »

Creer la connexion Vpn en définissant
– le certificat sur le certificat serveur créé juste avant,
– L’interface désigner dans « Network Device for Bridge » est celle qui correspond a votre Lan. Dans cet exemple, c’est eth0
– la plage ip distribué hors du réseau lan du serveur vpn, par exemple 10.10.10.0/24
– l’algorithme d’authentification « Encrypt packets with cipher algorithm (option cipher) » doit être sur AES 256 CBC256 sinon ne fonctionne pas
– Le changement du port d’écoute peut être une bonne idée pour améliorer la sécurité.

OPENVPN-b-creation-vpn-server-definition-dhcpet en paramètres envoyés (a changer selon vos paramètres LAN):

push « route 192.168.10.0 255.255.255.0 »
push « dhcp-option DNS 192.168.10.3 »

Pour permettre le routage et la résolution DNS du réseau local derrière le serveur VPN.

et éventuellement: push « redirect-gateway » pour rediriger tout le trafic sur le VPN

OPENVPN-c-creation-vpn-server-definition-options-dhcppuis sauvegarder

Puis, très important, cliquer sur START pour l’activer.

6) Créer la connexion VPN partie cliente:

Cliquer sur Client List

Puis cliquer sur New VPN Client

OPENVPN-d-creation-vpn-client-1
Choisir le certificat client
Puis saisir l’ip externe (l’ip publique ou l’alias internet) de votre serveur VPN.
Note: Celle ci devra être statique ou aliassé avec un DNS dynamique.

OPENVPN-e-creation-vpn-client-1
puis Sauvegarder
Ensuite cliquer sur Export  pour récupérer le package de configuration pour l’ordinateur client a désarchiver puis copier dans le répertoire conf de celui-ci.

7) Vérification:

  • Avant de lancer la connexion un « sudo service openvpn restart » pour s’assurer de l’application des paramètres
  • S’assurer que dans le routeur (ou box) le port spécifié (ici 1194 udp) est ouvert vers l’ip du serveur VPN (ici 192.168.10.5)
  • Faire un ifconfig pour voir si l’interface tun0 est bien crée dans la liste des interfaces du serveur Ubuntu.

Il ne reste plus qu’a se connecter avec l’ordinateur client.

8) Références:

http://doc.ubuntu-fr.org/openvpn

Connecter Ubuntu Server à un VPN PPTP (installation du vpn client)

Contrairement a beaucoup de chose sous linux, la connexion cliente a un VPN PPTP sans interface graphique est pas d’une clarté limpide…

Les pré-requis:
– Avoir un serveur Vpn distant dont vous avez l’ip, le login et le mot de passe de connexion (dans mon exemple: Login => « Dominique », Mot de passe => « D7o6m1i2ni0que! », Adresse: « test.dfconcept.com ») (note: ils sont faux, c’est juste pour documenter ce didacticiel)
– Connaitre la plage Ip du sous réseau distant sur lequel on souhaite se connecter (dans mon cas 192.168.0.0/24)
– Définir arbitrairement un nom a cette connexion. (Dans mon exemple « MaConnexionVPN »)

La première chose c’est l’installation du paquet:

sudo apt-get install pptp-linux

Ensuite il faut ajouté une ligne dans le fichier /etc/ppp/chap-secrets avec
le login, le nom de la connexion, le mot de passe de la connexion selon le format suivant:
NomUtilisateur NomDeLaConnexion MotDePasse AdresseIp

sudo vi /etc/ppp/chap-secrets

Puis dans le fichier:

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
Dominique MaConnexionVPN D7o6m1i2ni0que! *

Ensuite il faut creer le fichier de connexion dans /etc/ppp/peers/

pty "pptp test.dfconcept.com --nolaunchpppd"
name Dominique
remotename MaConnexionVpn
require-mppe-128
file /etc/ppp/options.pptp
ipparam MaConnexionVpn

La derniere étape est de définir un script qui ajoutera dynamiquement les routes vers le réseau distants lors de l’établissement de la connexion vpn:

sudo vi /etc/ppp/ip-up.d/99mesroutesvpn

Puis dans se fichier faire un copier coller de ceci (a adapter a votre config):

#!/bin/bash

if [ "$PPP_IPPARAM" == "MaConnexionVpn" ]; then
        route add -net 192.168.0.0/24 dev $PPP_IFACE
fi

ensuite rendre ce script exécutable:

sudo chmod +x /etc/ppp/ip-up.d/99mesroutesvpn

Pour lancer la connexion:

sudo pon MaConnexionVpn

Pour l’arrêter

sudo poff

En cumulant cet article au précédent, il est possible de faire un routeur dont la sortie est un VPN.

Creer un routeur lan-lan sur ubuntu

Pour se créer un routeur Lan<=>Lan rapide, installer un Ubuntu sans aucun module.

régler eth0 sur une ip du premier réseau en statique
regler eth1 sur une ip du second réseau en statique

ensuite pour activer le routage des paquets entre les deux réseaux, lancer les commandes:

sudo route add -net (premier réseau) netmask (masque du premier réseau) gw (ip de la carte eth0)

sudo route add -net (second réseau) netmask (masque du second réseau) gw (ip de la carte eth1)

sudo vi /etc/sysctl.conf

décommenter la ligne
net.ipv4.ip_forward=1
puis sauvegarder et sortir.

=> le routage entre les deux réseaux est alors actif

Mise en situation dans mon cas:

  • Le réseau informatique est en 192.168.27.0/24
  • Le réseau téléphonique est en 192.168.65.0/24
  • Le réseau informatique et le réseau téléphonique possède tout deux un DHCP
  • Chaque réseau est sur son propre switch.
  • Le client doit pouvoir depuis le réseau informatique pouvoir accéder au statistique et aux paramètres de l’autocom.

schema_lan-lanSolution retenue:

  • Création d’un VLAN 10 sur le switch informatique pour la téléphonie. (sur une prise en non taguée et sur l’agrégat de prise du serveur 2012 en taguée)
  • Connexion du Switch Téléphonie sur la prise non taguée
  • Création d’un machine virtuelle Hyper-V ayant 2 cartes réseaux. la seconde réglée sur le VLAN 10
  • Installation de Ubuntu
  • Configuration de Eth0 en 192.168.27.7 masque 255.255.255.0 passerelle 192.168.27.1
  • Configuration de Eth1 en 192.168.65.254 masque 255.255.255.0
  • Réglage de l’autocom pour utiliser l’adresse 192.168.65.254 comme passerelle.

puis sur le Ubuntu:

sudo route add -net 192.168.27.0 netmask 255.255.255.0 gw 192.168.27.7
sudo route add -net 192.168.65.0 netmask 255.255.255.0 gw 192.168.65.254

A cette étape le réseau informatique pouvait pinger 192.168.65.254 mais pas l’autocom 192.168.65.1 => les paquets n’étaient pas envoyé vers l’autocom =>

sudo vi /etc/sysctl.conf

décommenter la ligne
net.ipv4.ip_forward=1
puis sauvegarder et sortir.

=> Le réseau informatique peut alors pinger l’autocom en 192.168.65.1 car le serveur Ubuntu envoi bien le paquet vers celui-ci.

Observation:

Oui c’est minimaliste, pas de pare-feu, rien du tout, c’est juste une démonstration qu’Ubuntu peut être d’un grand secours lors d’un déploiement et ce en très peu de temps pour ponter deux réseaux de confiance sans se lancer dans les lourdeurs du service ce routage de Windows, ni matériel supplémentaire.

Historique et configuration du shell « bash » (interpreteur de commande)

bash étant l’interpréteur de commande le plus courant dans linux.

Dans le dossier de l’utilisateur, il existe deux fichiers important à connaitre:

tapez « ls -al » dans le dossier de l’utilisateur et certains fichiers apparaissent:

drwxr-xr-x 4 dominique dominique 4096 août 25 11:40 .
drwxr-xr-x 3 root root 4096 mai 3 17:40 ..
-rw------- 1 dominique dominique 4692 août 28 22:32 .bash_history
-rw-r--r-- 1 dominique dominique 220 mai 3 17:40 .bash_logout
-rw-r--r-- 1 dominique dominique 3486 mai 3 17:40 .bashrc
drwx------ 2 dominique dominique 4096 mai 3 17:42 .cache
-rw------- 1 dominique dominique 176 juil. 20 15:03 .mysql_history
-rw-r--r-- 1 dominique dominique 675 mai 3 17:40 .profile
drwxr-xr-x 2 root root 4096 août 25 11:39 .vim
-rw------- 1 root root 5785 août 25 11:40 .viminfo

il s’agit des fichiers « .bash_history » et « .bashrc »

.bash_history est la liste des dernières commandes saisies. Très utilise pour se souvenir de ce que l’on a lancé précédemment car il garde un historique conséquent.

.bashrc est le fichier de configuration de l’interpréteur.

Comme vous le voyez, il en existe d’autres, tel que l’historique des commande mysql (si vous l’utilisez) et autres.