• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

2 Netzwerke mit Anbindung ans Internetz - aber kein Routing?

isolde

Member
Hallo zusammen,

Ich habe folgendes Szenario.
Meine Linux Box (openSuSE 11.4) hängt mittels LAN Kabel an einer FritzBox.
Die FritzBox macht die Verbindung zum Internet per DSL und hat die Netzwerk IP 192.168.177.254/24.
Mein Linux- Rechner hat die 192.168.177.1/24 und macht den ganzen anderen Netzwerk- Kram wie DHCP, DNS, SAMBA, CUPS usw.
Die FritzBox hat zusätzlich noch das WLAN an, um als Zugangspunkt für Wifi- Rechner zu dienen. DHCP- Anfragen reicht sie (weil ist im Router ausgeschaltet) brav an den Linux Rechner weiter.

Bei meinem Linux- Rechner habe ich als Standard- Gateway die FritzBox eingetragen. Meine DHCP- CLienten erhalten als Standard- GW die IP der Linux- Box, da da ja auch der DNS- Server (fürs interne Netz) sitzt. Hoffe das ist alles soweit richtig ... zumindest läuft alles, und die anderen Rechner erhalten sowohl Zugriff aufs Netzwerk als auch Zugriff aufs Internet.

Nun will ich ein 2. Wifi- Netz über die Wifi- Schnittstelle auch ans Internet bringen. Die WLAN- Schnittstelle hat dabei die IP 192.168.178.2/24. Das Netz wird wieder durch einen anderen Router (ohne Anschluss des DSL) zur Verfügung gestellt (ich habe einen WLAN-WPA- Master mit dem Linux- Rechner nicht hinbekommen).
Der DHCP- Rechner vergibt in dem anderen Netz auch brav die dort gültigen Netzwerkadressen (aus dem Pool des Netzes 192.168.178.0).

Nur leider gelingt der Zugriff aufs Internet nicht. Ich denke es liegt am Routing, dass da irgendwo irgendwas fehlt. Aber ich weiß nicht was. Ich dachte, dass es hier auch reicht, als Standard-GW den Linux- Rechner mitzugeben, und der würde dann selber seine Anfragen zu "seinem" Gateway schicken.

(gewünschte/erforderliche Details über Routingtabellen und Konfigurationen muss/kann ich nachliefern, wenn ich wieder daheim bin).
 

spoensche

Moderator
Teammitglied
Du kannst deinen Linux Rechner nicht als Standard GW angeben, weil er in einem anderen Netz als dein 2. WLAN ist. Den Clients, in deinem 2. WLAN, musst du den WLAN Router als Gateway geben und den WLAN- Router verbindest du per LAN Kabel mit dem Linux- Rechner. Der WLAN- Router routet dann den Netzwerkverkehr vom 2. WLAN in dein LAN des Linux Rechners.
 
OP
I

isolde

Member
Der Linux Rechner ist ja aber in beiden Netzen vorhanden.
Also an meinem eigenen mixed- Netz (Wlan- Clients via Router, der dann per LAN an den Linux- Rechner die DHCP Daten vergibt, und über das selbe LAN Kabel ins Internet geht) - und auch über WiFi an dem anderen WLAN dran.
Der Linux- Rechner stellt quasi den Knoten dar.
Oder sollte ich bei dem 2. Netz auch ein Kabel zw. dem Zugangspunkt und dem Linux- Rechner ziehen?

Das löst aber mein Problem nicht, den Netzwerk- Verkehr aus WLAN2 über meine Linux- Box ins Internet zu bekommen...

Oder verstehe ich da was grundlegend falsch?
 

spoensche

Moderator
Teammitglied
Sieht dein Netzaufbau so aus?
fritz-box---------- eth0 Linux Rechner (eth1:192.168.178.0/24)------------ LAN
|
| eth0 (einer der Switchports)
WLAN- Router ------ WLAN Netz

Auf dem WLAN-Router muss DHCP deaktiviert sein, wenn die WLAN Clients eine IP aus dem 192.168.178.0/24 Netz zugewiesen bekommen sollen.

Gib bitte mal mehr Informationen bzgl. Netzaufbau etc.

Auf deinem Linux- Rechner führst du mal folgendes aus:
Code:
ip addr show
ip route show
 

Jägerschlürfer

Moderator
Teammitglied
ich würde den WLAN AP am Linux Rechner anschließen und dem WLAN AP eine feste IP über DHCP vergeben.
So bekommen die WLAN Clients dann eine entsprechende IP zugewiesen und diese gehen dann über den Linuxrechner als Gateway über die fritzbox ins Netz.
(komischer Satz, aber so nutzt du den DHCP Server, DNS Server usw von deinem Linuxrechner)
 
