Hi
In meinem Server habe ich 3 Netzwerkkarten
– eth0 (WLAN) internes Netz 192.168.1.102
– eth1 LAN DSL 192.168.1.101
– eth2 LAN internes Netz 192.168.1.100
Alle internen Netzwerkadressen liegen auf 192.168.1.XXX
Am eth0 (LAN) hängen diverse Rechner per Kabel mit den IPs
192.168.1.120 + 192.168.1.130 + 192.168.1.140 + 192.168.1.150
Am eth0 WLAN “hängt” nur ein Rechner mit einer WLAN Karte und der IP
192.168.1.161
Nun hab ich die Routing Tabelle im Server so angepasst, dass ich
zwar von jedem Rechner ins Internet per DSL komme (eth0->eth1 und
eth2->eth1) , jedoch klappt es
nicht dass die Rechner zwischen eth2 und eth0 sich gegenseitig
erreichen (pingen per IP).
Vom Server aus kann ich alle problemlos erreichen.
Routingtable des Servers
/sbin/route
192.168.1.161 * 255.255.255.255 UH 0 0 0 eth0
217.0.116.120 * 255.255.255.255 UH 0 0 0 ppp0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth2
link-local * 255.255.0.0 U 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
default 217.0.116.120 0.0.0.0 UG 0 0 0 ppp0
Masquerading ist für ppp aktiviert.
/proc/sys/net/ipv4/ip_forward ist auf “1”
Mein DNS liegt auf 192.168.1.100
Woran liegt es wohl und was kann man machen ?
“192.168.1.161 * 255.255.255.255 UH 0 0 0 eth0
217.0.116.120 * 255.255.255.255 UH 0 0 0 ppp0 “
1. Bist du ganz sicher, dass 4×255 eine zulässge (und sinnvolle) Netzwerkmaske ist?
2. Wie sehen die Routing-Tabellen auf den Clients aus?
3. Die Routing Tabelle sagt dem Server zwar, dass er eigene Pakete für den Rechner .161 an eth0 schicken soll. Für Pakete von anderen Rechnern für den .161 fühlt er sich aber erst zuständig, wenn er per iptable eine Regel dafür beigebracht bekommt. So nimmt er sie erst garnicht an. (Umgekehrt von .161 auf .120 etc. ebenso.)
hi,
also generel würde ich mich folgendes fragen: Wiso nimmst du für das WLan nicht einfach ein 2. Netzwerk (wie zB. 192.168.2.0/24)? Damit umgehst du die Probleme komplett ;)
Ansonsten wie der Vorredner schon gesagt hat: entweder mit iptables dem Gateway sagen das er die Packete für 192.168.1.161 annehmen und an eth1 weiterleiten soll oder/und auf jeden Client angeben das Packete für die .161 ip über 192.168.1.100 und auf dem Rechner mit der .161 ip über 192.168.1.102 weitergeleitet werden müssen.
fejf
Also ich hab mir das mit dem 2. Netzwerk mal zu Herzen genommen,
so ist es sowieso übersichtlicher.
Server Netzwerkkarten:
– eth0 (WLAN) int. Netz 192.168.2.102
Vertiefe dich doch mal in diese Quelle [1], Abschnitt IP Firewall.
Ach ja, und schau mal mit “iptables -L” nach, ob nicht still und heimlich schon Routing-Regeln für das Internet angelegt wurden.
So etwas in der Richtung müsste da schon drinstehn:
Chain POSTROUTING (policy ACCEPT) target prot opt source destination MASQUERADE all — 10.0.0.0/8 anywhere
(Statt 10.0.0.0/8, sollte da bei dir 192.168.1.0/24 stehen.)
Um die Einflüsse von evtl. vorhandenen Packetfilterregeln ausschließen zu können, solltest du die DSL-Verbindung sicherheitshalber abziehen und den Packetfilter stilllegen. Danach nochmal das rein interne Routing mit allen gewünschten Funktionen testen.
Wenn im WLAN-Bereich nur 192.168.2.xxx-Adressen eingestellt sind und im LAN-Bereich nur 192.168.1.xxx-Adressen und bei allen Rechnern der Router mit seiner im jeweiligen Netz liegenden Adresse als Gateway eingetragen ist und auch das Routing im Kernel (/proc/sys/net/ipv4/ip_forward) eingeschaltet ist, sollte jeglicher interner Datenverkehr funktionieren. Wenn es dann mit eingeschaltetem Packetfilter nicht geht, liegt das Problem an fehlerhaften Regeln, die du dann hier mal posten solltest.
Das in einem andern Post angesprochene Masquerading ist ausschließlich für die Internetverbindung nötig und hat im internen Datenverkehr nichts zu suchen. Daher muss bei diesen Regeln in deinem Setup auch angegeben werden, zwischen welchen Schnittstellen Masquerading stattfinden soll.
Günter
Es scheint, dass Routing im lokalen Netz auch ohne iptables geht. (Ich mache das nicht jeden Tag.)
Hier ist eine – nach dem ersten Überblick zu urteilen – sinnige Anleitung dafür: [1]
[1] http://www.ewetel.net/~martin.bode/ag_computernetze/routing.htm
man-draker:
klar geht routing ohne iptables – aber nur wenn du zwei verschiedene subnetze hast – deshalb war mein vorschlag ja auch ein 192.168.2.* netz einzuführen, weil das am einfachsten ist :)
enno:
1. ich hoffe mal das ist ein tipfehler in der zweiten zeile: ;)
————————————————
Einrichtung beim WLAN Client 192.168.2.161:
IP 192.168.1.161
Hi
Nach langem hin und her und dem Ausprobieren der Anleitung die
“man-draker” (https://www.linux-community.de/Neues/story?storyid=18757&commentid=53618&order=location#53618)
gefunden hatte, habe ich es endlich begriffen.
Das Routing ist OKAY
Das Filtern (mit Iptables) ist das Problem.
Also hab ich Test-weise die iptables Regeln mit
iptables -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
zum Vollständigen akzeptieren überschrieben.
Und schon funktionierte die Kommunikation zwischen eth0 und eth2 in beide
Richtungen.
Nach einigem Suchen hab ich einen Punkt in der SuSEfirewall2 Konfiguration
gefunden, die es ermöglicht, dass Netzwerkkarten der selben Klasse miteinander
kommunizieren. Eine solche Klasse sind die beiden Netzwerkkarten meines
internen Netzes (eth0 und eth2).
In der Konfigurationsdatei
/etc/sysconfig/SuSEfirewall2
habe ich die Zeile
FW_ALLOW_CLASS_ROUTING=”no”
von
“no” auf “yes”
umeditiert und mit “rcSuSEfirewall2 restart”
die Firewall neugestartet.
Und “”schon”” funktioniert es – Juhuuuu!!!
Vielen Dank für all Eure hilfreichen Tipps.
MfG
Enno
Zu Punkt 1.)
Eigentlich bin ich mir da ganz sicher, jedenfalls beim 2. Eintrag, wird
dieser von “cinternet -i dsl0 –start”
automatisch eingetragen, inkl. der default Route!
Beim ersten Eintrag: Bei der Route für einen Host ( route add -host xxx….)
ist doch nur 4*255 sinnvoll!?
Zu Punkt 2.)
Routing Tabelle eines Clients (192.168.1.150) an eth2 (internes LAN)
/sbin/route:
192.168.1.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 192.168.1.100 0.0.0.0 UG 0 0 0 eth0
Zu Punkt 3.)
Das Schicken von Paketen, die bei eth2 ankommen und nach eth0 weiter sollen –
sowie in entgegengesetzter Richtung sollte doch eigentlich ohne iptables und
mit route möglich sein !?
zu Punkt 3.:
die Packete kommen aber nicht wirklich an ;) weil: in deiner bisherigen Konfiguration meint der WLan-Rechner (.161) das er im gleichen physikalischem Netzwerk mit allen 192.168.1.* Rechnern hängt. In sofern Kontaktiert er den Gateway mit der 192.168.1.102 IP nicht sondern versucht ihn direkt zu erreichen. Genauso geht es den restlichen Rechnern die auf die .161 zugreifen wollen. Sie denken er ist im gleichen Netzwerk und versuchen das erst gar nicht über den Gateway. Außerdem fühlt sich der Gateway nicht zuständig Packete anzunehmen für eine IP die er nicht selber besitzt…
fejf