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.

Harry
quelle

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.

DrGkill
quelle
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

Eric
quelle