nicht nur Grundsatz: NAT, masqu., 'besonderer' router?

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
empty_string
Beiträge: 712
Registriert: 19.07.2003 21:26:07

nicht nur Grundsatz: NAT, masqu., 'besonderer' router?

Beitrag von empty_string » 24.11.2004 00:22:50

HalliHallo,

ersteinmal möchte ich sagen, dass ich nicht sicher bin ob ich hier Fragen sollte, aber ich vermute einfach grundlegende Verständnissprobleme bei der Sache.

Folgender Aufbau (IP Addressen entsprechen nicht genau):
Rechner [1] befindet sich in einen Netzwerk (Wohnheim) und hat eine feste IP, festgelegtes gateway usw., kurz, die /etc/network/interfaces Konfigurationsdatei sieht so aus:

Code: Alles auswählen

auto lo eth0
iface lo inet loopback
address 141.123.123.12
netmask 255.255.255.0
network 141.123.123.0
broadcast 141.123.123.255
gateway 141.123.123.1
.

Ich möchte ebenfalls mit einen [2]. Rechner ins Internet. Eine 2. IP bekomme ich nicht. Bleibt nur der Weg über Rechner [1], Stichwort masquerading.

[
Als ich noch eine dialin Verbindung hatte, besaß ich ja auch noch ein ippp0 interface, das ist jetzt im Prinzip doch gleich eth0. Also nur noch ein Interface. Die dialin Verbindung wurde auch von mehren Rechnern benutzt, das alles 'besorgte' ein firewallscript(lutel's), welches die iptables, masquerading und sonstige Einstellungen gleich vornahm. Theoretisch bräuchte ich ja nur das ippp0 interface in eth0 umzuwandeln und der Rest könnte bleiben.
Alternativ funktioniert auch alles nach der debianforum netzwerk checkliste, da fehlt dann nur das firewall feature, aber vom Grundsatz dürften es ja die selben Befehle sein.
]

Desweiteren kann [2] nur eine Addresse in der Art 192.168.0.1 haben. Also haben [1] und [2] zwar dieselbe subnetmask aber unterschiedliche IP Klassen.
Hier komme ich doch mit masquerading nicht mehr weiter, brauche ich dnat? Ich möchte nochmal betonen das Rechner [2] _ausschließlich_ hinter [1] versteckt sein soll, sonst also nicht nach außen sichtbar, jeglicher Verkehr läuft über Rechner [1] und wird auch nach außen so weitergeleitet, als ob er vom selbigen kommen würde (weil das von den admins nicht gerne gesehen wird wenn man sich wild IPs verteilt).

Irgendwo steckt da doch ein Denkfehler? Alle howtos die ich gelesen habe gehen auf diesen Fall gar nicht ein, es sein denn, es wurde beschrieben und ich wusste es nur nicht. Ansatzpunkte, auf die ich gestoßen bin, waren:
- nur lösbar über 2. Netzwerkkarte (kann ich mir irgendwie nicht vorstellen, [1] und [2] sind z.Z. über hub verbunden)
- lösbar mit virtuellen Interface wie eth0:1 (dann wird doch aber die Addresse von eth0:1 nach außen sichtbar?!).


Bin jetzt ziemlich konfus und bitte um Aufklärung aus dem Wirrwarr :) .
Tausend Dank schonmal,
empty.
Debian seit 2001, jetzt mit trixie.

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 24.11.2004 09:35:17

Du kannst probieren auf Rechner 1 dem eth0 eine zweite IP zuzuweisen.

Code: Alles auswählen

ifconfig eth0:int 192.168.0.x netmask 255.255.255.0
Dann antwortet deine Karte in Rechner 1 schonmal aus Anfragen von den beiden Netzen.

