OpenWrt: comment donner aux clients wlan @ 10.x un accès Internet via une passerelle @ 192.168.1.254

3

Je souhaite isoler les invités se connectant à mon réseau Wi-Fi au sous-réseau 10.0.0.x tout en leur offrant un accès Internet. Le routeur OpenWrt est à 192.168.1.48 (l'interface "wifi" a 10.0.0.1) et ma passerelle est à 192.168.1.254. Comment pourrais-je configurer OpenWrt de sorte que les invités accèdent à Internet via ma passerelle tout en restant confinés au sous-réseau 10.?

J'ai lu la recette guest-wlan sur le wiki OpenWrt, mais je ne vois pas comment faire ce que je veux faire. Jusqu'à présent, j'ai réussi à configurer un serveur DHCP pour les invités qui donne les adresses 10.x.

J'ai également remarqué que je pouvais résoudre les noms d'hôte à partir d'un ordinateur portable du réseau 10.x. D'après les journaux Dnsmasq, je sais qu'il sait qu'il existe un serveur de noms à l'adresse 192.168.1.254 (car il semble dans /etc/resolv.conf, je suppose). Mais comment et pourquoi les paquets traversent-ils le pare-feu?

J'utilise Backfire 10.03.1 sur un WRT54GL. La passerelle est un Linksys E4200. Voici ma configuration OpenWrt pour le moment:

/ etc / config / dhcp

config 'dnsmasq'
        option 'domainneeded' '1'
        option 'boguspriv' '1'
        option 'filterwin2k' '0'
        option 'localise_queries' '1'
        option 'rebind_protection' '1'
        option 'rebind_localhost' '1'
        option 'local' '/lan/'
        option 'domain' 'lan'
        option 'expandhosts' '1'
        option 'nonegcache' '0'
        option 'authoritative' '1'
        option 'readethers' '1'
        option 'leasefile' '/tmp/dhcp.leases'
        option 'resolvfile' '/tmp/resolv.conf.auto'

config 'dhcp' 'lan'
        option 'interface' 'lan'
        option 'ignore' '1'

config 'dhcp' 'wan'
        option 'interface' 'wan'
        option 'ignore' '1'

config 'dhcp'
        option 'start' '100'
        option 'leasetime' '12h'
        option 'limit' '150'
        option 'interface' 'wifi'

/ etc / config / network

config 'interface' 'loopback'
        option 'ifname' 'lo'
        option 'proto' 'static'
        option 'ipaddr' '127.0.0.1'
        option 'netmask' '255.0.0.0'

config 'interface' 'lan'
        option 'ifname' 'eth0.0'
        option 'proto' 'static'
        option 'netmask' '255.255.255.0'
        option 'ipaddr' '192.168.1.48'
        option 'gateway' '192.168.1.254'
        option 'dns' '192.168.1.254'

config 'interface' 'wan'
        option 'ifname' 'eth0.1'
        option 'proto' 'dhcp'

config 'interface' 'wifi'
        option 'proto' 'static'
        option 'ipaddr' '10.0.0.1'
        option 'netmask' '255.255.255.0'

/ etc / config / wireless

config 'wifi-device' 'wl0'
        option 'type' 'broadcom'
        option 'channel' '11'

config 'wifi-iface'
        option 'device' 'wl0'
        option 'mode' 'ap'
        option 'ssid' 'OpenWrt'
        option 'encryption' 'none'
        option 'network' 'wifi'

/ etc / config / firewall (ne l’a pas changé par défaut)

config defaults
        option syn_flood        1
        option input            ACCEPT
        option output           ACCEPT
        option forward          REJECT
# Uncomment this line to disable ipv6 rules
#       option disable_ipv6     1

config zone
        option name             lan
        option network          'lan'
        option input            ACCEPT
        option output           ACCEPT
        option forward          REJECT

config zone
        option name             wan
        option network          'wan'
        option input            REJECT
        option output           ACCEPT
        option forward          REJECT
        option masq             1
        option mtu_fix          1

config forwarding
        option src              lan
        option dest             wan

# We need to accept udp packets on port 68,
# see https://dev.openwrt.org/ticket/4108
config rule
        option name             Allow-DHCP-Renew
        option src              wan
        option proto            udp
        option dest_port        68
        option target           ACCEPT
        option family           ipv4

# Allow IPv4 ping
config rule
        option name             Allow-Ping
        option src              wan
        option proto            icmp
        option icmp_type        echo-request
        option family           ipv4
        option target           ACCEPT

# Allow DHCPv6 replies
# see https://dev.openwrt.org/ticket/10381
config rule
        option name             Allow-DHCPv6
        option src              wan
        option proto            udp
        option src_ip           fe80::/10
        option src_port         547
        option dest_ip          fe80::/10
        option dest_port        546
        option family           ipv6
        option target           ACCEPT

# Allow essential incoming IPv6 ICMP traffic
config rule
        option name             Allow-ICMPv6-Input
        option src              wan
        option proto    icmp
        list icmp_type          echo-request
        list icmp_type          destination-unreachable
        list icmp_type          packet-too-big
        list icmp_type          time-exceeded
        list icmp_type          bad-header
        list icmp_type          unknown-header-type
        list icmp_type          router-solicitation
        list icmp_type          neighbour-solicitation
        option limit            1000/sec
        option family           ipv6
        option target           ACCEPT

# Allow essential forwarded IPv6 ICMP traffic
config rule
        option name             Allow-ICMPv6-Forward
        option src              wan
        option dest             *
        option proto            icmp
        list icmp_type          echo-request
        list icmp_type          destination-unreachable
        list icmp_type          packet-too-big
        list icmp_type          time-exceeded
        list icmp_type          bad-header
        list icmp_type          unknown-header-type
        option limit            1000/sec
        option family           ipv6
        option target           ACCEPT

# include a file with users custom iptables rules
config include
        option path /etc/firewall.user


### EXAMPLE CONFIG SECTIONS
# do not allow a specific ip to access wan
#config rule
#       option src              lan
#       option src_ip   192.168.45.2
#       option dest             wan
#       option proto    tcp
#       option target   REJECT

# block a specific mac on wan
#config rule
#       option dest             wan
#       option src_mac  00:11:22:33:44:66
#       option target   REJECT

# block incoming ICMP traffic on a zone
#config rule
#       option src              lan
#       option proto    ICMP
#       option target   DROP

# port redirect port coming in on wan to lan
#config redirect
#       option src                      wan
#       option src_dport        80
#       option dest                     lan
#       option dest_ip          192.168.16.235
#       option dest_port        80
#       option proto            tcp


### FULL CONFIG SECTIONS
#config rule
#       option src              lan
#       option src_ip   192.168.45.2
#       option src_mac  00:11:22:33:44:55
#       option src_port 80
#       option dest             wan
#       option dest_ip  194.25.2.129
#       option dest_port        120
#       option proto    tcp
#       option target   REJECT

#config redirect
#       option src              lan
#       option src_ip   192.168.45.2
#       option src_mac  00:11:22:33:44:55
#       option src_port         1024
#       option src_dport        80
#       option dest_ip  194.25.2.129
#       option dest_port        120
#       option proto    tcp

Je me rends compte qu’il s’agit plus d’une question réseau générale que d’une question OpenWrt, mais j’ai pensé que je devrais mentionner OpenWrt. J'ai la moindre idée que faire ce travail implique de la magie noire iptables, mais je ne peux pas comprendre les incantations correctes, alors je voulais demander de l'aide.

Merci d'avance!

Pete
la source

Réponses:

3

Avait la situation exacte comme vous, sauf pour la passerelle (Cisco RV042G). Cependant, ma solution ne fonctionnera probablement pas sur le E4200 en raison de fonctionnalités manquantes. Si cela est possible en utilisant d'autres méthodes, alors cela dépasse mes connaissances. J'ajoute la réponse aux autres qui pourraient rechercher une solution comme celle-ci.

Supposons que 10.0.0.0/24 soit votre réseau principal avec l'adresse de passerelle 10.0.0.1 et 10.0.1.0/24 le réseau invité. Étapes à suivre pour reproduire ma solution:

  • Créez un sous-réseau différent pour les invités sur la passerelle. La passerelle doit prendre en charge cette fonctionnalité car elle crée plusieurs tables NAT pour acheminer le trafic Internet vers le sous-réseau approprié.
  • Ajoutez une règle de pare-feu pour bloquer tout le trafic de 10.0.1.0/24 à 10.0.0.0/24 sur la passerelle.
  • Utilisez une version OpenWrt avec le noyau 2.6+. Les versions de brcm-2.4 ne seront pas dues au manque de support ebtables. J'ai utilisé une version 12.06 avec une configuration basée sur la configuration par défaut de brcm47xx. Avec l'image par défaut, opkg ne fonctionne pas alors que je n'ai pas essayé la version 10.03. Je recommande Debian 7 i386 à la racine car il a perdu assez d'heures de ma vie avec amd64 et diverses erreurs de compilation aléatoires. Vous pouvez utiliser ImageBuilder, je pense, mais je ne l'ai pas essayé. Pour ebtables, vous avez besoin des packages suivants: ebtables, ebtables-utils, kmod-ebtables-ipv4. Le module du noyau n'est pas automatiquement ajouté comme dépendance , donc sois prudent.
  • Ces règles ebtables ci-dessous dans /etc/firewall.user permettent de bloquer la diffusion DHCP à partir de la passerelle, si celle-ci ne prend pas en charge plusieurs pools DHCP. RV042G n'a pas. Les a trouvés sur les forums OpenWrt, adaptés pour 12.06 qui utilise eth0.0 comme nom d’interface pour le VLAN LAN.

ebtables -F

ebtables -A INPUT --in-interface eth0.0 - protocole IPv4 --ip-protocole udp --ip-source-port 67:68 -j DROP

ebtables -A INPUT --in-interface eth0.0 - protocole IPv4 --ip-protocole udp --ip-destination-port 67:68 -j DROP

ebtables -A FORWARD --in-interface eth0.0 - protocole IPv4 --ip-protocole udp --ip-destination-port 67:68 -j DROP

ebtables -A FORWARD --in-interface eth0.0 - protocole IPv4 --ip-protocole udp --ip-source-port 67:68 -j DROP

  • Facultatif: configurez l'interface réseau pour le sous-réseau secondaire. Vous devez modifier l'adresse si la passerelle et le PA OpenWrt utilisent les valeurs par défaut (192.168.1.1).

interface de configuration LAN

pont de type option

option ifname "eth0.0"

option proto statique

option ipaddr 10.0.1.2

option masque de réseau 255.255.255.0

passerelle option 10.0.1.1

option dns "8.8.8.8 8.8.4.4"

  • Indiquez au serveur DHCP quelle passerelle diffuser, comme il le ferait normalement avec ipaddr à partir de la configuration de l'interface LAN:

config dhcp lan

option interface lan

option début 100

limite d'option 100

option durée 1h

liste 'dhcp_option' '3,10.0.1.1'

  • Configurez le sans fil en tant que point d’accès normal. Facultatif: chiffrement (recommandé), isolement du client (également recommandé).

J'ai rencontré un seul problème avec cette configuration: un invité peut toujours entrer dans votre réseau principal si le sous-réseau de ce réseau est "deviné" et si la configuration du réseau est effectuée manuellement pour l'interface sans fil. Étant donné que les invités voient toujours les émissions ARP du réseau principal, ce n'est pas si difficile pour les personnes qui comprennent la déclaration précédente. Je pense que cela peut être corrigé avec certaines règles de pare-feu sur l’AP OpenWrt, mais je dois étudier cette partie.

SaltwaterC
la source
Je pense que cela peut également être fait avec le double NAT. J'ai essayé cela il y a un moment avec deux appareils OpenWrt: wiki.openwrt.org/doc/recipes/routedclient - Même idée, sauf que l’on utilise une adresse LAN principale comme adresse WAN pour le réseau invité, une connexion câblée au lieu d’une liaison WiFi et le blocage de tout le trafic sur le point d’invité, à l’exception du trafic qui passe par la passerelle et provient de celle-ci. Devrait résoudre le problème de configuration d'adresse manuelle. Je vais l'essayer et revenir avec une autre réponse.
SaltwaterC