Wie routen Sie den Netzwerkverkehr eines Hosts über einen anderen im selben LAN?

457
zfgo

Host A (Mac OS) hat also IP: 10.1.10.65 und Host B hat IP: 10.1.10.68. Dies ist ein Linux-Ubuntu in einer virtuellen Maschine auf Host A. Ich möchte den gesamten Datenverkehr von Host A durch Host B leiten .

Was ich bisher getan habe, ist, dass ich die IP-Weiterleitung auf Host B aktiviert habe:

sysctl net.ipv4.ip_forward=1 

und auf Host A:

route delete default route add default 10.1.10.68 

Nach diesen Vorgängen kann ich auf Host A gut im Internet surfen, aber ich bin wirklich nicht sicher, ob der gesamte Verkehr jetzt durch Host B geleitet wurde. Ich habe einige andere Beiträge gelesen und sie haben erwähnt, dass sie iptables -t nat -A POSTROUTING -o ethx -j MASQUERADEauf Host B verwendet werden sollen. Ich habe diesen Befehl nicht für Host B verwendet, aber ich bin immer noch in der Lage, das Internet auf Host A zu erreichen. Fehlt mir hier etwas? Wie kann ich feststellen, dass ich den Verkehr durch Host B korrekt weitergeleitet habe? Vielen Dank.

0

2 Antworten auf die Frage

0
atetees

Führen Sie Traceroute 8.8.8.8 auf Host A aus. Im ersten Hop erfahren Sie, auf welcher Maschine der Datenverkehr stattfindet.

0
dirkt

Viele Leute im Internet glauben fälschlicherweise, dass sie iptablesfür das Routing brauchen (was ein Haustier von mir ist).

Sie können das Routing auf Host A mit überprüfen ip route get a.b.c.d, wodurch Sie wissen, wo sich der nächste IP-Hop a.b.c.dgemäß den aktuellen Regeln befindet.

Sie können auch verwendet werden traceroute, oder mtroder ähnlich den tatsächlichen Pfad die Pakete nehmen (solange die Gastgeber sie durch diese zu verhindern, nicht gehen konfiguriert) zu sehen.

BTW, routeist der alte Befehl, ip route ...ist die neuere Version, und einige Routing-Funktionen neuerer Kernel sind nur mit verfügbar ip route.