Comment utiliser les règles NAT iptables pour hostapd

8

Mon PC est équipé de deux interfaces réseau - wlan0 et eth0. Je veux utiliser le port WiFi comme point d'accès sur wlan0. Donc, j'utilise l'utilitaire hostapd et cela fonctionne correctement en mode de routage sur le réseau local. Les utilisateurs peuvent se connecter à ce point d'accès créé et DHCP fonctionne correctement dans les deux segments. Le PC avec hostapd ne possède pas de pare-feu et / ou de règles iptables (iptables et pare-feu désactivés). Je veux utiliser uniquement le pare-feu intégré au routeur ADSL.

Ma configuration Internet est la suivante

...... PC avec hostapd ................. connexion par câble .................. routeur ADSL

..... wlan0 .............. eth0 ..... <----------------------- -------> ........... 192.168.0.1 ...................... <---> internet 192.168.10.1 ... 192.168.0.7 .............................. ajouté le routage statique à 192.168.10.X

ifconfig sur PC:

eth0      Link encap:Ethernet  HWaddr 00:12:3F:F2:31:65  
       inet addr:192.168.0.7  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::212:3fff:fef2:3165/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2169539 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1008097 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:3056198487 (2.8 GiB)  TX bytes:72727161 (69.3 MiB)
      Interrupt:16 

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      inet6 addr: ::1/128 Scope:Host
      UP LOOPBACK RUNNING  MTU:65536  Metric:1
      RX packets:3398 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3398 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:495444 (483.8 KiB)  TX bytes:495444 (483.8 KiB)

mon.wlan0 Link encap:UNSPEC  HWaddr 00-14-A5-04-94-3C-90-F0-00-00-00-00-00-00-00-00  
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:151 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:17092 (16.6 KiB)  TX bytes:0 (0.0 b)

wlan0     Link encap:Ethernet  HWaddr 00:14:A5:04:94:3C  
      inet addr:192.168.10.1  Bcast:192.168.10.255  Mask:255.255.255.0
      inet6 addr: fe80::214:a5ff:fe04:943c/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:1502 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 b)  TX bytes:279392 (272.8 KiB)

Je suis totalement noob dans iptables. Alors, quelqu'un peut-il m'aider à configurer la configuration iptables NAT simple sur PC? Je veux que tous les utilisateurs connectés au réseau via hostapd (réseau 192.168.10.X) aient accès à Internet? Je ne veux pas filtrer le trafic, juste le NAT.


OK MERCI. Mais je ne parviens pas à me connecter à Internet à partir du segment WiFi. Le client connecté au WiFi a l'adresse 192.168.10.48 (via DHCP). Le trafic que je peux remarquer sur le port eth0 depuis cette adresse est

16:50:14.671587 ARP, Request who-has 192.168.0.48 tell 192.168.0.1, length 46

Avis - l'adresse est 192.168.0.48 et non 192.168.10.48. Donc, la mascarade semble fonctionner.

Eaven je ne peux pas cingler à 192.168.0.1 - le port du routeur ADSL. C'était possible avant.

Et qu'en est-il de l'accès Internet aux utilisateurs du WIFI? Bien sûr, je vais configurer un routeur ADSL, en transférant un pool de ports IP particulier d’Internet vers une adresse IP particulière de cet utilisateur WiFi.

MODIFIER

systemstl montre que iptables est:

iptables.service          loaded active exited

Mais bien sûr, je cours:

systemctl enable iptables.service
systemctl start iptables.service

MODIFIER

Travaux! Mais je dois ajouter manuellement chaque fois que je démarre l'ordinateur (à partir du script de démarrage):

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Est-ce une situation normale?

mackowiakp
la source
Voir ma réponse mise à jour ci-dessous ...
MLu

Réponses:

6

Dans la forme la plus simple:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Cela permettra à tous les utilisateurs WiFi d'accéder à Internet.

Bien sûr, en supposant que votre autre configuration de routage soit déjà faite, à savoir:

  1. Transfert activé dans le noyau

    sysctl net.ipv4.ip_forward=1
    
  2. Renvoi activé dans iptables:

    iptables -P FORWARD ACCEPT
    iptables -F FORWARD
    

Utilisez cette option tcpdump -nn -i eth0pour surveiller le trafic eth0en cas de problème, pour voir s’il reçoit correctement le NAT, si la réponse revient, etc.

EDIT: "Je dois ajouter manuellement à chaque démarrage de l'ordinateur (à partir du script de démarrage) ..." Cela dépend de la distribution Linux que vous avez. Malheureusement, chaque distribution a son propre outil de pare-feu. En fin de compte, elle ne fait qu'appeler iptablesles auteurs, mais pour une raison quelconque, les auteurs croient qu'il est préférable de masquer le fonctionnement d'iptables.

Pour répondre à votre question, il est probable que votre pare-feu puisse être configuré pour ajouter cette règle NAT automatiquement. La méthode exacte varie toutefois entre les distributions Linux sans raison valable. Triste mais vrai.

MLu
la source
Tous les pare-feu sur PC sont désactivés. Le seul service en cours d'exécution est iptables
mackowiakp le
Pare-feu iptables == - Vous devez configurer iptables pour qu'il émette cette règle MASQUERADE. Comment? Cela dépend de votre distribution Linux. Il doit y avoir un fichier de configuration quelque part. Où? Cela dépend de votre distribution Linux.
MLu
Vous avez donc jugé iptables:
mackowiakp le
Donc, vous avez décidé: [root @ media ~] # iptables -L Chaîne INPUT (stratégie ACCEPT) destination cible opt-pro Chaîne FORWARD (stratégie ACCEPT) destination cible opt-source Chaîne OUTPUT (stratégie ACCEPT) destination cible source opt-prot . Et moi et telle ligne au démarrage: iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE. Donc, mon implémentation d'iptables est de facto un pare-feu "transparent" - ou pas de pare-feu
mackowiakp le
5

J'ai écrit un pare-feu pour toutes les occasions. Veuillez lire le fichier README et le SCRIPT avant de l’utiliser. J'ai inclus les règles nécessaires pour HOSTAP

Pièces essentielles:

HostAP

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT

HostAP nécessite que les lignes ci-dessous soient toutes deux ACCEPT pour fonctionner

iptables -A INPUT -j ACCEPT >> /dev/null 2>&1 
iptables -A OUTPUT -j ACCEPT >> /dev/null 2>&1

https://github.com/diveyez/fw.sh

Ricky Neff
la source