Post

Cubieboard2 (Debian 9 arm) Point d'accès Wifi VPN

Cubieboard2 (Debian 9 arm) Point d'accès Wifi VPN

Cubieboard2 (Debian 9 arm) Point d'accès Wifi VPN

Cubieboard2

cubieboard2

  • AllWinnerTech SOC A20,ARM® Cortex™-A7 Dual-Core ARM® Mali400 MP2 Complies with OpenGL ES 2.0/1.1
  • 1GB DDR3 @480M
  • 3.4GB internal NAND flash, up to 64GB on SD slot, up to 2T on 2.5 SATA disk
  • 5VDC input 2A or USB otg input
  • 1x 10/100 ethernet, support usb wifi
  • 2x USB 2.0 HOST, 1x mini USB 2.0 OTG, 1x micro sd
  • 1x HDMI 1080P display output
  • 1x IR, 1x line in, 1x line out
  • 96 extend pin interface, including I2C, SPI, RGB/LVDS, CSI/TS, FM-IN, ADC, CVBS, VGA, SPDIF-OUT, R-TP, and more

Debian Stretch

Création clé USB debian arm (ex /dev/sde)

1
zcat firmware.Cubieboard2.img.gz partition.img.gz > /dev/sdd

Utilisation module USB/Série /dev/ttyUSB0 et minicom Insertion carte SD et mise sous tension A20-OlinuxIno-Micro Installation :

  • Europe/France
  • Hostname : cubieboard
  • Domaine :
  • Miroir : France , ftp.fr.debian.org
  • Http Proxy :
  • Utilisateur : cubie
  • Partionnement
    • SDcard /boot ext2 512M
    • SSD 64Go LVM VG ssd64 ,root-lv 15G ext4, home-lv 20G ext 4 et swap 4G
  • software to install : SSH server et standard system utilities

A la fin de l’installation,redémarrage

Machine : cubieboard

Passage en super utilisateur su Les points de montage mount

1
2
3
/dev/mmcblk0p1 on /boot type ext2 (rw,relatime,block_validity,barrier,user_xattr,acl)
/dev/mapper/ssd64-root on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/mapper/ssd64-home on /home type ext4 (rw,relatime,data=ordered)

Version linux et debian:
uname -a
Linux cubieboard 4.9.0-4-armmp-lpae #1 SMP Debian 4.9.51-1 (2017-09-28) armv7l GNU/Linux 9.2

locales

1
dpkg-reconfigure locales
1
2
3
Generating locales (this might take a while)...
  fr_FR.UTF-8... done
Generation complete.

TimeZone : Europe/Paris (facultatif car défini à l’installation de debian)

1
dpkg-reconfigure tzdata

Installer sudo et modifier /etc/sudoers pour accès sans mot de passe à l’utilisateur yann

1
2
apt install sudo
echo "cubie     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Installer les outils
apt install rsync curl tmux jq figlet git -y

Disques

Les disques LVM

1
2
3
4
5
6
7
8
9
10
11
root@cubieboard:/home/cubie# pvs
  PV         VG    Fmt  Attr PSize  PFree
  /dev/sda1  ssd64 lvm2 a--  59.62g 23.30g
root@cubieboard:/home/cubie# vgs
  VG    #PV #LV #SN Attr   VSize  VFree
  ssd64   1   3   0 wz--n- 59.62g 23.30g
root@cubieboard:/home/cubie# lvs
  LV   VG    Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home ssd64 -wi-ao---- 18.62g                                                    
  root ssd64 -wi-ao---- 13.97g                                                    
  swap ssd64 -wi-ao----  3.72g                                                    

Modification nom des interfaces

Sur une installation debian stretch , il est impossible de définir plusieurs points d'accès avec hostapd ,car les interfaces réseau ont un nom complexe au lieu des traditionnels eth0 et wlan0

boot.scr est créé par un fichier script de démarrage. Si vous en avez un, vous pouvez utiliser mkimage pour créer votre fichier.
Si vous voulez baser votre script de démarrage sur un boot.scr et que vous n’avez pas la source d’origine, il est possible de créer le fichier source boot.txt

1
sudo dd bs=1 skip=72 if=/boot/boot.scr of=boot.txt

Sauvegarde de l’original

1
sudo cp /boot/boot.scr /boot/boot.scr.bak

Modification du fichier source de boot boot.txt,ajout commande kernel (net.ifnames=0 biosdevname=0) pour ne pas renommer les interfaces eth et wlan

1
setenv bootargs  "${bootargs} quiet net.ifnames=0 biosdevname=0"

Regénérer le fichier boot.scr

1
sudo mkimage -A arm -T script -C none -n "Interfaces wlan" -d boot.txt  /boot/boot.scr
1
2
3
4
5
6
7
8
Image Name:   Interfaces wlan
Created:      Mon Jan  1 17:06:12 2018
Image Type:   ARM Linux Script (uncompressed)
Data Size:    2429 Bytes = 2.37 kB = 0.00 MB
Load Address: 00000000
Entry Point:  00000000
Contents:
   Image 0: 2421 Bytes = 2.36 kB = 0.00 MB

