Après 2 semaines de recherches quotidiennes, je poste ici la méthode pour utiliser le port Ethernet comme accès à Internet via le Wifi. (Pompée, debugée, et traduite)
A noter qu’il faut IMPERATIVEMENT un SWITCH Ethernet pour que ça fonctionne!
Prérequis
Assurez-vous que votre Wi-Fi fonctionne et est convenablement configuré.Si ce n’est pas le cas, votre accès au dispositif vers eth0 sera limité ou inexistant.
Setup
Vous devez avoir quelques packages pour commencer :
apt-get update
apt-get install network-manager isc-dhcp-server
Interfaces
Editez le fichier sudo nano /etc/network/interfaces et remplacez par ce qui suit, ceci donnera une ip fixe à votre eth0 (192.168.1.1) et recréera resolv.conf.
auto lo
iface lo inet loopback
iface default inet dhcp
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.1
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
up cat /etc/resolv.conf | sed 's/ver /ver 127.0.0.1,/g' > /etc/resolv_local.conf
up cat /etc/resolv.conf | sed 's/ver /ver 127.0.0.1,/g' > /etc/resolv.conf
DHCP
Modifiez la configuration par défaut du dhcp et ajoutez le réseau LAN (192.168.1.*), editez le fichier sudo nano /etc/dhcp/dhcpd.conf, et ajoutez ce qui suit:
# configuration for the bridge internal subnet.
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.101 192.168.1.119;
option domain-name-servers 8.8.8.8;
option domain-name "domain.local";
option routers 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
}
IPTABLES
Maintenant, créez le script suivant pour configurer et démarrer le réseau pour chaque démarrage. Le script créera dynamiquement les règles ‹ IPTABLES › . Nommez le sudo nano /root/bridge.sh:
#!/bin/bash
LOCAL_IFACE=eth0
INET_IFACE=wlan0
# this is where the dhcp info comes in. We need the default gateway
# /var/lib/dhcp/dhclient.wlan0.leases
f=/var/lib/dhcp/dhclient.$INET_IFACE.leases
GATEWAY=$(cat $f| grep "option route" | tail -1 |awk '{print $3}'| sed 's/;//')
IPT=$(which iptables)
# get the wlan address
INET_ADDRESS=$(ifconfig $INET_IFACE |grep "inet addr" |awk '{print $2}' | awk END{print} | awk -F ":" '/1/ {print $2}')
# Flush the tables
$IPT -F INPUT
$IPT -F OUTPUT
$IPT -F FORWARD
$IPT -t nat -F
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
# Allow forwarding packets:
$IPT -A FORWARD -p ALL -i $LOCAL_IFACE -j ACCEPT
$IPT -A FORWARD -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
# Packet masquerading
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_ADDRESS
$IPT -t nat -A POSTROUTING -o $LOCAL_IFACE -j MASQUERADE
# save the created tables
iptables-save > /etc/network/iptables
#cat /proc/sys/net/ipv4/ip_forward
# make sure we are forwarding packets
echo "1" > /proc/sys/net/ipv4/ip_forward
sysctl --system > /dev/nul
#remove the default route, usually on eth0 interface
route del default
#ifdown $INET_IFACE && ifup $INET_IFACE
#ensure is $INET_IFACE now...
route add default gw $GATEWAY $INET_IFACE
gw=$(route -n -A inet | grep '^0.0.0.0' |awk '{ print $2 }')
echo "default route is now " $gw
Dans sudo nano /etc/sysctl.conf enlever le # sur net.ipv4.ip_forward=1 et net.ipv6.conf.all.forwarding=1
Finalement
Afin d’éviter de relancer le script à chaque démarrage, ajoutez ces deux lignes avant le exit 0 dans le fichier sudo nano /etc/rc.local.
# will run the bridge on startup
sudo sh ../root/bridge.sh
Maintenant relancer votre dispositif et le bridge se mettra en
route.