# linux routing



## TeCe (4. Juli 2005)

Hi!
Hoffe das Thema ist hier noch nicht aufgekommen.
Hab'n kleines Problemchen mit dem routing unter Linux.
Situation:

```
_
1Windows Desktop _|    192.168.1.3
1 Router         _*    192.168.1.1             ?-<|
1 Linux-"Server" _|    192.168.1.2 & 192.168.0.1 _^
1 PDA   ^|^                          192.168.0.2 _^
```
Die beiden Workstations sind mit dem Router verbunden und kommen in's iNet. Der PDA mit WLAN soll sich nun auch mit reinhängen können. Um dies zu realisieren sind am PDA und Linux-"Server" WLAN vorhanden und auf Ad-Hoc konfiguriert. Vom PDA aus kann aich auch den Linux-"Server" pingen etc. - er soll aber in's Netz!
Bin mir ziemlich sicher das sich das per Linux-Shell regeln lässt. Nur wie?


```
route add -net 192.168.0.0/24 wlan0
```
lässt mich schonmal den PDA mit dem "Server" kommunizieren.
aber wie muss den nun der Gateway aussehen bzw. wie lautet denn die Syntax um nun für alle Anfragen auf wlan0 an den Gateway von eth0 weiterzuleiten?


----------



## superharry (5. Juli 2005)

also ich würd mal meinen du must noch mindestens das subnetz und den gateway eintragen
also route add -net 192.168.0.0/24 gw <router ip> nm < nim die die bei den anderen auch steht> wlan0

das mit den nm is bei jeder distrie anders also must mal in de man schauen

egentlich brauchst du auch bloß die befehle nehmen  die du für die workstations genommen hast und einfach die IP's austauschen!


----------



## TeCe (5. Juli 2005)

mmmh...jein!
Die Workstations zu denen ich auch den Linux-"Server" zähle bekommen vom DHCP des Routers ihre IPs.
Der PDA soll über den Linux-"Server" mit in das lokale Netz geroutet werden.

Was genau meinst du mit Subnetz?
Die Subnetzmaske gebe ich doch durch 192.168.0.0*/24* mit?
gw ist eigentlich auch klar - aber!
Wenn ich versuche den gw für mein lokales Netz mitzugeben sagt er immer mit freundlichen grossen Buchstaben "Zielnetz nicht erreichbar".
Ich glaube fast vielmehr, dass ich die Paketumleitungen per iptables veranstalten muss - obwohl ich das für unnötig aufgebläht halte...
habe es übrigens auch schon mal mit

```
route add -host 192.168.0.2 nm 255.255.255.0 gw 192.168.1.1
```
probiert...leider auch ohne erfolg :-/


----------



## superharry (6. Juli 2005)

ok stimmt mit dem /24 gibst das Subnetz an !
aber um was klar zu stellen! du willst mitten PDA übern "Linux - Server" in netz?

da must im PDA die Linux server IP als route eintragen! DNS Server eintragen! 
und im "Server" hab ich so gemacht!

```
echo "1" > /proc/sys/net/ipv4/ip_forward
```
IP weiter leitung anschalten!!

```
modprobe iptable_nat
```
das iptables nat in dern Kernal irgentwie verkuppeln

```
iptables -t nat -A POSTROUTING -o dsl0 -j MASQUERADE
```
das Masquarding anschalten must dann noch das dsl0 durch dein zugang zum netz eth0 oder was weiß ich tauschen!!

und zur Port Weiterleitung nem ich das 

```
iptables -t nat -A PREROUTING -i dsl0 -p tcp --dport 4711 -j DNAT --to 192.168.0.2:4711
```

hoffe es hilft dir


----------



## TeCe (7. Juli 2005)

Also muss ich doch noch u.A. iptables dazusetzen.
Nun gut, werd es Morgen in Ruhe durchspielen und anschliessend berichten.

Vielen Dank schonmal soweit - erscheint recht logisch!


----------



## superharry (7. Juli 2005)

TeCe hat gesagt.:
			
		

> Also muss ich doch noch u.A. iptables dazusetzen.
> Nun gut, werd es Morgen in Ruhe durchspielen und anschliessend berichten.
> 
> Vielen Dank schonmal soweit - erscheint recht logisch!


mit iptables nich wirklich das is bloß was mitten kernel aktievieren! 
iptables befehle sehen viel komplizierter aus!!