Rechner 2 sollte diese IP dann als Gateway eingetragen haben, und auf Rechner 1 muß dann von eth0:int auf eth0 geroutet werden. Wie das genau geht kann ich auf die schnelle nicht sagen, aber ist schonmal ein Lösungsansatz
- lösbar mit virtuellen Interface wie eth0:1 (dann wird doch aber die Addresse von eth0:1 nach außen sichtbar?!).
Ob du nach außen sichtbar bist liegt daran ob du das Routing von eth0:int auf eth0 über NAT oder MASQUERADE machst !

EDIT: so solte es gehen
In meiner Firewall: (mit Masquerade)

Code: Alles auswählen

iptables -t nat -A PREROUTING -i $IFACE_EXT -p tcp -m multiport                 --dport $PORTS_TCP -j DNAT --to $DEST_HOST 
iptables -t nat -A PREROUTING -i $IFACE_EXT -p udp -m multiport \
                --dport $PORTS_UDP -j DNAT --to $DEST_HOST
iptables -A POSTROUTING -o $IFACE_EXT -t nat -j MASQUERADE
mußt halt noch die Variablen ersetzten ! Schreib mal ob das ging (interessiert mich auch ob das mit einem eth geht, es sollte eigendlich schon gehen)
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 24.11.2004 15:30:46

Nach Netzwerk verschoben...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Benutzeravatar
empty_string
Beiträge: 712
Registriert: 19.07.2003 21:26:07

Beitrag von empty_string » 24.11.2004 19:38:06

Sorry....

Hallo knecht,
danke für deine Antwort, ich hätte nicht gedacht das das soweit klappt.
Folgendes habe ich gemacht:

Code: Alles auswählen

route add -net 192.168.0.0 netmask 255.255.255.0 dev "eth0:int"
ifconfig eth0:int 192.168.0.10 netmask 255.255.255.0
iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dport 20,21,22,25,37,53,80,110 -j DNAT --to 192.168.0.11
iptables -t nat -A PREROUTING -i eth0 -p udp -m multiport --dport 20,21,22,80 -j DNAT --to 192.168.0.11
iptables -A POSTROUTING -o eth0 -t nat -j MASQUERADE
Nun können sich die Rechner gegenseitig pingen. Vom client [2] kann ich eth0 (192.168....) und eth0:int (141.....) pingen. Allerdings kann ich keine IP im Internet pingen, oder sonstwie online. Da scheint noch irgendwas zu fehlen. Außerdem ist mir die Funktion dieses virtuellen devices nicht ganz klar :/ . Aber bin froh das es erstmal Fortschritte gibt :) .
Debian seit 2001, jetzt mit trixie.

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 24.11.2004 22:14:41

Außerdem ist mir die Funktion dieses virtuellen devices nicht ganz klar
Deine Netzwerkkarte antwortet jetzt auf 2 IP Adressen. Halt wie als wärens 2 getrennte Karten.

Sehr viel mehr weiß ich nicht davon, nur das es so irgendwie geht ! Wahrscheinlich fehlt noch irgendeine Kleinigkeit, aber da muß dir jemand anders weiterhelfen . . .

Aber wenns mal geht interessiert es mich auch sehr wie es geht.
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
empty_string
Beiträge: 712
Registriert: 19.07.2003 21:26:07

Beitrag von empty_string » 24.11.2004 23:35:41

Ich denke ich weiß jetzt woran es liegt, aber dazu hätte ich gleich noch ne Frage.
Bin jetzt soweit das ich im Netzwerk auch online bin.

Um zu surfen musste ich bisher in meinen Browser einen proxy (vom wohnheim) angeben.
Auf Rechner [2] kann ich nur surfen wenn ich genau diesen proxy angebe!
Aber: Bekommt dann nicht der proxy die Anfragen von 192.168.... ??? Weil das darf nicht passieren, denn ich darf mit keiner anderen IP im Netzwerk sein als die mir vorgegebene 141.... .

Oder bekommt der proxy AUCH von Rechner [2] nur Anfragen über die IP (141...) von Rechner [1] ? Das wäre noch ziemlich wichtig zu wissen!

