-
Notifications
You must be signed in to change notification settings - Fork 1
Réseau invité `guest`
L'objectif de la procédure est de créer un nouveau réseau pour nos visiteurs nommé guest
via un VLAN afin d'offrir l'internet à nos visiteurs à la maison tout en limitant les risques de sécurité, virus, partage involontaire de données et surtout avec une limitation de bande passante (pratique avec les amis de nos enfants!). Les grandes lignes sont:
- Création d’un nouveau VLAN pour un réseau
guest
(visiteurs) ayant accès à l’internet mais à aucun autre périphérique du réseau interne. - Création d'un nouveau réseau WIFI offert en 2.4Ghz et 5Ghz à partir du point d'accès (AP)
- Empêcher les périphériques WIFI de se voir mutuellement (option
isolate=1
) - Limitation de la bande passante via
sqm
etbandwidthd
pour ce VLAN en débit et quantité
Personnellement je trouve plus aisé d'utiliser une plage IP complètement différente pour chacun de mes sous réseaux. Il est alors facile de confirmer le réseau sous-jascent des périphériques lorsque l'on en valide la connexion. J'utilise donc:
-
192.168.80.0/24
pour mon réseau localLAN
-
10.10.80.0/24
pour mon réseau invitéguest
Références:
- https://wiki.openwrt.org/doc/recipes/guest-wlan
- https://wiki.openwrt.org/doc/recipes/guest-wlan-webinterface
Détails:
- Le routeur principal utilise l'adresse statique
10.10.80.1
Dans mon cas j'utilise le modèle TP-Link WDR4300 à titre de routeur principal et il ne possède qu'un seul interface:eth0
-
CPU (eth0)
: est réservé à la fois pour le port identifiéWAN
ainsi queLAN1
,LAN2
,LAN3
,LAN4
- Le réseau invité
guest
sera établi sur l'interfaceeth0
et le VLAN ID 3 :eth0.3
- Le réseau invité
guest
sera aussi rendu disponible sur le Port 2 (LAN1
) qui reliera le routeur principal à notre point d'accès (AP)
Port 0 | Port 1 | Port 2 | Port 3 | Port 4 | Port 5 | |||
---|---|---|---|---|---|---|---|---|
Réseau | VLAN ID | @switch_vlan[*] |
CPU | WAN | LAN1 | LAN2 | LAN3 | LAN4 |
LAN | 1 | 0 | tagged | off | untagged | untagged | untagged | untagged |
WAN | 2 | 1 | tagged | tagged | off | off | off | off |
WAN6 | 2 | 1 | tagged | tagged | off | off | off | off |
guest | 3 | 2 (nouveau) | tagged | off | tagged | off | off | off |
TRUNK |
État actuel des ports associés au LAN
- VLAN ID 1 (@switch_vlan[0]
):
root@th0ma7-router:~# uci show network.@switch_vlan[0]
network.cfg071ec7=switch_vlan
network.cfg071ec7.device='switch0'
network.cfg071ec7.vlan='1'
network.cfg071ec7.ports='2 3 4 5 0t'
État actuel ports associés aux réseaux WAN
et WAN6
- VLAN ID 2 (@switch_vlan[1]
):
root@th0ma7-router:~# uci show network.@switch_vlan[1]
network.cfg081ec7=switch_vlan
network.cfg081ec7.device='switch0'
network.cfg081ec7.vlan='2'
network.cfg081ec7.ports='1 0t'
Créer les interfaces:
uci delete network.guest
uci set network.guest=interface
uci set network.guest.proto=static
uci set network.guest.ifname='eth0.3'
uci set network.guest.type='bridge'
uci set network.guest.ipaddr=10.10.80.1
uci set network.guest.netmask=255.255.255.0
uci set network.guest.broadcast='10.10.80.255'
uci set network.guest.ip6assign='64'
uci changes network.guest
uci commit
Créer le nouveau VLAN et l'assigner à aucun port physique pour le moment (mis à part le port 0 représentant le CPU logique et non pas un port physique à proprement parler)
uci add network switch_vlan
uci set network.@switch_vlan[-1].device='switch0'
uci set network.@switch_vlan[-1].vlan='3'
uci set network.@switch_vlan[-1].ports='2t 0t'
uci show network.@switch_vlan[-1]
uci changes network
uci commit
Redémarrer le service réseau:
root@openwrt:~# /etc/init.d/network restart
root@openwrt~# brctl show
bridge name bridge id STP enabled interfaces
br-lan 7fff.647002e29b98 no eth0.1
br-guest 7fff.647002e29b98 no eth0.3
root@poenwrt:~# ip add show br-guest
19: br-guest: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 64:70:02:e2:9b:98 brd ff:ff:ff:ff:ff:ff
inet 10.10.80.1/24 brd 10.10.80.255 scope global br-guest
valid_lft forever preferred_lft forever
inet6 fd44:70b7:27d7:10::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::6670:2ff:fee2:9b98/64 scope link
valid_lft forever preferred_lft forever
On y configure un service de DHCP:
- Début de la plage DHCP à 20, fin à 29, 10 adresses max
(limit='10')
- Durée limitée du bail à 1h
-
OPTIONNEL: Force l'adresse du routeur à titre de DNS principal
(dhcp_option='3,10.10.80.1')
-
OPTIONNEL: Ajout des DNS google à titre de DNS secondaires et tertiaires
(dhcp_option='3,10.10.80.1 6,10.10.80.1,8.8.8.8,8.8.4.4')
uci delete dhcp.guest
uci set dhcp.guest=dhcp
uci set dhcp.guest.interface=guest
uci set dhcp.guest.start=20
uci set dhcp.guest.limit=10
uci set dhcp.guest.leasetime=1h
uci set dhcp.guest.dhcpv6='server'
uci set dhcp.guest.ra='server'
uci changes dhcp.guest
uci commit
OPTIONNEL: Forcer la passerelle et faire pointer la résolution DNS des clients vers google (ou autre):
uci set dhcp.guest.dhcp_option='3,10.10.80.1'
uci add_list dhcp.guest.dhcp_option='6,10.10.80.1,8.8.8.8,8.8.4.4'
uci changes dhcp.guest
uci commit
Redémarrer le service DHCP:
root@openwrt:~# /etc/init.d/dnsmasq restart
Créer une zone guest:
uci add firewall zone
uci set firewall.@zone[-1].name=guest
uci set firewall.@zone[-1].network=guest
uci set firewall.@zone[-1].input=REJECT
uci set firewall.@zone[-1].forward=REJECT
uci set firewall.@zone[-1].output=ACCEPT
Autoriser l’accès à l’internet:
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='guest'
uci set firewall.@forwarding[-1].dest='wan'
Autoriser les requêtes DNS:
uci add firewall rule
uci set firewall.@rule[-1].name='Allow DNS Queries From GUEST'
uci set firewall.@rule[-1].src=guest
uci set firewall.@rule[-1].dest_port=53
uci set firewall.@rule[-1].proto=udp
uci set firewall.@rule[-1].target=ACCEPT
Autoriser les requêtes DHCP afin d'obtenir une adresse IP sur le réseau guest:
uci add firewall rule
uci set firewall.@rule[-1].name='Allow DHCP Requests From GUEST'
uci set firewall.@rule[-1].src=guest
uci set firewall.@rule[-1].src_port=68
uci set firewall.@rule[-1].dest_port=67
uci set firewall.@rule[-1].proto=udp
uci set firewall.@rule[-1].target=ACCEPT
Permettre au réseau LAN
d'accéder au réseau guest
(mais par l'inverse!):
uci add firewall forwarding
uci set firewall.@forwarding[-1].src='lan'
uci set firewall.@forwarding[-1].dest='guest'
Appliquer les changements:
root@openwrt:~# uci changes firewall
root@openwrt:~# uci commit firewall
root@openwrt:~# /etc/init.d/firewall restart
Références:
- https://www.bufferbloat.net/projects/cerowrt/wiki/Wondershaper_Must_Die/
- https://www.techrapid.co.uk/openwrt/traffic-shaping-on-openwrt-with-wshaper-on-luci
Installer Smart Queue Management:
root@openwrt:~# opkg update
root@openwrt:~# opkg install luci-app-sqm
Retirer la configuration par défaut:
uci del sqm.eth1
Allouer 15 mbit en amont (sqm.upload
), 2.5 mbit en aval (sqm.download
):
uci add sqm queue
uci set sqm.@queue[-1].qdisc_advanced='0'
uci set sqm.@queue[-1].linklayer='none'
uci set sqm.@queue[-1].enabled='1'
uci set sqm.@queue[-1].interface='br-guest'
uci set sqm.@queue[-1].qdisc='fq_codel'
uci set sqm.@queue[-1].script='simplest_tbf.qos'
uci set sqm.@queue[-1].upload='15000'
uci set sqm.@queue[-1].download='2500'
Appliquer les changements
uci changes sqm
uci commit
Activer et redémarrer le service SQM:
root@openwrt:~# /etc/init.d/sqm enable
root@openwrt:~# /etc/init.d/sqm restart
SQM: Starting SQM script: simplest_tbf.qos on br-guest, in: 2500 Kbps, out: 15000 Kbps
SQM: Using generic sqm_start_default function.
SQM: get_burst (by duration): the calculated burst/quantum size of 312 bytes was below the minimum of 1749 bytes.
SQM: simplest_tbf.qos was started on br-guest successfully
Dans mon cas j'utilise le modèle TP-Link Archer C2600 à titre de point d'accès et il possède deux interfaces: eth0
et eth1
:
- Le routeur principal utilise l'adresse statique
10.10.80.1
- Le point d'accès n'a pas d'adresse sur le réseau
10.10.80.0/24
-
CPU (eth0)
: est réservé pour le port identifiéWAN
-
CPU (eth1)
: est réservé pour les ports identifiésLAN1
,LAN2
,LAN3
,LAN4
- Le réseau invité
guest
sera établi sur l'interfaceeth1
et le VLAN ID 3 :eth1.3
- Le réseau invité
guest
sera rendu disponible sur le Port 4 (LAN1
) qui reliera notre point d'accès (AP) au routeur principal - Le réseau invité
guest
sera rendu disponible en mode exclusif sur le Port 1 (LAN4
) permettant de tester la connectivité avec un câble réseau
Port 0 |
Port 6 |
Port 4 |
Port 3 |
Port 2 |
Port 1 |
Port 5 |
|||
---|---|---|---|---|---|---|---|---|---|
Réseau | VLAN ID | @switch_vlan[*] |
CPU (eth0 ) |
CPU (eth1 ) |
LAN1 | LAN2 | LAN3 | LAN4 | WAN |
LAN | 1 | 0 | off | untagged | off | untagged | untagged | untagged | off |
WAN | 2 | 1 | untagged | off | off | off | off | off | untagged |
WAN6 | 2 | 1 | untagged | off | off | off | off | off | untagged |
guest | 3 | 2 (nouveau) | off | tagged | untagged | off | off | tagged | off |
TRUNK |
État actuel des ports associés au LAN
- VLAN ID 1 (@switch_vlan[0]
):
root@th0ma7-wifi:~# uci show network.@switch_vlan[0]
network.cfg071ec7=switch_vlan
network.cfg071ec7.device='switch0'
network.cfg071ec7.vlan='1'
network.cfg071ec7.ports='1 2 3 4 6'
État actuel ports associés aux réseaux WAN
et WAN6
- VLAN ID 2 (@switch_vlan[1]
):
root@th0ma7-wifi:~# uci show network.@switch_vlan[1]
network.cfg081ec7=switch_vlan
network.cfg081ec7.device='switch0'
network.cfg081ec7.vlan='2'
network.cfg081ec7.ports='5 0'
Créer un interface guest
non-géré:
uci delete network.guest
uci set network.guest=interface
uci set network.guest.proto='none'
uci set network.guest.type='bridge'
uci set network.guest.ifname='eth1.3'
uci changes network.guest
uci commit
Désactiver l'accès au réseau local du Port 4 (LAN1
):
uci set network.@switch_vlan[0].ports='1 2 3 6'
uci changes network
uci commit
Redémarrer le réseau:
IMPORTANT: Suivant cette étape la communication avec le routeur principal devrait être encore fonctionnelle:
root@openwrt:~# /etc/init.d/network restart
Créer le nouveau VLAN et l'assigner aux ports:
- Port 0 (
CPU eth1
,6t
) représentant le CPU logique de l'interface réseau associé àeth1
. - Port 1 avec étiquettage VLAN (
LAN4
,1t
) - Port 4 sans étiquettage VLAN (
LAN1
,4
)
uci add network switch_vlan
uci set network.@switch_vlan[-1].device='switch0'
uci set network.@switch_vlan[-1].vlan='3'
uci set network.@switch_vlan[-1].ports='1t 4 6t'
uci show network.@switch_vlan[-1]
uci changes network
uci commit
Redémarrer le réseau:
root@openwrt:~# /etc/init.d/network restart
je rends par défaut disponible le réseau guest
en 5Ghz (radio0
) ainsi qu'en 2.4Ghz (radio1
) avec les caractéristiques suivantes:
- Utilise le même SSID que LAN avec l'ajout de
-guest
- Utilise à titre de mot de passe quelque chose de simple pour tous tel qu'un code postal, numéro de téléphone, adresse (facile pour tous de s'en souvenir!)
- Empêche les périphériques connectés de se voir mutuellement (
isolate=1
)
uci add wireless wifi-iface
uci set wireless.@wifi-iface[-1].device=radio0
uci set wireless.@wifi-iface[-1].mode=ap
uci set wireless.@wifi-iface[-1].network=guest
uci set wireless.@wifi-iface[-1].encryption=psk2
uci set wireless.@wifi-iface[-1].isolate=1
uci set wireless.@wifi-iface[-1].ssid=<SSID>-guest
uci set wireless.@wifi-iface[-1].key='<#PHONE>'
uci add wireless wifi-iface
uci set wireless.@wifi-iface[-1].device=radio1
uci set wireless.@wifi-iface[-1].mode=ap
uci set wireless.@wifi-iface[-1].network=guest
uci set wireless.@wifi-iface[-1].encryption=psk2
uci set wireless.@wifi-iface[-1].isolate=1
uci set wireless.@wifi-iface[-1].ssid=<SSID>-guest
uci set wireless.@wifi-iface[-1].key='<#PHONE>'
uci changes wireless
uci commit wireless
On redémarre le réseau sans-fil:
root@openwrt:~# wifi reload
root@openwrt~# brctl show
bridge name bridge id STP enabled interfaces
br-lan 7fff.ec086b6a415c no eth1
wlan1
wlan0
br-guest 7fff.ec086b6a415c no eth1.3
wlan0-1
wlan1-1
root@poenwrt:~# ip add show br-guest
49: br-guest: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether ec:08:6b:6a:41:5c brd ff:ff:ff:ff:ff:ff
inet6 fe80::ee08:6bff:fe6a:415c/64 scope link
valid_lft forever preferred_lft forever