Routing-Probleme

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
Stefanowitsch
Beiträge: 274
Registriert: 21.09.2003 22:20:05

Routing-Probleme

Beitrag von Stefanowitsch » 21.04.2007 18:36:04

Hallo!

Ich habe einen Debian-Rechner mit zwei Netzwerkkarten (eth2 für die Verbindung ins lokale Netz, ppp0 für die Verbindung per DSL nach "draußen"), über den andere Rechner vom lokalen Netzwerk das Internet erreichen sollen. Die Interfaces auf dem Router sind folgendermaßen konfiguriert:

Code: Alles auswählen

auto eth2
iface eth2 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.1

auto dsl-provider
iface dsl-provider inet ppp
provider dsl-provider
pre-up /sbin/ifconfig eth1 up # line maintained by pppoeconf
Um die Sache einfach zu halten, habe ich (noch) kein iptables-Skript. Was ich allerdings gemacht habe, ist ein

Code: Alles auswählen

echo 1 > /proc/sys/net/ipv4/ip_forward
Ein

Code: Alles auswählen

route -n
bringt mir aber nur folgende Route:

Code: Alles auswählen

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
217.0.116.208   0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0
Speziell die letzte Zeile scheint mir etwas verdächtig... Was habe ich übersehen?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 21.04.2007 19:26:03

probier das ganze nochmal, ohne den "gateway" Eintrag bei eth2

Gruß
gms

Benutzeravatar
Stefanowitsch
Beiträge: 274
Registriert: 21.09.2003 22:20:05

Beitrag von Stefanowitsch » 21.04.2007 20:07:10

gms hat geschrieben:probier das ganze nochmal, ohne den "gateway" Eintrag bei eth2
Danke für die schnelle Antwort. Leider hat es nicht funktioniert.

Code: Alles auswählen

route -n
gibt immer noch das Gleiche aus.

mex603
Beiträge: 15
Registriert: 12.04.2007 10:27:16

Beitrag von mex603 » 23.04.2007 17:03:01

was sagen denn deine logfiles (siehe auch dieser beitrag)
http://www.debianforum.de/forum/viewtopic.php?t=82711
ausm bauch heraus würde ich sagen: 2te netzwerkkarte einrichten
mit ner statischen ip.



mex


Stefanowitsch hat geschrieben:
gms hat geschrieben:probier das ganze nochmal, ohne den "gateway" Eintrag bei eth2
Danke für die schnelle Antwort. Leider hat es nicht funktioniert.

Code: Alles auswählen

route -n
gibt immer noch das Gleiche aus.

Pawel
Beiträge: 284
Registriert: 27.11.2006 03:59:39

Beitrag von Pawel » 24.04.2007 08:54:04

@Stefanowitsch: Wenn ich dich richtig verstanden habe, dann willst du einen Router bauen. Erstmal folgende Sachen klären:

Vom Router:

Code: Alles auswählen

ping www.heise.de
ping {IP eines Rechners in deinem LAN}
Beides sollte funktionieren.

Von einem Rechner in deinem LAN:

Code: Alles auswählen

ping 192.168.1.1
ping www.heise.de
Das erste sollte funktionieren, das zweite scheitert, oder?

Die Ursache dafür ist ganz einfach. Wenn du von einem Rechner in LAN eine Anfrage an einen Rechner außerhalb deines LANs machst, dann sollte bereits geroutet werden, aber die Anfrage kommt von deiner lokalen Adresse, z.B. 192.168.1.200. Jetzt gibt es zwei Möglichkeiten was mit den Paketen mit einer Adresse aus dem privaten Bereich passieren kann. Erstens, dein ISP blockt diese einfach ab oder - was besser nicht passieren sollte - die Anfrage kommt durch und wird beantwortet. Die Antwort wird dann an 192.168.1.200 geschickt. Nur leider kennt keiner der Router im Internet eine Route zu diesem Bereich und es wird geroutet bis das Paket seine Lebensspanne überschritten hat.

Langer Rede kurzer Sinn, du musst deinem Router beibringen, dass er Pakete aus deinem LAN mit der IP vom ppp0 umschreibt. Das kann man mit iptables machen. Bei einer festen IP (d.h. du kriegst immer die selbe IP von deinem ISP, muss meistens extra bestellt werden) benutzt man dafür SNAT:

Code: Alles auswählen

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j SNAT --to-source {IP, die dir dein Hoster zugewiesen hat}
Bei einer dynamischen IP empfiehlt es sich es anders zu machen:

Code: Alles auswählen

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
Du bist natürlich nicht der erste, der sowas probiert, deswegen gibt es im Wiki vom DebianForum eine Anleitung dazu. Hier der Link: http://wiki.debianforum.de/In2minDebian ... bianmanier.

Edit: Um deine eigentliche Frage zu beantworten :D :
Bei dem letzten Eintrag in der Ausgabe von "route -n" handelt es sich um die Default Route. Alle Pakete, die nicht den beiden vorherigen entsprechen, werden an ppp0 geschickt.

Benutzeravatar
Stefanowitsch
Beiträge: 274
Registriert: 21.09.2003 22:20:05

Beitrag von Stefanowitsch » 29.04.2007 10:12:53

Hallo,

danke für die Erklärung. Es lag am fehlenden

Code: Alles auswählen

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE
.
Allerdings bin ich nun mit der Namensauflösung auf ein Problem gestoßen. Wenn ich von einem Rechner im LAN ein

Code: Alles auswählen

ping www.google.com
mache, tritt eine Zeitüberschreitung auf. Ein Ping mit der entsprechenden IP-Addresse klappt dagegen. Ein

Code: Alles auswählen

ping www.google.com
auf dem Router funktioniert.
Eine Suche hier im Forum (ich bin ja nicht der erste mit dem Problem) brachte aber irgendwie nix: In meiner resolv.conf sind die Nameserver meines Internetproviders eingetragen (ich habe auf dem Router kein bind oder dnsmasq installiert). Meine dhcpd.conf sieht so aus:

Code: Alles auswählen

authoritative;
ddns-update-style none;
ddns-updates off;

subnet 192.168.1.0 netmask 255.255.255.0 {
  default-lease-time 1800;
  max-lease-time 86400;
  option routers 192.168.1.1;
  range 192.168.1.200 192.168.1.253;
}
Ich weiß, dass man die Nameserver des DSL-Providers auch direkt an die Clients im LAN übergeben könnte (prepend domain-name-server). Aber irgedwie finde ich diese Lösung nicht so toll, weil die Nameserver ja dann zwei Mal in der Konfiguration stehen, ein Mal in der resolv.conf und ein Mal in der DHCP Config-Datei.

Antworten