Redémarrer la machine

HotSpot Wifi

Passer en mode su
Modification fichier /etc/apt/sources.list pour installer les “firmwares” Ralink et/ou Realtek
nano /etc/apt/sources.list
Ajouter “ contrib non-free” après stretch main des 2 lignes concernées
Màj
apt update && apt upgrade
Installation des pilotes Realtek et Ralink
apt -y install firmware-realtek firmware-misc-nonfree
Installer les outils wifi dns et réseau
apt install wireless-tools iw wpasupplicant dnsutils net-tools -y
Interface USB
lsusb
Bus 002 Device 002: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
Compatibilité Access Point
iw list |grep -i AP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
* AP
* AP/VLAN
Capabilities: 0x17e
* start_ap
* set_noack_map
* set_qos_map
* AP: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* AP/VLAN: 0x00 0x10 0x20 0x30 0x40 0x50 0x60 0x70 0x80 0x90 0xa0 0xb0 0xc0 0xd0 0xe0 0xf0
* AP: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* AP/VLAN: 0x00 0x20 0x40 0xa0 0xb0 0xc0 0xd0
* AP/VLAN
* #{ AP, mesh point } <= 8,
HT Capability overrides:
Device supports AP scan.
Driver supports full state transitions for AP/GO clients

Interface systéme
ip link

1
2
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:0f:00:3b:2e:31 brd ff:ff:ff:ff:ff:ff

HostApd

Installer hostapd et les outils wifi
sudo apt install hostapd
Configurer HostApd , éditer ou créer le fichier hostapd.conf
sudo nano /etc/hostapd/hostapd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
interface=wlan0
driver=nl80211
ssid=YanProtonVPN
hw_mode=g
channel=5
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=passphrase_YanProtonVPN
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Modifier le fichier /etc/default/hostapd
sudo nano /etc/default/hostapd

1
DAEMON_CONF="/etc/hostapd/hostapd.conf"

DHCP DnsMasq

Installer dnsmasq
sudo apt install dnsmasq
Sauuver configuration par défaut
mv /etc/dnsmasq.conf /etc/dnsmasq.conf.sav Configuration /etc/dnsmasq.conf
sudo nano /etc/dnsmasq.conf

1
2
3
4
5
no-resolv
interface=wlan0
dhcp-range=10.6.0.3,10.6.0.20,12h
server=208.67.222.222 # OpenDNS
server=208.67.222.220

Configurer interface wifi

Configurer l’interface’ wlan0 pour être statique
sudo nano /etc/network/interfaces
Supprimer tout ce qui fait référence aux anciens paramètres de configuration de wlan0, nous allons les changer
Ajouter en fin de fichier

1
2
3
4
allow-hotplug wlan0  
iface wlan0 inet static  
    address 10.6.0.1
    netmask 255.255.255.0

Activer et définir une adresse statique wifi dans une autre plage privée d’adresse 10.6.0
sudo ip link set dev wlan0 up

Pour corriger l’erreur RTNETLINK answers: Operation not possible due to RF-kill

1
2
3
4
	sudo -s
	apt install rfkill
	rfkill unblock all
	ip link set dev wlan0 up

On définit l’IP de wlan0 manuellement pour éviter de relancer le service
sudo ip addr add 10.6.0.1/24 dev wlan0

Configuration NAT

NAT (Network Address Translation) est une technique qui permet à plusieurs périphériques d’utiliser une seule connexion à Internet.
Linux prend en charge NAT en utilisant Netfilter (également connu sous le nom iptables)
Passage en su
sudo -s
Tout d’abord, activez le redirection IP dans le noyau:
sysctl net.ipv4.ip_forward=1
Pour le configurer automatiquement au démarrage, modifiez le fichier /etc/sysctl.conf
nano /etc/sysctl.conf
et décommenter la ligne suivante:
net.ipv4.ip_forward=1 # enable packet forwarding for IPv4
Dans la chaîne POSTROUTING, (après routage) on ne peut modifier que l’adresse source. L’adresse de destination est conservée. On fait donc du SNAT. On dit qu’on fait du “NAT source”.(masquerade : les adresses privées, utilisent toutes la même adresse publique)
Activer MASQUERADE sur l’interface qui partage internet Internet (eth0)

1
2
3
4
5
6
7
8
9
10
11
12
# RAZ tables
iptables -t filter -F
iptables -t nat -F
iptables -t filter -X
iptables -t nat -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
# HotSpot Wifi
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE -m comment --comment "Activer MASQUERADE sur interface eth0 qui partage Internet"
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Accepter les connexions etablies"
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT -m comment --comment "Accepter les nouvelles connexions venant interface wlan0"

Charger les règles iptables au démarrage
apt install iptables-persistent
Faut-il enregistrer les règles IPv4 actuelles ? OUI
Faut-il enregistrer les règles IPv6 actuelles ? NON
Les tables sont enregistrés sous /etc/iptables/ , rules.v4 pour IPv4 et rules.v6 pour IPv6
Sauvegarde/Restauration manuelle des régles iptables
iptables-save > /etc/iptables/rules.v4
iptables-restore < /etc/iptables/rules.v4

