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.
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.