Installation d'un controlleur Unifi sur Raspberry Pi 3

Posté le sam. 21 octobre 2017 • Tags : RaspberryPi, Unifi, Debian

Pour commencer il faut télécharger la dernière version de raspbian sur le site officiel raspberrypi.org. Actuellement c'est 2017-09-07-raspbian-stretch-lite.zip.

Il faut ensuite extraire l'image de l'archive :

unzip 2017-09-07-raspbian-stretch-lite.zip

Puis mettre l'image sur une carte micro sd, j'utilise la commande dmesg pour voir le nom du périphérique USB sur ma machine :

[5371729.056039] usb-storage 2-1.3:1.0: USB Mass Storage device detected
[5371729.056115] scsi host5: usb-storage 2-1.3:1.0
[5371730.058300] scsi 5:0:0:0: Direct-Access     Single   Flash Reader     1.00 PQ: 0 ANSI: 0
[5371730.058447] sd 5:0:0:0: Attached scsi generic sg1 type 0
[5371730.509370] sd 5:0:0:0: [sdb] 15759360 512-byte logical blocks: (8.07 GB/7.51 GiB)
[5371730.510383] sd 5:0:0:0: [sdb] Write Protect is off
[5371730.510386] sd 5:0:0:0: [sdb] Mode Sense: 03 00 00 00
[5371730.511384] sd 5:0:0:0: [sdb] No Caching mode page found
[5371730.511386] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[5371730.516135]  sdb: sdb1
[5371730.519381] sd 5:0:0:0: [sdb] Attached SCSI removable disk

Je copie donc l'image sur /dev/sdb « ma microsd d'après dmesg.

dd bs=4M if=/home/choiz/2017-09-07-raspbian-stretch-lite.img of=/dev/sdb conv=fsync

Une fois la copie terminée, je déconnecte la micro sd et je démarre le Raspberry Pi.

dd bs=4M if=2017-09-07-raspbian-stretch-lite.img of=/dev/sdb conv=fsync
442+1 enregistrements lus
442+1 enregistrements écrits
1854590976 bytes (1,9 GB, 1,7 GiB) copied, 288,12 s, 6,4 MB/s

Une fois le Raspberry Pi démarrer s'identifier avec : pi / raspberry (attention le clavier est en qwerty pour l'instant donc tapper rqspberry en mot de passe ;-)

Puis tappez la commande sudo bash pour passer en root puis raspi-config pour configurer votre Raspberry Pi.

  1. Changer les locales (4 Localisation Option, puis I1 Change Locale), décocher en_GB.UTF-8 UTF-8 et cocher fr_FR.UTF-8 UTF-8. "Default local for the system environment:" choisir fr_FR.UTF-8

  2. Changer le timezone (4 Localisation Option, puis I2 Change Timezone), choisir Europe, puis Paris.

  3. Changer le layout du clavier (4 Localisation Option, puis I3 Change Keyboard Layout), choisir Generic 105-key (Intl) PC, Other, French, French - French (Azerty), The Default for keybord layout, et pour finir : No compose key.

  4. Changer le pays pour le wifi (4 Localisation Option, puis I4 Change Wi-fi Country), choisir FR France.

  5. Ajouter le SSH (5 Interfacing Options, P2 SSH) Puis répondre "yes" pour activer le serveur SSH.

  6. Choisir 7 Advanced Options, A1 Expand Filesystem.

  7. Choisir 8 Update pour mettre à jour raspbian.

  8. 2 Hostname si vous voulez changer le nom de votre raspberry par exemple "raspberrypi3".

9: Finish, et redémarrer.

Récuperer l'adresse ip du raspberry pi pour se connecter dessus via SSH.

ssh pi@adresseip

pi@raspberry3:~ $ sudo bash

root@raspberrypi3:/home/pi# apt install dirmngr -y

root@raspberrypi3:/home/pi# echo 'deb http://www.ubnt.com/downloads/unifi/debian stable ubiquiti' | tee -a /etc/apt/sources.list.d/ubnt.list > /dev/null

root@raspberrypi3:/home/pi# apt-key adv --keyserver keyserver.ubuntu.com --recv C0A52C50

