• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

martian source, Server verfügt über zwei Netzwerkkarten?

Hallo zusammen!

Ich habe ja nun schon viele Google-Seiten und auch Foren gewälzt, aber keine eindeutige Lösung gefunden.

Ich habe auf einem SuSE Linux 9.1 Server DHCP und DNS innerhalb eineses Netzes 10.0.0.0 laufen. Der Server verfügt über zwei Netzwerkkarten. Des weiteren wird der Internet-Zugang über eine Route zu einem DSL-Router hergestellt.

Router = 10.0.10.1
Server eth0 = 10.0.10.2
Server eth1 = 10.0.10.3

Nun bekomme ich aber diese berüchtigten martion source Fehlermeldungen:

Nov 21 21:13:42 server kernel: martian source 10.0.10.1 from 10.0.10.2, on dev eth1

oder

Nov 21 21:17:06 server kernel: martian source 10.0.10.255 from 10.0.10.2, on dev eth1

Wie kann ich das Problem beseitigen. Das Netzwerk funktioniert einwandfrei. nslookup, dig, host etc. funktionieren ohne Probleme. Ich weiß auch, dass man die martian soruce Meldungen unterdrücken kann, aber das ist ja nicht die Lösung der Ursache. Was ist also zu tun?

Danke für eure Hilfe!
 

Martin Breidenbach

Ultimate Guru
Das Problem kann man beseitigen indem man das Netzwerk richtig konfiguriert. eth0 und eth1 liegen im selben Segment. Die Fehlermeldung bedeutet daß die eine Karte Pakete von der anderen Karte sieht und Linux sich darüber wundert. Stecken die etwa beide am selben Hub/Switch ?
 
OP
H

Hubert Kah

Newbie
Ja, es sind beide Netzwerkkarten am selben Router und somit im selben Netz. Es sollten ursprünglich Anfragen an Apache über eth1 gehen.

Auf dem Server laufen:
DHCP (für Anschlussmöglichkeiten von fremden Rechnern, eigene Netze/Hosts sind statisch)
DNS
Apache

Netzwerkkarten und Hostnames:
eth0 = server
eth1 = www

Wenn ich nun der eth1 ein anderes Netz verpasse (beispielsweise 10.0.20.0) kommt es ja auch zu Problemen, weil beide über den selben Router laufen. Gibt es keine andere Möglichkeit, als einen zweiten Router? Lassen sich nicht Anfragen, die für den Apache bestimmt sind, an eth1 weiter leiten?
 

gaw

Hacker
Kurios, du hast beide Netzwerkkarten am gleichen Router angeschlossen? Der Sinn solcher Handlungsweisen bleibt mir verborgen. Was das ganze mit dem Apache zu tun hat ist mir ebenfalls nicht ganz klar. Warum soll er denn auf einer zweiten physikalischen Schnittstelle laufen? Wer soll denn von wo aus auf den Webserver zugreifen? Für wen ist der DNS und der DHCP bestimmt, für die Rechner die sonst am Router hängen? Das könnte bei DHCP zum Problem werden wenn die anderen Rechner nur über einen Router zu erreichen sind.

Vielleicht skizizierst du uns wie dein Netz aussieht bzw. aussehen soll.

mfG
gaw
 
OP
H

Hubert Kah

Newbie
Nein, Missverständis!

Es soll wie folgt aussehen:
Server eth0 = 10.0.10.2 für DNS, DHCP und Fileserver
Server eth1 = 10.0.10.3 für Apache

Hostname auf eth0 = server
Hostname auf eth1 = www

Der Router läuft ohne DNS- oder DHCP-Funktion nur als reiner Router.

Workstation sind von 10.0.10.10 - 10.0.10.39 im DHCP fest vergeben und im DNS mit jeweils IP und Hostname fest angegeben. 10.0.10.40 - 10.0.10.49 sind im DHCP dynamisch für Rechner, die temporär im Netzwerk angeschlossen werden, zu vergeben.

Letzendlich geht es auch darum, dass bestimmte Server über eine andere Netzwerkkarte laufen sollen, um bessere Auswertungen der Log-Dateien (Traffic, welcher Server, welche Netzwerkkarte, etc.) zu erlauben. Apache muss hier als schlechtes Beispiel gesehen werden, da er ja eigene Log-Files anlegt. Generell soll aber auch Apache über eine eigene Karte laufen.
 

gaw

Hacker
Eine Antwort auf meine Fragen war das nicht, und es ist nicht verständlicher geworden was du vorhast. Ich kann nur raten wie dein Netz aussieht. Selbstverständllich lassen sich Anfragen mit verschiedenen Techniken umleiten nur das ganze hat keinen Zweck wenn das Netz nicht korrekt eingerichtet ist.

Punkt 1: Dein Apache muss nicht an einer zweiten Netzwerkkarte hängen.

Punkt 2: Auf keinen Fall sollen 2 Hostnamen aus dem gleichen Netz vergeben werden, weil sonst die Routen nicht mehr funktionieren.

Wenn du eine Route für das Netz 10.0.10.0/24 auf einen Server einrichten willst und zwei Netzwerkarten hast weiß der Rechner nicht über welche Netzwerkkarte er das schicken soll. Nehmen wir an du gibst der zweiten Netzwerkkarte eine 10.0.11.1/24 dann lassen sich die Pakete umleiten.

Die Route sieht dann so aus, dass alle Pakete dessen Netzwerkadresse 10.0.10.0 betragen nach eth0, und alle Pakete desses Ziel-Ip im Netz 10.0.11.0 liegen nacht eth1 geschickt werden. Die Netzwerkadresse wird dabei aus der bitweisen AND-Verknüpfung zwischen Hostadresse und Netzwerkmaske ermittelt.

Deine Konfiguration ist aber nicht eindeutig. Zudem sieht dein Rechner Pakete die von ihm selbst stammen eine sehr inkonsistente Situation.

Aber selbst wenn du die Netzwerkkarte umbenennst hast du immer noch eine höchst seltsame Konfiguration. Dann hast du nämlich das Problem, dass deine zweite Netzwerkkarte gar nicht gebraucht wird, es liesse sich nämlich über 10.0.10.2 ebenso auf die 10.0.11.3 zugreifen. Normalerweise müsste man dann wenn der Zugang über die 10.0.11.3 erzwungen werden soll die entprechende Route wieder löschen und einen zweiten Router einsetzen mit wiederum zwei Netzwerkkarten, der zwischen dem LAN und eth1 eingebaut wird.

Es gäbe natürlich Möglichkeiten da zu tricksen und auf einen Router zu verzichten zum Beispiel in dem du auf den Clients mit 10.0.11.x aliasen arbeitest. Nur das ist angesichts dessen was du willst extrem umständlich. Es gibt durchaus bessere Möglichkeiten Dienste zu überwachen als eine Schnittstellenstatistik über ein physikalisches Interface.

Mein Rat daher: Kappe einfach die zweite Netzwerkverbindung und löse die Adressenbindung in der httpd.conf des apache.


mfG
gaw
 
Oben