web-dev-qa-db-fra.com

Plusieurs cartes réseau, plusieurs sous-réseaux et plusieurs passerelles

Il est temps de demander aux pros, car j'ai lu toutes les questions auxquelles j'ai répondu, j'ai essayé de nombreuses suggestions de questions connexes sur les forums et je n'arrive pas à comprendre cela.

Question: Comment permettre aux utilisateurs de "wlan0" de se connecter à Internet sur "eth0"?

Le système a trois cartes nic. Deux "wlan0" et "wlan1" sans fil et un LAN "eth0". L'objectif final est que "wlan1" fasse partie d'un réseau maillé qui a un nœud quelque part connecté à Internet, "wlan0" pour héberger les utilisateurs locaux et eth0 soit un canal câblé optionnel également vers Internet. Chaque interface doit avoir son propre sous-réseau. Par souci de simplicité, laissons la partie maillée sur "wlan1" pour l'instant, et concentrons-nous uniquement sur la communication entre deux sous-réseaux "wlan0" et "eth0".

Tel qu'il est aujourd'hui. La balise ssid diffuse comme prévu, la clé de passe est demandée aux utilisateurs, DHCP attribue une adresse IP dans la plage attendue, mais il n'y a pas de connexion Internet.

Voici tous les fichiers de configuration que j'ai touchés.

/ etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# Wired LAN
allow-hotplug eth0
iface eth0 inet dhcp

# Wireless Users
allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.2.100
    netmask 255.255.255.0
    gateway 192.168.2.254

/ etc/default/hostapd:

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

/ etc/hostapd/hostapd.conf:

interface=wlan0
driver=nl80211
country_code=US
ssid=YYYYYYYY
hw_mode=g
channel=6
wpa=2
wpa_passphrase=XXXXXXXX

/ etc/sysctl.conf:

net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv6.conf.all.forwarding=1

/ etc/default/isc-dhcp-server:

INTERFACES="wlan0"

/ etc/dhcp/dhcpd.conf

ddns-update-style none;
option domain-name "unixmen.local";
option domain-name-servers server.unixmen.local;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;

subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.2 192.168.2.51;
  option subnet-mask 255.255.255.0;
  option routers 192.168.2.254;
  option broadcast-address 192.168.2.255;
}

/ etc/rc.local:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#!/bin/sh

PATH=/usr/sbin:/sbin:/bin:/usr/bin

#
# delete all existing rules.
#
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

# Always accept loopback traffic
iptables -A INPUT -i lo -j ACCEPT

# Allow established connections, and those not coming from the outside
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i wlan0 -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -m state --state ESTABLISHED,RELATED -j     ACCEPT
iptables -I FORWARD -i eth0 -o wlan0 -s 192.168.1.0/24 -d 192.168.2.0/24 -j ACCEPT
iptables -I FORWARD -i wlan0 -o eth0 -s 192.168.2.0/24 -d 192.168.1.0/24 -j ACCEPT

# Allow outgoing connections from the LAN side.
iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT

# Masquerade.
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

# Don't forward from the outside to the inside.
iptables -A FORWARD -i wlan0 -o wlan0 -j REJECT

# Drop outside traffic except ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT -i wlan0
iptables -A INPUT -j DROP -p tcp -i wlan0

# Enable routing.
echo 1 > /proc/sys/net/ipv4/ip_forward

exit 0

# ip route show

default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.3
192.168.2.0/24 dev wlan0  proto kernel  scope link  src 192.168.2.100

# route

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use     Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0

# iptables -nvL

Chain INPUT (policy DROP 49 packets, 7973 bytes)
 pkts bytes target     prot opt in     out     source               destination
  803 69528 f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22
   47  3384 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
  820 71137 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
  122 12775 ACCEPT     all  --  !wlan0 *       0.0.0.0/0            0.0.0.0/0            state NEW
    0     0 ACCEPT     tcp  --  wlan0  *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 DROP       tcp  --  wlan0  *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  wlan0  eth0    192.168.2.0/24       192.168.1.0/24
    0     0 ACCEPT     all  --  eth0   wlan0   192.168.1.0/24       192.168.2.0/24
    0     0 ACCEPT     all  --  wlan0  eth0    0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
    0     0 ACCEPT     all  --  eth0   wlan0   0.0.0.0/0            0.0.0.0/0
    0     0 REJECT     all  --  wlan0  wlan0   0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT 721 packets, 115K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain f2b-sshd (1 references)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     all  --  *      *       212.83.191.97        0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       212.129.6.17         0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       198.11.246.172       0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       193.104.41.54        0.0.0.0/0            reject-with icmp-port-unreachable
  803 69528 RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0

# ifconfig

