Re: Umgehen der routing table / Manipulation der lokalen arp table

From: <ib(at)int80h.de>
Date: Mon, 29 May 2006 22:25:38 +0200

Zitat von Alexander Morlang <alx(at)dd19.de>:

> Markus schrieb:
>> Hallo Liste,
>>
>> gibt es eine praktikable Moeglichkeit, die direkte Kommunikation
>> zwischen Rechnern in demselben physikalischen Subnet zu ermoeglichen,
>> ohne dass die Kommunikation ueber das "default gateway" erfolgt? Dabei
>> ist allerdings jeder Rechner nur in seinem eigenen Subnet, und kann
>> somit "logisch" nur mit dem default gateway kommunizieren. Die
>> Anforderung ist, dass auf den Rechnern selbst nichts geaendert werden
>> soll, sondern nur auf dem gateway.
>>
>> Hintergrund und Ziel ist es, die Last des zentralen Routers (default
>> gateway) zu senken, und den Rechnern eine direkte Kommunikation
>> untereinander zu ermoeglichen. Jeder Rechner hat nur IP-Adressen aus
>> jeweils einem logischen Subnetz, z.B.:
>>
>> Rechner 1: 192.168.1.100/24 (gw 192.168.1.1)
>> Rechner 2: 192.168.2.100/24 (gw 192.168.2.1)
>> Rechner 3: 192.168.3.100/24 (gw 192.168.3.1)
>> usw.
>>
>> Eine Variante waere natuerlich, jedem Rechner eine IP-Adresse aus jedem
>> Subnet zu verpassen. Aenderungen auf den Rechnern selbst sollten
>> allerdings nicht durchgefuehrt werden muessen, also scheidet diese
>> Moeglichkeit aus.
>>
>> "Proxy ARP" kommt auch in den Sinn, scheint aber auch Aenderungen auf
>> den Rechnern zu benoetigen. Beispiel:
>>
>> Proxy ARP-Eintrag auf dem gateway:
>>
>> ? (192.168.1.100) at 00:0e:2e:56:cb:8f on fxp0 permanent published
>> [ethernet]
>>
>> Wenn ich vom Rechner 192.168.2.100 einen ping auf 192.168.1.100 absetze,
>> versucht 2.100 gar nicht erst, die MAC-Adresse von 1.100 herauszufinden.
>> Was ja auch ok ist, warum sollte er auch... setze ich nun auf 2.100
>> folgende statische route:
>>
>> route add -net 192.168.1.0/24 -iface fxp0
>>
>> Dann klappt das:
>>
>> 02:41:45.757882 arp who-has 192.168.1.100 tell 192.168.2.100
>> 02:41:45.757976 arp reply 192.168.1.100 is-at 0:e:2e:56:cb:8f
>>
>> Und der Eintrag findet sich in der lokalen arp table auf 192.168.2.100
>> wieder. Was allerdings wiederum ueberhaupt nichts mit Proxy ARP zu tun
>> hat, den Zusatz "published" haette man auch weglassen koennen.
>>
>> Bringt mich also alles nicht wirklich weiter. Ich braeuchte irgendeine
>> Methode, bei der die Rechner fuer bestimmte Subnetze immer die MAC
>> erfragen und speichern moechten und das default gateway die
>> entsprechende MAC zurueckliefert. Und das ohne die lokale Konfiguration
>> / routing table eines Rechners manuell aendern zu muessen.
>>

Ich denke, dass Du hier einen kleinen Denkfehler hast. Ein default gateway in
klassischem Sinne, hat erst einmal primär an sich nichts mit MAC-Adressen zu
tun.

Wenn ein Rechner mit einem anderen komminizieren moechte (in diesem Beispiel
Ethernetpakete austauschen) braucht er die MAC-Adresse des anderen.
Dazu werden
Broadcast ins Ethernet gesendet, "Lieber Rechner mit IP 192.168.2.100,
sage mir
bitte deine MAC-Adresse.

Und diese Broadcastpakete gehen nur an die Rechner die in der selben
Broadcastdomaene sind, in der der Rechner selbst ist. Das sind dann z.B. alle
50 Ports auf dem Layer 2 Switch an dem alle Rechner haengen. Der Rechner
192.168.0.100 verraet dem Fragendem seine MAC und beide kommunizieren. Die 2
tcpdump Zeilen die Du geschrieben hast.