ok ich werd dann mal warten   
MFG mario


----------



## TeCe (8. Juli 2005)

Naja das NetworkAdressTranslation is doch schon in deinem Beispiel per iptables geregelt.

Habe das auch heut Mittag kurz durchgespielt...leider scheint da noch immer etwas nicht zu greifen :-/
Bin leider auch nicht sonderlich belesen was "iptables" angeht. Habe mich da immer schön mit den gegebenen WebInterfaces zufriedengegeben.
Kann ich denn nur portforwarding machen?
Gibt es da nicht die Möglichkeit zu tunneln?
Oder sollte ich den plumpen Versuch wagen und für beide Interfaces des Linux-"Server"s die selbe Netz-ID nehmen?
Kann ja eigentlich garnicht..

Ich hoffe ich hab jetzt endlich das richtige Wort für meine Situation gefunden:
Ich will *tunneln*!


----------



## superharry (8. Juli 2005)

TeCe hat gesagt.:
			
		

> Naja das NetworkAdressTranslation is doch schon in deinem Beispiel per iptables geregelt.
> 
> Habe das auch heut Mittag kurz durchgespielt...leider scheint da noch immer etwas nicht zu greifen :-/
> Bin leider auch nicht sonderlich belesen was "iptables" angeht. Habe mich da immer schön mit den gegebenen WebInterfaces zufriedengegeben.
> ...



hä also tunneln is was anderes! dabei tunnelt man auf bestimmten port ein rechner zu einem 3. der ein HTTP -Proxy laufen hat und mit dem internet verbunden is! auf deinem router läuft aber auch kein Proxy oder?

und du wolltest Routen ! haste gesagt! und wen du deine Fehler nich beschreiben kannst dann nim dir das hier zur hand! an dem Text hab ich es auch hin bekommen! *g*

klick


----------



## Dennis Wronka (16. Juli 2005)

Wenn Dein WLAN eine andere Netzwerkadresse als Dein LAN hat, dann sollte es kein Problem sein mit NAT zu arbeiten.


----------



## TeCe (16. Juli 2005)

Um ganz ehrlich zu sein hab ich mich nicht weiter mit meiner kleinen Problematik auseinandergesetzt...
Seitdem portforwarding in's Spiel gekommen ist, bin ich mir nicht ganz sicher ob es wirklich das ist nach dem ich suche...
Oder kann man per iptables sagen dass nur Anfragen von der IP *192.168.0.2 auf wlan0*(also meinem PDA) in's lokale Netz bzw. router->internet weitergeleitet werden sollen? Und wie werden dann die Antworten von Ausserhalb wieder an den PDA weitergeleitet? Steht dann in allen Weitervermittelten Paketen die MAC&Route zu meinem PDA?

Könnt Ihr mir da ein Beispiel geben, wie die Regeln lauten, um uneingeschränkt Ports durchzurouten - aber nur vom/zum PDA?

Danke nochmals!


----------



## Dennis Wronka (16. Juli 2005)

Mit Port-Forwarding musst Du nur arbeiten wenn Du wenn aussen auf dem PDA zugreifen willst.
Ansonsten reicht simples Masquerading (SNAT)

Beispiel:

```
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.2 -j MASQUERADE
```

Damit das funktioniert muss auch das Routing aktiviert sein.
Das geschieht mittels

```
echo "1" > /proc/sys/net/ipv4/ip_forward
```

Das sollte eigentlich alles sein, vorausgesetzt Du hast nicht noch andere Regeln auf der Linux-Box konfiguriert die evtl. was gegen eine solche Verbindung haben koennten.

Der Linux-Rechner muss den Router als Default-Gateway haben, der PDA den Linux-Rechner.

Ich bin uebrigens nicht ganz sicher ob in POSTROUTING das Input-Interface (-i) zur Verfuegung steht.
Wenn ich gleich noch die Zeit hab werd ich mal nachsehen.