OP
I

isolde

Member
Ich hab die WLAN- IP- Adresse geändert, aber das nur am Rande.
Mein Netzwerk sieht wie folgt aus:
Code:
[Internet] --- WLAN-Router (192.168.177.254)<-> eth0 <-> (192.166.177.1) Linux- Server  
                   |          |
                   |          |
                   PC1       PC2
Der WLAN- Router macht die Verbindung zum Internet. Außerdem die Verbindung der WLAN- PCs von mir. Die Verwaltung des Netzwerks läuft dabei über den Linux- Server. Das funktioniert soweit.

Jetzt möchte ich es wie folgt erweitern
Code:
[Internet] --- WLAN-Router (192.168.177.254)<-> eth0 <->  (192.166.177.1) Linux- Server (192.168.178.254) <-> WLAN0 <-->  WLAN-Router
                   |          |                                                                                            |
                   |          |                                                                                            |
                 PC1       PC2                                                                                           PC_a

Der "andere" WLAN- Router hat die IP- Adresse 192.168.178.1

Code:
server:~ # ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
    inet 127.0.0.2/8 brd 127.255.255.255 scope host secondary lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:1e:33:06:a6:89 brd ff:ff:ff:ff:ff:ff
    inet 192.168.177.1/24 brd 192.168.177.255 scope global eth0
    inet6 fe80::21e:33ff:fe06:a689/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:16:44:a4:a7:a8 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.254/24 brd 192.168.178.255 scope global wlan0
    inet6 fe80::216:44ff:fea4:a7a8/64 scope link
       valid_lft forever preferred_lft forever

Code:
server:~ # ip route show
192.168.178.0/24 dev wlan0  proto kernel  scope link  src 192.168.178.254
192.168.177.0/24 dev eth0  proto kernel  scope link  src 192.168.177.1
169.254.0.0/16 dev eth0  scope link
127.0.0.0/8 dev lo  scope link
default via 192.168.177.254 dev eth0

Code:
server:~ # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.178.0   *               255.255.255.0   U     0      0        0 wlan0
192.168.177.0   *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         fritz.box       0.0.0.0         UG    0      0        0 eth0
 

spoensche

Moderator
Teammitglied
Routing aktivieren:
Code:
echo 1 > /proc/sys/net/ipv4/ip_forward

Wenn deine IP-Tables Default Policy DROP ist (alles was nicht explizit erlaubt ist, ist verboten) musst du noch eine Forwarding Regel anlegen.

Bsp.: (Die Regel sollte man genauer definieren)
Code:
iptables -A FORWARD -i wlan0 -s 192.168.178.0/24 -o eth0 -j ACCEPT
 
OP
I

isolde

Member
spoensche schrieb:
Routing aktivieren:

Wenn deine IP-Tables Default Policy DROP ist (alles was nicht explizit erlaubt ist, ist verboten) musst du noch eine Forwarding Regel anlegen.

Das Routing ist aktiviert, dh wenn ich mir den Eintrag anzeigen lasse steht da schon 'ne 1 drin.

Die iptables- Tabelle ist aktuell leer.
Code:
server:~ # iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Ich werd es ausprobieren.
 
OP
I

isolde

Member
ich habe den Eintrag, wie von Dir vorgeschlagen, in meine IPTABLES- Tabellen eingetragen. Leider ohne Erfolg. Der Internet- Zugriff bleibt dem 2. WLAN- Netz verwehrt.

So sieht die dhcpd.conf aus

Code:
# dhcp.conf
ddns-update-style none;
option domain-name "isoldenet.site";
option subnet-mask 255.255.255.0;
server-name "server.isoldenet.site";
ddns-hostname "server.isoldenet.site";
ddns-domainname "isoldenet.site";
option nis-domain "isoldenet.site";

shared-network ISOLDE-ETH0
 {
   default-lease-time 36000;
   max-lease-time 72000;
   server-identifier 192.168.177.1;
   option domain-name-servers 192.168.177.1;
   option netbios-name-servers 192.168.177.1;
   option netbios-dd-server 192.168.177.1;
   option netbios-node-type 8;
   option routers 192.168.177.1;  
   option nis-servers 192.168.177.1;
   option ntp-servers 192.168.177.1;
   option time-servers 192.168.177.1;
   subnet 192.168.177.0 netmask 255.255.255.0
    {
     host Roland-X64
      {
       hardware ethernet 00:1e:65:4e:05:a6;
       fixed-address 192.168.177.11;
      }
    range 192.168.177.2 192.168.177.10;
   }
 }