root@raspberrypi3:/home/pi# apt update -y

root@raspberrypi3:/home/pi# apt install unifi -y

root@raspberrypi3:/home/pi# echo 'ENABLE_MONGODB=no' | tee -a /etc/mongodb.conf > /dev/null

root@raspberrypi3:/home/pi# apt install oracle-java8-jdk -y

root@raspberrypi3:/home/pi# echo 'JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt' | tee /etc/default/unifi > /dev/null

root@raspberrypi3:/home/pi# reboot

Une fois le raspberry pi démarrer se rendre sur https://ip_raspberry:8443 vous devriez avoir votre interface Unifi disponible.


Faire du NAT avec Proxmox

Posté le dim. 15 octobre 2017 • Tags : NAT, Proxmox, IPV4

L'idée est d'utiliser qu'une seule adresse ip public pour plusieurs VM. Comme à la maison vous avez des adresses ip en 192.168.x.x notre serveur proxmox peut faire la même chose.

Ip Public de proxmox : 11.22.33.44 Ip Privé de proxmox : 10.0.0.254

Je me connect en ssh à Proxmox et je modifie le fichier /etc/network/interfaces j'ajoute à la fin du fichier :

auto vmbr2
iface vmbr2 inet static
    address 10.0.0.254
    netmask 255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE

On peut également ajouter si on veut différents ports qu'on ouvre vers l'exterieur vers tel ou tel VM ou conteneur. Par exemple j'ouvre le port 22 de mon conteneur avec l'ip 10.0.0.1 sur le port 8022 de mon ip public :

    post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8022 -j DNAT --to 10.0.0.1:22
    post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 8022 -j DNAT --to 10.0.0.1:22

Ensuite enregistrer le fichier /etc/network/interfaces puis relancer les interfaces réseaux

service networking restart

Lorsque vous allez faire la configuration réseau d'une VM ou d'un conteneur, il suffit de renseigner une adresse ip de la plage 10.0.0.0/24

Exemple :

auto eth0
iface eth0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    gateway 10.0.0.254

Puis faites un ping depuis votre conteneur vers l'ip 10.0.0.254, puis vers un site internet duckduckgo.com par exemple.


Créer un partage NFS

Posté le dim. 15 octobre 2017 • Tags : partage, NFS, linux, debian, gentoo

Pour installer un serveur NFS sur Debian voici la marche à suivre :

apt install nfs-kernel-server

Une fois le paquet installé, il faut modifier la configuration pour ajouter votre partage.

Editer le fichier /etc/exports

vim /etc/exports

J'ajoute dans le fichier le dossier à partager /home/user/share et l'adresse du ou des clients qui peuvent accèder a ce partage 10.0.0.1(rw,sync,no_subtree_check) ici mon client a l'adresse ip 10.0.0.1 ce qui donne :

/home/user/share 10.0.0.1(rw,sync,no_subtree_check)

Recharger le service :

service nfs-kernel-server reload

Vérifier que votre partage est bien actif :

showmount -e

Côté client, j'ai installé sur Gentoo : net-fs/nfs-utils

emerge -a net-fs/nfs-utils

Sur Debian installer le paquet : nfs-common

apt install nfs-common

Ensuite configurer votre fichier /etc/fstab

vim /etc/fstab

Ajouter à la fin du fichier l'ip de votre partage avec le nom local puis le point de montage sur votre client.

10.0.0.100:/home/user/share /home/user/nfs-nas nfs defaults,user,auto,noatime,intr 0 0

Puis monter le nouveau partage avec la commande mount -a

Si vous faites la commande ls /home/user/nfs-nas vous devriez voir les fichiers qui se trouvent sur votre serveur.


Mise à jour de UniFi Security Gateway 3P (USG)

Posté le dim. 03 septembre 2017 • Tags : UniFi, Gateway, USG, Network, Update

J'ai mis à jour mon USG en version 4.3.49.5001150 aujourd'hui.

Pour qu'il soit toujours fonctionnel derrière une livebox j'ai du refaire les différentes étapes d'installation de mon article Remplacer sa livebox par un UniFi Security Gateway 3P (USG).


Remplacer sa livebox par un UniFi Security Gateway 3P (USG)