Nachtrag:
Okay, POSTROUTING hat das Input-Interface nicht, hab die Regel etwas geaendert.
Das maskiert alle Pakete die von 192.168.0.2 kommen und auf eth0 (der Netzwerkkarte fuer's LAN) rausgehen.


----------



## TeCe (16. Juli 2005)

okidoki - hört sich gut an...
werde das gleich durchspielen!


----------



## Dennis Wronka (16. Juli 2005)

Bitte meine Aenderungen beachten!
POSTROUTING hat kein Input-Interface.


----------



## TeCe (16. Juli 2005)

Soooh...irgendwie will das noch immer nicht so recht:

```
cat /proc/sys/net/ipv4/ip_forward
--1

iptables -L -t nat
--Chain PREROUTING (policy ACCEPT)
--target     prot opt source               destination
--
--Chain POSTROUTING (policy ACCEPT)
--target     prot opt source               destination
--MASQUERADE  all  --  192.168.0.2          anywhere
--
--Chain OUTPUT (policy ACCEPT)
--target     prot opt source               destination
--

ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
--wlan0      Protokoll:Ethernet  Hardware Adresse 00:00:00:00:00:00(sagichnich)
--          inet Adresse:192.168.0.1  Bcast:192.168.0.255  Maske:255.255.255.0
--          inet6 Adresse: fe80::204:23ff:fe5a:46da/64 Gültigkeitsbereich:Verbindung
--          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
--          RX packets:92 errors:0 dropped:0 overruns:0 frame:0
--          TX packets:180 errors:0 dropped:0 overruns:0 carrier:1
--          Kollisionen:0 Sendewarteschlangenlänge:1000
--          RX bytes:6642 (6.4 KiB)  TX bytes:21016 (20.5 KiB)
--          Interrupt:11 Basisadresse:0xe000 Speicher:d0206000-d0206fff
--
```
die Ad-Hoc Verbindung mit PDA und linux-"server" funktioniert.
Ich kann sowohl die 192.168.0.1 als auch die 192.168.0.2 pingen.
Gateway und DNS des PDA ist 192.168.0.1

Fehlt mir da vielleicht nur noch ein kleiner Parameter beim ifconfig wlan0 um den Gateway anzugeben?


----------



## superharry (16. Juli 2005)

TeCe hat gesagt.:
			
		

> Fehlt mir da vielleicht nur noch ein kleiner Parameter beim ifconfig wlan0 um den Gateway anzugeben?



ich würd erstmal testweise das iptables lassen also ohne die firewal einstellungen!

kommt der linux server ins netz? den der gateway is dafür da um dem rechner (PDA) zusagen über welchen rechner (linux -server) er ins netz gehen soll.
also musste das nur bei dem rechner angeben der ins netz SOLL!  

edit: das masquarding mittels iptables musst natürlich mit nehmen ich war bloß etwas verwird weil bei mir bei nem iptables nichts kommt also keine einträge   
ich weiß hatt enoch keine zeit mich damit zu beschäftigen!


----------



## TeCe (16. Juli 2005)

hmmmm...bin noch immer am rumfriemeln...

über's ifconfig kann man ja scheinbar keinen gateway mitgeben...also wieder zurück zu route:

```
route
--Kernel IP Routentabelle
--Ziel            Router          Genmask         Flags Metric Ref    Use Iface
--192.168.0.0   192.168.0.1   255.255.255.0   UG    0      0        0 wlan0
--192.168.1.0   *               255.255.255.0   U     0      0        0 eth0
--default         192.168.1.1          0.0.0.0         UG    0      0        0 eth0
```

Bitte, bitte sagt mir das da nur ein einfacher Fehler drin ist...das Thema sollte doch eigentlich echt nicht so schwer sein...?
Wird mir langsam peinlich, wie blöd ich mich scheinbar anstelle...


----------



## Dennis Wronka (16. Juli 2005)

Laeuft auf dem Linux-Rechner der DNS-Server?
Ansonsten wird der PDA die Namen nicht aufloesen koennen und somit auch nicht in's Internet kommen.


----------



## TeCe (16. Juli 2005)

uhm...DNS...?
bisher hat es gereicht den DNS meines Routers zu nutzen...
Aber selbst der lässt sich nicht per IP erreichen...ich glaub wirklich das es nur noch an der route scheitert...


----------



## Dennis Wronka (17. Juli 2005)

Weil Du sagtest, dass Du beim PDA den Linux-Rechner angegeben hattest.

Moeglicherweise koenntest Du mittels tcpdump oder Ethereal mal den Netzverkehr beobachten und gucken ob Pakete die vom PDA kommen auch in's LAN weitergeschleudert werden.


----------

