[routeur] faire un passerelle rapidement entre 2 réseaux

Salut à tous.

En attendant d’avoir internet, mon voisin m’a passé ses identifiants de box pour que je puisse me connecter. (:))

J’ai un PC sans wifi que j’aimerai connecter et j’aimerai utiliser mon PC comme passerelle vers mon routeur.

Est il possible ou existe t’il quelque chose qui permet de créer une passerelle sur ce PC sans devoir installer la grosse artillerie ? (serveur DHCP + iptables)

Merci

Un pont ethernet. Ainsi les deux interfaces se retrouvent dans le même LAN. Mais depuis je ne sais quelle version du noyau, on ne peut plus ponter une interface wifi en mode “managed” (infrastructure) ou “adhoc”. Il paraît que ça ne marchait pas bien.

Cependant il n’y a pas besoin d’usine à gaz pour faire un routeur avec NAT : ip_forward=1 et une règle iptables avec MASQUERADE. Le DHCP, c’est juste du confort pour la configuration automatique, surtout intéressant pour plusieurs machines. Tu peux configurer les deux interfaces ethernet en statique dans un sous-réseau IP privé quelconque distinct de celui de la box.

Merci pour ton aide,

En attendant les réponses, j’ai installé la passerelle comme je le pensais.
La box en question se trouve sur l’ip 192.168.178.1

Le fichier interface :

[code]auto lo
iface lo inet loopback

The primary network interface

allow-hotplug eth0

auto eth0
iface eth0 inet static
address 192.168.0.254
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
[/code]

Je ne peux configurer wlan0 dans le fichier, ma carte wifi n’utilise p80222. Je configure donc mon wifi avec wicd, et me connecte à la main sur la box.

j’ai ensuite installé le DHCP :

[code]ddns-update-style none;

option domain-name “FD”;
option domain-name-servers 192.168.178.1;

default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.0.10;
option routers 192.168.0.254;

}
[/code]

Lorsque le connecte le routeur, il recoit l’ip (192.168.0.3)

Voici le fichier iptables pour la connexion:

[code]#iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X

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

echo 1 > /proc/sys/net/ipv4/ip_forward
[/code]

Ca ne fonctionne pas, aucune connexion à internet.
J’ai branché un PC à la place du routeur, internet fonctionne.
Je comprends pas trop pourquoi ça passe pas

Je te l’avais bien dit pourtant : pour un seul poste, pas la peine de s’emm^Ubêter avec du DHCP.

La box fait bien DNS ? Par exemple les freebox avant la version 6 ne le font pas.

Et vire toutes ces règles iptables de filtrage, mets tout à ACCEPT et ne laisse que la règle MASQUERADE. Quand ça marchera, il sera temps d’ajouter du filtrage.

Pardon ?

Mais encore ? Depuis le routeur, le poste client, les deux ? Comment as-tu testé ?

Rappel : un navigateur web n’est pas un outil adapté pour tester la connectivité IP.

  1. Vérifier la configuration IP avec [mono]ifconfig[/mono]/[mono]ip addr[/mono], [mono]route -n[/mono]/[mono]ip route[/mono].
  2. Tester de connectivité IP simple avec ping/traceroute vers les adresses IP de la passerelle, de la box, d’un serveur extérieur…
  3. Tester la résolution DNS.

oui mais t’avais pas encore répondu :frowning:

La box est un truc allemand, fritzbox. Je trouve pas grand chose comme info dessus.
Elle doit faire DNS, puisque sur le PC connecté en wifi le contenu de resolv.conf affiche l’ip 192.168.178.1

J’ai rebranché le PC à la place du routeur, plus rien ne fonctionne. Je reprends au début.

Je laisse donc un PC branché à la sortie de la passerelle.

[mono][PC] eth0 [PASSERELLE] wlan0 [FRITBOX (192.168.178.1)][/mono]

PASSERELLE :
Le DHCP fonctionne, je pense pas nécessaire de le supprimer.

ddns-update-style none; option domain-name-servers 192.168.178.1; default-lease-time 600; max-lease-time 7200; authoritative; log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.1 192.168.0.10; option routers 192.168.0.254; option broadcast-address 192.168.0.255; }
iptables.sh :