Thx nochmals :),
empty
Debian seit 2001, jetzt mit trixie.

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 25.11.2004 09:28:42

Ich habe noch nicht mit Proxy gearbeitet. Du kannst mal mit ethereal auf Computer [1] dein Interface belauschen, und mal schauen welche source IP die Packete haben die zum Proxy gehen.

Und schreib deine Lösung wenns geht :!:
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
empty_string
Beiträge: 712
Registriert: 19.07.2003 21:26:07

Beitrag von empty_string » 25.11.2004 22:53:31

Du meinst ich soll eht0:2, das virtuelle Interface belauschen oder eth0?

Also es funktioniert so wie eigentlich schon beschrieben:

Code: Alles auswählen

ifconfig eth0:2 192.168.0.10 netmask 255.255.255.0 broadcast 192.168.0.255 up
route add -net 192.168.0.0 netmask 255.255.255.0 dev "eth0:2"
iptables -t nat -A PREROUTING -i eth0 -p tcp -m multiport --dport 20, 21,80,... -j DNAT --to 192.168.0.11
iptables -t nat -A PREROUTING -i eth0 -p udp -m multiport --dport 20, 21, 80,... -j DNAT --to 192.168.0.11
iptables -A POSTROUTING -o eth0 -t nat -j MASQUERADE
Wichtig scheinen dabei zu sein, das virtuelle Interface und die route. Das läuft jetzt sogar integriert in dem firewallscript, aber ansich funktioniert das so auch alleine.

Nur verstehe ich das virtuelle device nicht so recht. Das hieße ja, man könnte sich generell ne 2. Netzwerkkarte sparen (mal vom traffic über die eine abgesehen). Irgendwelche Unterschiede muss es ja geben. Und dann das, wie schon beschrieben, mit den proxy, wo ich mir nicht sicher bin von welcher Addresse der jetzt Anfragen bekommt. Vielleicht bekomm ich es mit ethereal heraus.
Debian seit 2001, jetzt mit trixie.

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 25.11.2004 23:00:31

Man kann sich ne zweite Karte sparen, aber die 5€ hab ich noch :wink:

Belausche das Interface das ins Netz geht, müßtest ja dann sehen welchen Absender die Packete ins Internet haben
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
empty_string
Beiträge: 712
Registriert: 19.07.2003 21:26:07

Beitrag von empty_string » 26.11.2004 17:19:19

Ich weiß nicht ob das gut aussieht, allerdings benutze ich ethereal zum ersten mal.
Habe mal von Rechner [2] Pings an http://www.freenet.de geschickt, während ethereal auf Rechner [1] eth0 belauscht hat. Die Netzwerkinternen Addressen sind abkekürzt, nur falls jemand hier was dagegen hat wenn sie so da stehen. Gleichzeitig habe ich mal alles kommentiert, was ich mir so DACHTE, was es heißt.

Rechner [2]: 192.168.0.11
Rechner [1]:
192.168.0.10 - eth0:2
141.x.x.a - eth0

Code: Alles auswählen

No.     Time        Source                Destination           Protocol Info
      1 0.000000    192.168.0.11          www.freenet.de        ICMP     Echo (ping) request
Ping von [2] nach freenet.de

      2 0.000089    141.x.x.a                 www.freenet.de        ICMP     Echo (ping) request
Ping von [1] eth0 nach freenet.de

      3 0.013489    www.freenet.de        141.x.x.a                 ICMP     Echo (ping) reply
Ping reply von freenet nach [1] eth0

      4 0.013507    www.freenet.de        192.168.0.11          ICMP     Echo (ping) reply
Ping reply von freenet nach [2]

      5 0.216264     141.x.x.a                 141.x.x.255        NBNS     Name query NB DENNIS<20>