eth0      Link encap:Ethernet  HWaddr XXXXXXXXXXXXXXXXXXXX
          inet addr:192.168.1.3  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: XXXXXXXXXXXXXXXXXXXXXXX/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1271 errors:0 dropped:0 overruns:0 frame:0
          TX packets:877 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:131595 (131.5 KB)  TX bytes:150077 (150.0 KB)
          Interrupt:20 Memory:f7100000-f7120000

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:229 errors:0 dropped:0 overruns:0 frame:0
          TX packets:229 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:16828 (16.8 KB)  TX bytes:16828 (16.8 KB)

wlan0     Link encap:Ethernet  HWaddr XXXXXXXXXXXXXXXXX
          inet addr:192.168.2.100  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: XXXXXXXXXXXXXXXXXXXXX/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:222 errors:0 dropped:0 overruns:0 frame:0
          TX packets:266 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:12115 (12.1 KB)  TX bytes:26066 (26.0 KB)

# lspci

00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection (3) I218-V [8086:15a3] (rev 03)
        Subsystem: Intel Corporation Device [8086:2057]
        Kernel driver in use: e1000e

02:00.0 Network controller [0280]: Intel Corporation Wireless 7265 [8086:095a] (rev 59)
        Subsystem: Intel Corporation Dual Band Wireless-AC 7265 [8086:9010]
        Kernel driver in use: iwlwifi

Cela devrait être tout ce que je peux penser nécessaire pour le débogage. J'apprécie beaucoup votre temps à l'avance.

1
Jeff Ausfeld

iptables se mettait en travers du chemin. Je ne sais pas trop où. La partie agréable est que vous n'avez pas besoin d'iptables pour cette configuration. UFW peut faire tout cela directement.

apt-get remove --purge iptables

REMARQUE: CECI - LA COMMANDE DE PURGE SUPPRIMERA AUSSI COMPLÈTEMENT UFW AVEC TOUT AUTRE PAQUET DE RÉFÉRENCE AUX IPTABLES INCLUANT TOUS * LES FICHIERS .CONF ÉCONOMISENT TOUT CE QUE VOUS VOULEZ CONSERVER DANS DE NOUVEAUX FICHIERS - CE IS LE GRAND ROUGE BOUTON DE RÉINITIALISATION - À UTILISER AVEC UNE ATTENTION EXTRÊME

apt-get install ufw
ufw allow ssh

Modifiez les fichiers de configuration suivants:

/etc/ufw/sysctl.conf:

uncomment net/ipv4/ip_forward=1 on line 8

/etc/ufw/before.rules: placez ce qui suit APRÈS le dernier COMMIT dans le fichier ou vous obtiendrez * des erreurs de filtre. N'oubliez pas d'ajouter un autre COMMIT après le bloc de mascarade illustré ci-dessous ou rien ne se passera!

#NAT rules
*nat
:POSTROUTING ACCEPT [0:0]

# Forward traffic through eth0 - Change to match your out-interface
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

COMMIT

Règles UFW:

ufw route allow in on wlan0 out on eth0 from 192.168.2.0/24

/etc/dhcp/dhcpd.conf:

ddns-update-style none;
option domain-name-servers 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;

# wlan0
subnet 192.168.2.0 netmask 255.255.255.0 {
  range 192.168.2.2 192.168.2.51;
  option routers 192.168.2.1;
}

/ etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# Wired LAN
allow-hotplug eth0
iface eth0 inet dhcp

# Wireless Users
allow-hotplug wlan0
iface wlan0 inet static
    address 192.168.2.100
    netmask 255.255.255.0
    broadcast 192.168.2.255

Supprimez ou commentez tout ce qui concerne ce sujet dans /etc/rc.local autre que la sortie 0.

/ etc/default/isc-dhcp-server:

INTERFACES="wlan0"

/etc/sysctl.conf: Vous pouvez tout commenter ici. De nombreuses instructions vous demandent de ne pas commenter "net.ipv4.ip_forward = 1". Nous l'avons déjà activé dans /etc/ufw/sysctl.conf et ce n'est plus nécessaire ici.

/ etc/default/hostapd:

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

/etc/hostapd/hostapd.conf:

interface=wlan0
driver=nl80211
country_code=US
ssid=YYYYYYYY
hw_mode=g
channel=6
wpa=2
wpa_passphrase=XXXXXXXX

Activer UFW

ufw enable

Redémarrez le serveur pour que les modifications prennent effet

reboot

Vérifiez si tout fonctionne bien: wlan0 doit diffuser sur le ssid spécifié, autoriser les utilisateurs via la phrase de passe spécifiée, émettre l'adresse DHCP dans la plage spécifiée et permettre à ces mêmes utilisateurs d'accéder à Internet via eth0. De plus, si vous exécutez "ufw status", cela ressemblera à ceci:

Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
22 (v6)                    ALLOW       Anywhere (v6)

Anywhere on eth0           ALLOW FWD   192.168.2.0/24 on wlan0

J'espère que cela aide certains d'entre vous car il existe de nombreuses instructions différentes sur la façon de terminer cette étape et j'ai rencontré autant de problèmes en essayant de les suivre.

0
Jeff Ausfeld