[code]#!/bin/sh
iptables -F
iptables -X

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

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

echo 1 > /proc/sys/net/ipv4/ip_forward
[/code]

PC :
Le pc à une ip et se connecte pas à internet.

Tu peux me dire comment faire un diagnostic correctement stp ?

Sur le client :

ifconfig eth0 Link encap:Ethernet HWaddr 00:26:6c:58:ad:4b inet adr:192.168.0.1 Bcast:192.168.0.255 Masque:255.255.255.0 adr inet6: fe80::226:6cff:fe58:ad4b/64 Scope:Lien UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:489 errors:0 dropped:0 overruns:0 frame:0 TX packets:1733 errors:0 dropped:0 overruns:0 carrier:15 collisions:0 lg file transmission:1000 RX bytes:148565 (145.0 KiB) TX bytes:204395 (199.6 KiB)

# route -n Table de routage IP du noyau Destination Passerelle Genmask Indic Metric Ref Use Iface 0.0.0.0 192.168.0.254 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

# cat /etc/resolv.conf nameserver 8.8.8.8

# ip route default via 192.168.0.254 dev eth0 192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.1
Que faut il faire d’autre ? je ne vois pas ce qui cloche dans tous ces résultats :frowning:


Concernant la carte wifi dans le fichier interface. J’ai essayé déjà bien souvent de la configurer sur ce PC.
J’ai droit à des erreurs de chargement du module p80222. Qui n’existe pas sur ce PC. Le seul moyen que j’ai trouvé de faire fonctionner cette carte wifi c’est avec wicd qui fait je ne sais pas quoi, mais qui fonctionne)

Quel routeur ? Je croyais que tu voulais que ton PC fasse office de routeur. Il y en a un autre ?

C’est conforme, à part le DNS de Google 8.8.8.8 dont on se demande comment il est arrivé là, le serveur DNS annonçant une autre adresse.

En suivant mon 2) :

En commençant par le faire depuis la machine servant de passerelle.

Oui, il y a un autre routeur qui replacera le PC (c’est lui qui s’occupera du DHCP), car le but était de pouvoir câbler mon PC sans wifi, mais aussi mon NAS et un raspberry pi qui doivent se trouver sur le même réseau.

un petit schémas :
[PC sans wifi]
[NAS sans wifi] <-câbles-> [Routeur NETGEAR] eth0-[PC PASSERELLE]-wlan0 [FRITZBOX (sans aucun accès physique)]
[Rpi sans wifi]

Le DNS qui n’affiche pas le bon, c’est une erreur de manipulation. Y a bien le même partout (celui de google)

passerelle->box et sites : tout fonctionne

# ping 192.168.178.1 PING 192.168.178.1 (192.168.178.1) 56(84) bytes of data. 64 bytes from 192.168.178.1: icmp_seq=1 ttl=64 time=37.4 ms ^C --- 192.168.178.1 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 37.425/37.425/37.425/0.000 ms

[code]

traceroute 192.168.178.1

traceroute to 192.168.178.1 (192.168.178.1), 30 hops max, 60 byte packets
1 fritz.box (192.168.178.1) 4.882 ms 4.814 ms 9.128 ms[/code]

[code]

traceroute google.fr

traceroute to google.fr (173.194.112.119), 30 hops max, 60 byte packets
1 fritz.box (192.168.178.1) 7.301 ms 8.409 ms 8.410 ms
2 rdsl-krlh-de80.nw.mediaways.net (213.20.56.142) 29.316 ms 31.686 ms 32.882 ms
3 xmws-krlh-de02-chan-20.nw.mediaways.net (62.53.220.133) 34.143 ms 37.196 ms 41.689 ms
4 xe-1-0-0-0.0002.dbrx.01.kae.de.net.telefonica.de (62.53.12.93) 41.489 ms 43.140 ms 43.762 ms
5 so-3-3-0-0.01.rmwc.99.fra.de.net.telefonica.de (62.53.1.71) 54.077 ms so-3-0-0-0.01.rmwc.99.fra.de.net.telefonica.de (62.53.1.69) 55.403 ms 57.993 ms
6 72.14.198.209 (72.14.198.209) 62.713 ms 49.754 ms 49.556 ms
7 209.85.254.108 (209.85.254.108) 49.559 ms 32.978 ms 34.523 ms
8 72.14.236.55 (72.14.236.55) 37.154 ms 38.489 ms 41.499 ms
9 fra07s30-in-f23.1e100.net (173.194.112.119) 46.091 ms 50.342 ms 50.386 ms[/code]