Posté le sam. 26 août 2017 • Tags : UniFi, Gateway, Livebox, USG, Network

Ayant pas mal utilisé le materiel d'ubiquiti j'ai acheté un USG 3 pour la maison.

En recherchant un peu sur le net j'ai vu qu'il était possible de remplacer la livebox par l'USG tout en concervant la télévision etc… grâce aux VLANs.

Il y a pas mal de manipulations a faire avant de pouvoir remplacer totalement sa livebox par l'USG.

J'ai utilisé un raspberry pi qui me permet d'installer un controlleur UniFi qui permet de gerer son matériel de la marque.

En branchant l'USG au secteur il prend l'adresse IP 192.168.1.1 (la même que la livebox dans un premier temps ça aide pas…). Je branche donc l'USG en direct sur mon poste et je me connect en ssh dessus avec les login / pass : "ubnt / ubnt".

Se rendre sur mon générateur de configuration pour générer un fichier config_usg.sh

Puis télécharger les fichiers :

Faire un scp de dhclient3 rfc3442-classless-route config_usg.sh sur votre USG avec l'utilisateur "ubnt" et le mot de passe "ubnt"

scp dhclient3 rfc3442-classless-routes config_usg.sh ubnt@192.168.1.1:/home/ubnt

Se connecter en ssh sur votre usg :

ssh ubnt@192.168.1.1

Remplacer le dhclient3, copier la rfc au bon endroit et rendre executable mon script :

sudo bash
mv dhclient3 /sbin/dhclient3
chmod 775 /sbin/dhclient3
chown root:root /sbin/dhclient3
mv rfc3442-classless-routes /etc/dhcp3/dhclient-exit-hooks.d/
chown root:root /etc/dhcp3/dhclient-exit-hooks.d/rfc3442-classless-routes
chmod a+x config_usg.sh

Editer le fichier /opt/vyatta/sbin/vyatta-interfaces.pl et ajouter l'option 90 du dhcp. Il faut aller a la ligne 194 :

    $output .= "option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;\n\n";

Et ajouter dessous :

    $output .= "option rfc3118-auth code 90 = string;\n\n";

Maintenant redémarrer l'USG.

root@ubnt:/home/ubnt# reboot
Proceed with reboot? [confirm]y

