Wie leite ich den Netzwerkverkehr eines Hosts über einen anderen Host weiter?


9

Ich bin nicht der Systemadministrator unseres Unternehmensnetzwerks, aber ich habe zwei Linux-Workstations (Hosts A und B) mit Root-Zugriff auf beide.

Beide Hosts können sich gut sehen (ssh, ping usw. funktionieren von einem zum anderen). Allerdings kann nur Host A aus unserer Unternehmensfirewall heraus auf das Internet usw. zugreifen. Host B kann nicht.

Frage: Wie kann ich den gesamten (und nicht nur HTTP) ausgehenden und eingehenden Netzwerkverkehr auf Host B über Host A weiterleiten, ohne meinen Systemadministrator einzubeziehen? Im Moment weiß ich nicht, ob ich NAT für Host B verwenden und / oder Host A zu einem Proxyserver und / oder Host A zu einem Router machen müsste.

Auf Host B habe ich versucht, einen route add -host <HostA> gw <HostA's Gateway>Befehl auszugeben , aber es hat nicht funktioniert: Ich konnte pingvon Host B aus nicht auf www.google.com zugreifen. Bitte entschuldigen Sie meine Unkenntnis zu diesem Thema Routing / Netzwerk.

Antworten:


16

Sie haben mehrere Lösungen, um dies zu tun:

Einfacherer Weg: NAT

Machen Sie A zu einem Router, indem Sie die Weiterleitung zulassen : Geben sysctl net.ipv4.ip_forward=1 Sie net.ipv4.ip_forward=1/etc/sysctl.conf ein, um es dauerhaft zu machen.

Dann auf A, nat trafic durch Eingabe von: iptables -t nat -A POSTROUTING -o ethx -j MASQUERADE

Schließlich auf B: Leiten Sie den gesamten Verkehr über A:

ip route del default  
ip route add default via IP_of_A

Andere Lösung: Proxify ,

Sie müssen jedoch alle Komponenten einrichten, um den Proxy verwenden zu können:

Öffnen Sie auf B eine SSH-Verbindung zu A mit dem folgenden Befehl:

ssh -D8000 -N -f user@IP_of_A 

Dadurch wird eine Proxy-Socke auf B geöffnet und der gesamte Datenverkehr über A weitergeleitet. Wenn Sie beispielsweise einen Webbrowser verwenden, müssen Sie eine Proxy-Socke v5 auf 127.0.0.1 einrichten, die Port 8000 überwacht. Sie müssen keine IP-Adresse einrichten Weiterleiten oder Berühren von Routen.


Bei der Ausgabe des ip route addBefehls bekam ich diesen Fehler:Error: either "to" is duplicate, or "gw" is a garbage.
— Harry

Übrigens, DrGkill, ich würde mich sehr freuen, wenn Sie auch die anderen Möglichkeiten erwähnen könnten. Und auch einige Bücher / Ressourcen, in denen diese Konzepte auf praktische Weise behandelt werden. Ich brauche keine Tannenbaum-ähnliche Theorie, sondern Konzepte und tatsächliche Linux-Befehle, die ich ausprobieren und lernen kann, wären hilfreich. Ich bin mir nicht sicher, ob das anscheinend datierte [ faqs.org/docs/linux_network/index.html (( Linux Network Administrator's Guide)) noch aktuell ist und das oben angegebene Rezept abdeckt. Vielen Dank und Gott segne dich.
— Harry

Die korrekte Syntax lautet ip route add default viaoder route add default gw.
— Quanten

Fehler bearbeitet, plus der Proxy-Weg hinzugefügt. Genießen.
— DrGkill

1
Danke Quanten! Der Befehl wurde erfolgreich akzeptiert. Aber wenn ich jetzt ping www.google.com, bekomme ich einen From hostA (<ipaddrOfHostA>) icmp_seq=1 Destination Host ProhibitedFehler und 100% Paketverlust.
— Harry

1

Ich glaube, Sie müssen Ihre Firewall deaktivieren.

service iptables stop

Ich bin mir nicht sicher, ob dies sowohl auf Host A als auch auf Host B erforderlich ist, aber ich habe die Meldung "Zielhost verboten" erhalten

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.