depuis le PC connecté à la passerelle :
PC->passerelle : OK

# ping 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_seq=1 ttl=64 time=0.573 ms 64 bytes from 192.168.0.254: icmp_seq=2 ttl=64 time=0.522 ms ^C --- 192.168.0.254 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.522/0.547/0.573/0.034 ms

# traceroute 192.168.0.254
traceroute to 192.168.0.254 (192.168.0.254), 30 hops max, 60 byte packets
 1  vohu-sve11-deb.local (192.168.0.254)  0.395 ms  0.375 ms  0.363 ms[/code]
PC->box : echec. Mais ça me semble normal, enfin je crois. C'est pour ça qu'il y a une passerelle

PC->sites : echec
[code]# ping google.fr
ping: unknown host google.fr[/code]

[code]# traceroute google.fr
google.fr: Nom ou service inconnu
Cannot handle "host" cmdline arg `google.fr' on position 1 (argc 1)

Le problème doit venir de l’iptables

Et actuellement, le routeur est présent entre les PC “clients” et la passerelle ou pas ?

Non, ce n’est pas normal. La passerelle sert précisément à interconnecter le PC et la box.
Ça échoue comment ? Qu’affiche le traceroute ?

Vérifie les règles en place avec [mono]iptables-save[/mono]. Vérifie aussi que /proc/sys/net/ipv4/ip_forward est à 1.

Voilà le résultat : dsl de ne pas l’avoir mis avant.
On voit que la connection va vers la passerelle ‘192.168.0.254’ mais plus rien après.

# traceroute 192.168.178.1 traceroute to 192.168.178.1 (192.168.178.1), 30 hops max, 60 byte packets 1 vohu-sve11-deb.local (192.168.0.254) 0.572 ms 0.549 ms 0.534 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 * * * 14 * * * 15 * * * 16 * * * 17 * * * 18 * * * 19 * * * 20 * * * 21 * * * 22 * * * 23 * * * 24 * * * 25 * * * 26 * * * 27 * * * 28 * * * 29 * * * 30 * * *

# ping 192.168.178.1
PING 192.168.178.1 (192.168.178.1) 56(84) bytes of data.
^C
--- 192.168.178.1 ping statistics ---
78 packets transmitted, 0 received, 100% packet loss, time 77615ms

l’iptable-save donne ça :

[code]# Generated by iptables-save v1.4.21 on Sun Feb 8 19:55:15 2015
*nat
:PREROUTING ACCEPT [205:15385]
:INPUT ACCEPT [13:1607]
:OUTPUT ACCEPT [45:3771]
:POSTROUTING ACCEPT [203:13532]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT

Completed on Sun Feb 8 19:55:15 2015

Generated by iptables-save v1.4.21 on Sun Feb 8 19:55:15 2015

*filter
:INPUT ACCEPT [475:61391]
:FORWARD ACCEPT [415:29646]
:OUTPUT ACCEPT [438:49498]
COMMIT

Completed on Sun Feb 8 19:55:15 2015

[/code]

Sur le routeur, as tu branché quelque chose sur l’entrée WAN, ou bien t’en sers tu juste comme un switch entre les sorties LAN ?

je n’ai pas branché mon routeur Netgear pour l’instant, j’ai branché un PC à la place.
Le routeur de mon voisin n’est accessible qu’en wifi.
Lorsque je me connecte dessus, j’ai internet. La passerelle n’a aucun problème pour aller sur internet non-plus

La règle iptables de MASQUERADE doit s’appliquer à wlan0 (comme dans ton script originel), pas eth0 (comme dans le jeu de règles actif).

haaaaaaaaaaaaaaaaaaaaaaaaaaa !!! quel débile je suis…

Donc ça marche maintenant :slightly_smiling:

Merci