Relancer hostapd
sudo systemctl restart hostapd Relancer dnsmasq
sudo systemctl restart dnsmasq

Accès internet via SSID “YanProtonVPN” et mot de passe

ProtonVPN

Utiliser le hotspot YanProtonVPN pour se connecter sur internet via un VPN
Installer openvpn
sudo apt install openvpn
Télécharger le fichier Secure ProtonVPN “se-fr-01.protonvpn.com.udp1194.ovpn”
Tester la configuration
cd ~
sudo openvpn se-fr-01.protonvpn.com.udp1194.ovpn
Entrer Username et Password ,au terme de l’initialisation, si tout est ok , le message suivant est affiché
Tue Dec 26 20:01:44 2017 Initialization Sequence Completed

Démarrage automatique de la configuration VPN
sudo mv se-fr-01.protonvpn.com.udp1194.ovpn /etc/openvpn/frProtonVpnSecure.conf
Création d’une seconde configuration nommée frProtonVpnSecure.conf
La différence entre les 2 configurations

frProtonVpnSecure.conf ukProtonVpnSecure.conf
remote 185.159.156.15 1194 remote 185.159.157.12 1194
remote 185.159.156.16 1194 remote 185.159.157.15 1194

TRES IMPORTANT : Un seul fichier conf sous /etc/openvpn/
renommer extension .conf en .ovpn pour celui qui n’est pas utilisé

Le fichier contenant log et mot de passe sur 2 lignes
sudo mv protonvpn /etc/openvpn/client/
Modifier la configuration pour la prise en charge log et mot de passe
sudo nano /etc/openvpn/frProtonVpnSecure.conf
Ajouter la ligne suivante en fin de fichier
auth-user-pass protonvpn
On peut tester que tout fonctionne avec systemd : sudo systemctl start openvpn@frProtonVpnSecure
Statut
déc. 26 20:36:37 cubieboard ovpn-frProtonVpnSecure[7406]: Initialization Sequence Completed
Vérification du tunnel VPN
ip addr

1
2
3
4
5
6
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 10.8.8.67/24 brd 10.8.8.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::1ece:f513:d9d5:29c0/64 scope link flags 800
       valid_lft forever preferred_lft forever

si tun0 est bien dans la liste, paramétrer le démarrage automatique de la configuration vpn (boot startup)
sudo systemctl enable openvpn@frProtonVpnSecure
Les règles NAT
sudo -s

1
2
3
4
5
6
7
8
9
10
11
12
# RAZ tables
iptables -t filter -F
iptables -t nat -F
iptables -t filter -X 
iptables -t nat -X
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT
# HotSpot Wifi VPN
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE -m comment --comment "Activer MASQUERADE sur tunnel vpn tun0"
iptables -A FORWARD -i tun0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT -m comment --comment "Accepter les connexions etablies"
iptables -A FORWARD -i wlan0 -o tun0 -j ACCEPT -m comment --comment "Accepter les nouvelles connexions venant interface wlan0"

Sauvegarder les règles
sudo iptables-save > /etc/iptables/rules.v4
L’accès internet se fera à travers le tunnel protonVPN

NOTE : Pour désactiver openvpn
sudo systemctl disable openvpn@frProtonVpnSecure
sudo systemctl disable openvpn

Point d’accès Multiple

https://static.cinay.pw/vpn/2017/12/29/Multiple-Point-Acces-Wifi-et-OpenVPN.html

Adresse Mac

Adresse mac : 00:0f:00:3b:2e:31
Modifiée : 02:0f:00:3b:2e:30

Interfaces

Modification des interfaces wifi /etc/network/interfaces

1
2
3
4
5
6
7
8
9
10
11
12
# interface wifi
allow-hotplug wlan0  
iface wlan0 inet static  
    address 10.6.0.1
    netmask 255.255.255.0
    pre-up ip link set dev wlan0 address 02:0f:00:3b:2e:30

# interface wifi wirtuelle
allow-hotplug wlan0_0  
iface wlan0_0 inet static  
    address 10.6.1.1
    netmask 255.255.255.0

HostApd

Modification /etc/hostapd/hostapd.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
interface=wlan0
driver=nl80211
ssid=YanCubieOne
hw_mode=g
channel=5
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
bssid=02:0f:00:3b:2e:30
wpa=2
wpa_passphrase=passphrase_YanCubieOne
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
# Réseau Two    
bss=wlan0_0
ssid=YanCubieTwo
wpa=2
wpa_passphrase=passphrase_YanCubieTwo
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

DnsMasq

Modification /etc/dnsmasq.conf

1
2
3
4
5
6
7
no-resolv
interface=wlan0
interface=wlan0_0
dhcp-range=10.6.0.3,10.6.0.20,12h
dhcp-range=10.6.1.3,10.6.1.20,12h
server=208.67.222.222 # OpenDNS
server=208.67.222.220
Cet article est sous licence CC BY 4.0 par l'auteur.