Débrancher votre controlleur du réseau (pour ne pas que l'USG reprovisionne une vielle configuration).

Se connecter de nouveau en ssh sur l'usg :

ssh ubnt@192.168.1.1

Se connecter en tant que root pour executer le script

sudo bash
./config_usg.sh

Vous devriez avoir :

The specified configuration node already exists
[ service nat rule 6010 outbound-interface eth0.832 ]
NAT configuration warning: interface eth0.832 does not exist on this system

[ service nat rule 6011 outbound-interface eth0.838 ]
NAT configuration warning: interface eth0.838 does not exist on this system

[ interfaces ethernet eth0 vif 838 address dhcp ]
Starting DHCP client on eth0.838 ...

[ interfaces ethernet eth0 vif 832 address dhcp ]
Starting DHCP client on eth0.832 ...

[ service ssh ]
Restarting OpenBSD Secure Shell server: sshd.

[ protocols igmp-proxy ]
Starting IGMP proxy

[ service dhcp-server ]
Stopping DHCP server daemon...
Starting DHCP server daemon...

Saving configuration to '/config/config.boot'...
Done
[edit]

Puis j'éteind l'USG pour remplacer la livebox.

Le port WAN1 pour l'ONT

Le port LAN1 pour votre réseau local

Le port WAN2/LAN2 pour la télévision

Quand j'arrive a joindre l'usg sur l'IP 192.168.1.1 je me reconnect en ssh et je me connect en root pour sauver la config et l'envoyer sur ma machine.

sudo bash
mca-ctrl -t dump-cfg > config.gateway.json
scp config.gateway.json user@ma_machine:/home/user/

Maintenant je me déconnecte de l'usg. Je débranche le câble réseau entre l'usg et mon réseau local pour pouvoir rebrancher mon controlleur. Si on débranche pas l'usg il va reprendre la config par defaut du controlleur et il faudra tout refaire (hormis les copies des fichiers dhclient3 rfc… etc…).

Depuis mon poste je copie sur mon controlleur le fichier config.gateway.json que je viens de sauver.

scp config.gateway.json user@mon_controlleur:/home/user

Puis je me connecte a mon controlleur en ssh pour déposer dans le bon dossier ce fichier.

Le dossier doit être /data/sites/default si vous utilisez le site par defaut.

Reconnecter l'USG a votre réseau.

Il va être de nouveau provisionné par votre controlleur, si vous avez des erreurs lors de ce provisionning elles seront affichées dans "alerts" sur votre controlleur. Dans ce cas il y a un truc qui cloche entre votre config et celle du controlleur revoir les différentes étapes.

Si le provisionning est ok l'USG redémarre et la config est enfin fini ! ;-)

Grand merci au forum lafibre.info et particulièrement ce sujet.


Installation de Proxmox-VE 5 sur Debian Stretch

Posté le sam. 26 août 2017 • Tags : Proxmox, Debian, Stretch

Suite à l'installation de mon NAS, j'ai installer un proxmox dessus. Par contre il ne faut pas modifier le sources.list ni installer firmware-linux-nonfree avant d'installer proxmox (celà ne fonctionne pas du tout).

Sur debian éditer le fichier /etc/hosts comme ceci :

127.0.0.1       localhost.localdomain localhost
192.168.15.77   prox4m1.proxmox.com prox4m1 pvelocalhost

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Puis tester la configuration :

hostname --ip-address
192.168.15.77 # should return here your IP adress

Puis on ajoute au sources.list le dépot de proxmox, on récupere la clé et on update :

echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget http://download.proxmox.com/debian/proxmox-ve-release-5.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-5.x.gpg
apt update && apt dist-upgrade

Puis on install les packages Proxmox VE :

apt install proxmox-ve postfix open-iscsi

On configure postfix en distribution locale uniquement et à la fin de l'installation on reboot.

Au reboot vous devriez avoir la main en https sur https://ip_proxmox:8006

S'identifier avec vos login / pass debian.

Pour ne pas avoir la popup qui indique que vous n'avez pas de souscription il faut modifier le fichier /usr/share/pve-manager/js/pvemanagerlib.js et rechercher la ligne avec :

if (data.status !== 'Active') {

remplacer par :

if (false /*data.status !== 'Active'*/) {

Puis relancer pveproxy avec la commande pveproxy restart

Se déconnecter de l'interface proxmox, à la reconnection vous n'aurez plus le message de souscription.

Puis faire les commandes optionnelles :

apt remove os-prober
apt remove linux-image-amd64 linux-image-4.9.0-3-amd64
update-grub

Upgrade NAS

Posté le sam. 26 août 2017 • Tags : NAS, HP, Microserver, Debian, Proxmox, Stockage, Data

J'ai acheté il y a quelques années un HP Microserver Gen7 qui me sert de NAS, dessus j'avais installé Debian 6 à l'époque puis j'ai mis à jour jusqu'à la version 9.

Mon objectif est l'ajout d'un disque car j'ai 4 emplacements pour le stockage et je n'utilisais que 3 de ses 4 emplacements.

Pour commencer il me fallait un rack 5"¼ permettant de mettre un disque 3"½ ou 2"½, je l'ai trouvé sur LDLC c'est un "ICY BOX IB-129SSK-B", ensuite j'ai pris sur Amazon un disque Seagate ST500LM030 en 2"½ de 500Go et j'avais ce qu'il fallait pour le SATA et l'alimentation.

Ce qui m'a permis de mettre un disque 2"½ au niveau de l'emplacement CDROM du HP Microserver.

J'ai du tué mon uptime d'un an (depuis mon dernier déménagement) :

 12:31:37 choiz@wayland ~  #❯❯❯ uptime
 12:31:37 up 366 days,  1:08,  1 user,  load average: 0,16, 0,22, 0,24

Pour la réinstallation j'ai monté un serveur PXE sur debian merci Benjamin pour le lien et les conseils.

Installation du TFTP :

# apt install -y tftpd-hpa

Si vous avez un pare-feu n'oubliez pas d'ouvrir le port 69 :

# iptables -A INPUT -p udp -m udp --dport 69 -j ACCEPT

Installer le serveur DHCP :

# apt install isc-dhcp-server

Mes IP sont dans le réseau 192.168.1.0/24, mon router en 192.168.1.1, je met un range entre 192.168.1.100 et 192.168.1.150 mon serveur TFTP est en 192.168.1.2.

Voici la conf d'isc-dhcp-server :

default-lease-time 600;
max-lease-time 7200;

allow booting;

# in this example, we serve DHCP requests from 192.168.1.(3 to 253)
# and we have a router at 192.168.1.1
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.150;
  option broadcast-address 192.168.1.255;
  option routers 192.168.1.1;
  option domain-name-servers 192.168.1.1;
  filename "pxelinux.0";
}

group {
  next-server 192.168.1.2;
  host tftpclient {
    filename "pxelinux.0";
  }
}

Redémarrer le DHCP pour que la config soit prise en compte.

# systemctl restart isc-dhcp-server

Maintenant nous téléchargeons la dernière version de debian pour la mettre sur notre TFTP :

# cd /srv/tftp/
# wget -c http://ftp.fr.debian.org/debian/dists/stretch/main/installer-amd64/current/images/netboot/netboot.tar.gz
# tar -zxf netboot.tar.gz
# rm netboot.tar.gz
# systemctl restart tftpd-hpa

Le PXE est maintenant fonctionnel avec l'installation de debian.

Je réinstall donc debian 9.1 proprement.

Pour éviter d'avoir ses messages d'erreurs :

W: Possible missing firmware /lib/firmware/tigon/tg3_tso5.bin for module tg3
W: Possible missing firmware /lib/firmware/tigon/tg3_tso.bin for module tg3
W: Possible missing firmware /lib/firmware/tigon/tg3.bin for module tg3

Je modifie mon fichier /etc/apt/sources.list et j'ajoute les "non-free".

Puis j'install le firmware-linux-nonfree :

apt update
apt install firmware-linux-nonfree

Il me reste plus qu'a remonter mes disques de backup et de refaire mes partages.


Re-générer une clé rsa publique

Posté le lun. 05 juin 2017 • Tags : id_rsa, rsa, pub, key, ssh

Si vous n'avez plus de clé publique, mais que vous avez toujours votre clé privée vous pouvez regénérer votre clé publique.

Pour se faire il faut utiliser la commande ssh-keygen avec l'option -y et -f pour désigner la clé privé.

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub

On utilise ci-dessus l'id_rsa (privée) pour générer l'id_rsa.pub.


Utiliser un Bastion SSH

Posté le jeu. 01 juin 2017 • Tags : SSH, Bastion, linux, unix, tunnel

Pour créer un Bastion SSH il suffit de modifier votre configuration ssh qui se trouve dans ~/.ssh/config et d'ajouter les deux lignes suivantes :

Host destination.local
    ProxyCommand ssh user@bastion.fr -W %h:%p

C'est tout.

Explications : on utilise l'host bastion.fr pour se connecter à destination.local. Quand je tape sur ma machine local ssh choiz@destination.local mon client SSH lit le fichier de configuration, se connecte à l'host bastion.fr avec l'utilisateur user puis fait une nouvelle connexion vers ma destination.

Vous pouvez modifier votre configuration ssh pour se connecter à votre bastion avec une clé spécifique puis a votre destination avec une autre clé par exemple ou avec des utilisateurs différents…

Exemple :

Host bastion.fr
    User toto
    IdentifyFile ~/.ssh/bastion

Host destination.local
    User tata
    IdentifyFile ~/.ssh/destination

Enjoy vincent.m ;-)


Docker commandes utiles

Posté le dim. 14 mai 2017 • Tags : docker, linux, container

Voici quelques commandes très utiles si vous utilisez docker.

Supprimer tous les containers qui sont arétés :

docker ps -q | xargs docker rm

Supprimer toutes les images non utilisées :

docker images -q | xargs docker rmi

Se connecter a un conteneur docker lancé par son id :

docker exec -it id_de_votre_container /bin/bash

Se connecter a un conteneur docker lancé par son nom :

docker exec -it nom_de_votre_container /bin/bash