Wie ändere ich die IP-Adresse, um auf localhost zu zeigen?

10

Eine Sandbox-Umgebung einer Web-App ist direkt über eine IP-Adresse erreichbar: http://<my_ip_address>ohne einen Anmeldenamen.

Gibt es eine Möglichkeit, einen virtuellen Host auf meinem lokalen Computer mit dem Namen "as <my_ip_address>" zu erstellen und / etc / hosts so zu ändern , dass er auf meinen lokalen Host "umgeleitet" wird?

127.0.0.1 <my_ip_address>

Wenn ich also die URL lade, zeigt der http://<my_ip_address>Browser auf meinen Localhost? So kann ich schon Domainnamen umleiten.

Mike
quelle

Antworten:

20

Die Hosts- Datei kann nur verwendet werden, um einen Domain-Namen mit einer IP- Adresse zu verknüpfen. IP kann nicht IP zugeordnet werden.

Das Ändern von IP-Adressen kann durch eine Firewall erfolgen . Unter Linux wird die Standard-Firewall von iptables- Befehlen gesteuert. "man iptables" ist die Dokumentation. Google "EXPLAIN Iptables" für einleitende Erklärungen.

Einige Links:

http://linux.die.net/man/8/iptables

http://www.linuxnix.com/2009/12/iptables-in-linux-explained.html

http://blog.adityapatawari.com/2011/12/ip-packet-filtering-iptables-explained.html

Insbesondere möchten Sie OUTGOING-Anforderungen von Ihrem PC in eine IP-Adresse ( <my_ip_address>) ändern , sodass sie stattdessen zu einer anderen IP-Adresse wechseln , in diesem Fall 127.0.0.1. Sie möchten NAT ( Network Address Translation ) ausführen , wenn Sie die "Ziel-IP" ( <my_ip_address>z. B. 123.45.67.89) in eine andere "Ziel-IP" (127.0.0.1) ändern.

Versuchen Sie dies (anstelle von 123.45.67.89 geben Sie die zu ändernde IP- Adresse ein):

iptables -t nat -A OUTPUT -p all -d 123.45.67.89 -j DNAT --to-destination 127.0.0.1

Einzelheiten:

-t nat = Tabelle zum Übersetzen einer Adresse in eine andere

-A OUTPUT = An die Liste der Regeln für lokal generierte ausgehende Pakete anhängen. SICHERHEITSHINWEIS: Stellen Sie sicher, dass die Regel diese OUTPUT-Direktive enthält. Wenn Sie dies nicht tun, würde die Regel eine mögliche Sicherheitslücke schaffen, da von entfernten Standorten eingehende Pakete ebenfalls an localhost weitergeleitet werden.

-p all = gilt für alle Protokolle (tcp, udp und icmp).

-d 123.45.67.89 = Die ursprüngliche IP-Adresse, an die das Paket gesendet wurde (Ziel).

-j DNAT = Wenn die Regel übereinstimmt (in diesem Fall, wenn ein ausgehendes Paket die Ziel-IP 123.45.67.89 hat), wird es mit DNAT behandelt, wodurch das Ziel geändert wird.

--to-destination 127.0.0.1 = teilt DNAT mit, was zu tun ist; Ersetzen Sie das ursprüngliche Ziel durch "127.0.0.1".

(HINWEIS: Wenn Sie eine komplexere Situation hatten, z. B. das Abfangen von Anforderungen für bestimmte Webseiten, besteht eine alternative Lösung möglicherweise in der Verwendung von "Proxy" -Software.)

ToolmakerSteve
quelle
Beachten Sie, dass hier ein Sicherheitsrisiko besteht. Unter 127.0.0.1 wird allgemein verstanden, dass es von keinem Remote-Host aus erreichbar ist. Wenn Sie dies ändern, ohne Filter hinzuzufügen, können Sie eine Sicherheitsmaßnahme unbeabsichtigt umgehen.
Slartibartfast
@Slartibartfast - Beachten Sie, dass wir nur OUTGOING-Anforderungen ändern. Und wir nehmen die Änderung in einer Firewall auf diesem PC vor. (Einige Anfragen, die an eine externe Site gegangen wären, werden von uns zurückgeschleift.) Dies ändert nicht die eingehenden Anfragen, so dass dies keinen Einfluss darauf hat, was jeder Remote-Benutzer sehen / tun kann. Sehen Sie vor diesem Hintergrund immer noch ein Sicherheitsrisiko?
ToolmakerSteve
1
... die wesentliche Sicherheitsmaßnahme ist die Aufnahme von "-A OUTPUT" in die Regel. Laut Ihrem Kommentar müssen sich die Leute darüber im Klaren sein, dass EINLASSEN die von Ihnen beschriebene Gefahr birgt. Ich werde einen Kommentar hinzufügen, um dies zu betonen.
ToolmakerSteve
3
Es funktioniert gut, aber ich kann es nirgends sehen iptables --list oder --list-rules. Wie kann ich es auflisten und anschließend löschen, wenn es nicht mehr benötigt wird?
Filip Stefanov
@FilipStefanov (Etwas spät, ich weiß!): Liste die nat-Regeln mit einer Nummer daneben auf: iptables -t nat --list --line-numbers Dann lösche, welche niemals nach dieser Nummer regieren: iptables -t nat -D OUTPUT <number>
Richard Walton