von [1] eth0 eine name query NetBios Name Server (??) an die broadcast Addresse

      6 0.216511    141.x.x.b                  Broadcast             ARP      Who has 141.x.x.c?  Tell 141.x.x.b
Broadcast von einer mir unbekannten (maybe nicht relevanten) Addresse + siehe Info

      7 1.001568    192.168.0.11          www.freenet.de        ICMP     Echo (ping) request
Ping von [2] nach freenet

      8 1.001654    141.x.x.a                 www.freenet.de        ICMP     Echo (ping) request
Ping von [1] eth0 nach freenet

      9 1.005320    192.168.0.10           xxxMAC_von_[2]     ARP      Who has 192.168.0.11?  Tell 192.168.0.10
[1] eth0:2 will Hardwareaddresse von [2] wissen, oder so?!

     10 1.005593    xxxMAC_von_[2]     192.168.0.10          ARP      192.168.0.11 is at MAC_von_[2]
[1] eth0:2 wird die _richtige_ Hardwareaddresse von [2] mitgeteilt

     11 1.014882    www.freenet.de        141.x.x.a                ICMP     Echo (ping) reply
Ping reply von freenet nach [1] eth0

     12 1.014896    www.freenet.de        192.168.0.11          ICMP     Echo (ping) reply
Ping reply von freenet nach [2]

     13 1.863334    141.x.x.1                  Broadcast               ARP      Who has 141.x.x.0?  Tell 141.x.x.1
gateway(=141.x.x.1) sendet broadcast um Hardwareaddresse von 141.x.x.0 rauszufinden (wahrscheinlich nicht relevant)

Was mir nicht ganz klar ist, sind die direkten Anfragen von 192.168.0.11 ([1]) an freenet.de und dannach gleich von meiner eth0 Addresse 141.x.x.a. Ich weiß nicht wie ich das deuten soll. Oder kann man an diesen kleinen Beispiel gar nicht erkennen wie die Anfragen aussehen?
(Also wie gesagt, ich möchte, dass ich nach außen nur die 141.x.x.a zeige)

Ich hoffe das ist jetzt nicht zuviel und Du kannst mir nochmal helfen, oder jemand anderes natürlich auch gerne :).

thx schonmal,
emtpy
Debian seit 2001, jetzt mit trixie.

Benutzeravatar
knecht
Beiträge: 1214
Registriert: 08.01.2004 15:33:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von knecht » 26.11.2004 17:48:32

Ich hoffe das ist jetzt nicht zuviel und Du kannst mir nochmal helfen,
Mir wurde hier ja auch schon sehr gedultig geholfen, also mach ich das auch gerne.

Code: Alles auswählen

Oder kann man an diesen kleinen Beispiel gar nicht erkennen wie die Anfragen aussehen? 
Doch sollte reichen. Wenn du in ethereal dann so ein ICMP Packet anklickst siehst du im Programm darunter alle Informationen die das Packet enthält Aber da findest du bei Source und Destination auch nix anderes was schon in der Übersicht steht.


Deine Kommentare müßten so stimmen. Er versendet das ICMP Packet mit der SourceIP von [2], also so wie es nicht sein darf. Aber verlässlich kann ich dir nichts sagen, wäre gut wenn nochmal jemand anderes was dazu sagen könnte.
_________________________________________________
Linux HowTo's, Programmierung, Wallpapers und 3D:
http://www.neoBerserker.de

Benutzeravatar
empty_string
Beiträge: 712
Registriert: 19.07.2003 21:26:07

Beitrag von empty_string » 28.11.2004 22:24:46

Was mir komisch dabei vorkommt ist, dass eigentlich nicht ein und derselbe Ping von 2 Addressen losgeschickt werden kann. Das hieße doch, ein losgeschickter Ping, kommt 2 mal an. Komisch, naja ich schau noch bissl rum oder eröffne nochmal ein threat für dieses Problem.

Dank dir!
empty
Debian seit 2001, jetzt mit trixie.

Antworten