shared-network ISOLDE-WLAN0
 {
   default-lease-time 36000;
   max-lease-time 72000;
   server-identifier 192.168.178.254;
   option domain-name-servers 192.168.178.254;
   option netbios-name-servers 192.168.178.254;
   option netbios-dd-server 192.168.178.254;
   option netbios-node-type 8;
   option routers 192.168.178.254;   
   option nis-servers 192.168.178.254;
   option ntp-servers 192.168.178.254;
   option time-servers 192.168.178.254;
   subnet 192.168.178.0 netmask 255.255.255.0
    {
    range 192.168.178.20 192.168.178.100;
   }
 }
Das Netzwerk 192.168.177.0/24 hat Zugriff aufs Internet. Das andere nicht. IPforwarding ist für IPv4 aktiviert.

Hier nochmal die Routen:
Code:
server:/etc # route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.178.0   *               255.255.255.0   U     0      0        0 wlan0
192.168.177.0   *               255.255.255.0   U     0      0        0 eth0
link-local      *               255.255.0.0     U     0      0        0 eth0
loopback        *               255.0.0.0       U     0      0        0 lo
default         fritz.box       0.0.0.0         UG    0      0        0 eth0
server:/etc # nslookup fritz.box
Server:         192.168.177.254
Address:        192.168.177.254#53

Name:   fritz.box
Address: 192.168.177.254
 

framp

Moderator
Teammitglied
Ich vermute mal, dass Dein WLAN Router Dein 178er Netz nicht kennt. Bei meinem Router kann ich dafür static Routes definieren. Des weiteren könntest Du mal auf dem Router wireshark mitlaufen lassen - oder auch nur tcpdump. Dann kannst Du sehen ob was ankommt bzw von wo keine Antwort mehr kommt.
 

Tooltime

Advanced Hacker
framp schrieb:
Ich vermute mal, dass Dein WLAN Router Dein 178er Netz nicht kennt.
Da es hier zwei WLAN-Router gibt, will ich diese Aussage etwas präzisieren.

Woher soll der Router mit der IP 192.168.177.254 wissen, wo sich das Netz 192.168.178.0/24 befindet. Hat er dafür keine explizite Regel, zieht die default route und die zeigt in Richtung Internetprovider.
 
OP
I

isolde

Member
Die spannende Frage ist doch, dass Daten aus dem Netz 192.168.178.0/24 nicht nach 192.168.177.0/24 geroutet werden.

Der WLAN Router 192.168.177.254/24 macht doch "nur" die Internet Verbindung von 192.168.177.1/24 (default route von .1 nach .254) - und das Netz 192.168.177.0/24 hat 192.168.177.1/32 als default-Route gesetzt.

Die beiden WLAN-Router stellen doch nur die Funkverbindung mit WPA2 zur Verfügung. Die Netzwerk- Verwaltung macht der Linuxrechner, der per LAN an meinem Internet- Zugang(srouter) hängt und per WLAN an den "FremdRouter".

Anfragen ins Internet stellt eigentlich nur der Server. Allerdings müsste er dann die Anfragen des "fremden Netzes" maskieren, was er nicht tut (weil er es nicht muss), da seine eigene Verbindung zum Internet über eine "interne Verbindung" innerhalb eines seiner Netzwerke läuft.
 

Tooltime

Advanced Hacker
isolde schrieb:
Die spannende Frage ist doch, dass Daten aus dem Netz 192.168.178.0/24 nicht nach 192.168.177.0/24 geroutet werden.
Woher weisst du dass? Vielleicht findet die Antwort nur keinen Weg zurück!
Beispiel:
  • Ein Client aus dem Netz 192.168.178.0/24 sendet ein ping an den Router 192.168.177.254. Da der Client den das Netz 192.168.177.0/24 nicht kennt, schickt er es an sein default-GW den Linux-Server. Der Linux-Server hat über seine Interfacedefinitionen eine passende Route und leitet das Paket weiter an das Ziel 192.168.177.254. Nun will der Router antworten, da er aber keine Route zum 192.168.178.0/24 hat schickt er die Antwort an sein default-GW und das liegt im Internet. Und siehe da der Client bekommt keine Antwort

isolde schrieb:
Anfragen ins Internet stellt eigentlich nur der Server.
Nein, es sei denn du benutzt Proxy-Dienste auf dem Server, oder du aktivierst NAT.
 

framp

Moderator
Teammitglied
Sagen wir das mal so: Die statische Route im Router ist notwendig - aber nicht unbedingt hinreichend. Deshalb solltest Du die statische Route einrichten und entweder geht es dann oder Du musst dann weitersuchen. Ich empfehle Dir dazu die o.g. Tools auf Deinem LinuxRouter. Der sitzt so richtig schön in der Mitte und eignet sich prächtig dazu den Netzwerktraffic zu monitoren :roll:
 
Oben