Falls man nun zwei _separate_ Netze hat die eine PPP Verbindung
verbindet, geht
ARP nicht mehr (Das Aufloesen von MAC-Adressen mit Hilfe von
IP-Adressen), weil
Broadcasts von PPP nicht unterstuetzt werden. Die Grenze der Broadcastdomaene.
Um diese Domaenen nun mit einander zu verbinden ist der ARP-Proxy da, der
verbindet beide. (Wobei ich praktisch noch nichts mit ARP-Proxys
gemacht habe.)

Die Broadcastdomaene wird bei IP noch zusaetzlich eingeschraenkt. Sie ist bei
einem Klasse C-Netz /24 kleiner ist als bei einem B-Netz, A-Netz.

Bcast:192.168.170.255
Bcast:172.16.255.255
Bcast:10.255.255.255

Wenn der Rechner das Zielnetswerk auf der Netzwerkkarte konfiguriert hat,
schickt er es selbst ins Ethernet benutzt ARP. Wenn das Zielnetzwerk nicht auf
der Netzwerkkarte konfiguriert ist schickt er es dem Router fuer das Netzwerk
oder dem default gateway, bei dem router hoert ARP (ohne ARP-Proxy) auf, der
Rest geht ueber IP.

Ich habe gerade aus Interesse mal die Broadcastaddresse/Netzmaske um ein Byte
verschoben:

root(at)node1(NEU) # ifconfig eth1:0 192.168.172.61 netmask 255.255.0.0 broadcast
192.168.255.255

root(at)node2(NEU) # ifconfig eth1:0 192.168.171.62 netmask 255.255.0.0 broadcast
192.168.255.255
root(at)node2(NEU) # ping 192.168.172.61
PING 192.168.172.61 (192.168.172.61) 56(84) bytes of data.
64 bytes from 192.168.172.61: icmp_seq=1 ttl=64 time=0.212 ms
64 bytes from 192.168.172.61: icmp_seq=2 ttl=64 time=0.106 ms
64 bytes from 192.168.172.61: icmp_seq=3 ttl=64 time=0.094 ms

--- 192.168.172.61 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.094/0.137/0.212/0.053 ms

Falls es Dir jetzt nur darum geht, dass ARP ueber die Netze
funktioniert kannst
Du den ARP-Proxy am Router einsetzen. Damit erhoeht sich die Last auf dem
Router. Die bestehende Konfiguration der Rechner kann so bleiben. (Meine
Meinung: Ich finde diese Loesung nicht so schoen weil eine Broadcastdomaene
schon existiert und das Problem wegen der zu kleinen Maske entsteht.)

Ich wuerde demnach empfehlen die Maskenlaenge von 24 Bits zu senken und deren
Netze, auf 172.16.1.0-172.31.255.0 Netze (wie von Susanne angemerkt). Es
muessen ja keine /16 Bit sein. Mit 192.168.1.0/16 habe ich keine Erfahrung in
der Praxis falls 192.168.1.0 bei Dir weiter bestehen soll.

http://rolfrost.de/cgi-bin/ipv4.cgi

oder iptab helfen wie gross die Maske sein muss, bei bestimmter Anzahl
Rechner.

Wenn man es sauber "logisch" von einander trennen moechte kann man ja VLAN's
(ISL, IEEE 802.1q ) einsetzen. Das drifftet aber gerade weg und hat wenig mit
zu tun.

Aus deiner E-Mail ist mir im Moment auch kein Grund entsprungen warum man die
Konfiguration von den Rechnern nicht veraendern sollte. In dem Netz was ich
betreue sind ca. 300 Computer, mit 2 DHCP und DNS Servern klappts eigentlich
ganz gut. (Nur hast Du evtl. ein paar dutzend Programme auf den Clients
konfiguriert die feste IP's eingetragen haben. Deswegen wuerde ich das auch
verstehen. Man kann im DNS den Hostname der DHCP-Clients automatisch eintragen
lassen wenn diese Ihre IP-Konfiguration holen. Das waere eine Idee das ganze
weich zu migrieren.)

Korrigiere mich bitte jemand wenn hier Humbug steht.

Schoenen Gruss,
Igor

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 29 May 2006 - 22:30:54 CEST

search this site