Jak zmienić adres IP, aby wskazywał na localhost?

10

Środowisko piaskownicy aplikacji internetowej jest osiągalne bezpośrednio przez adres IP: http://<my_ip_address>bez nazwy logowania.

Czy istnieje sposób na utworzenie wirtualnego hosta na mojej maszynie lokalnej o nazwie as <my_ip_address>i zmianę / etc / hosts, aby „przekierowywał” do mojego hosta lokalnego?

127.0.0.1 <my_ip_address>

Więc kiedy załaduję adres URL, http://<my_ip_address>przeglądarka wskaże mój lokalny host? Sposób, w jaki mogę już przekierowywać nazwy domen.

Mikrofon
źródło

Odpowiedzi:

21

Pliku hostów można użyć tylko do powiązania nazwy domeny z adresem IP; nie może mapować adresu IP na adres IP.

Zmiana adresów IP może być wykonana przez zaporę ogniową . W systemie Linux domyślną zaporą sterują polecenia iptables . „man iptables” to dokumentacja. Google „wyjaśnij iptables”, aby uzyskać wyjaśnienia wprowadzające.

Niektóre linki:

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

W szczególności chcesz zmienić WYJĄTKOWE żądania z komputera na adres IP ( <my_ip_address>), aby zamiast tego trafiały na inny adres IP, w tym przypadku 127.0.0.1. Chcesz wykonać NAT ( Network Address Translation ), biorąc pod uwagę „docelowy adres IP” ( <my_ip_address>np. 123.45.67.89), zmieniając go na inny „docelowy adres IP” (127.0.0.1).

Spróbuj tego (zamiast 123.45.67.89 wpisz adres_ip, który należy zmienić):

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

Detale:

-t nat = tabela do tłumaczenia jednego adresu na inny

-A WYJŚCIE = dołącza do listy reguł dla generowanych lokalnie, wychodzących pakietów. OSTRZEŻENIE BEZPIECZEŃSTWA: Upewnij się, że reguła zawiera tę dyrektywę WYDAJNOŚCI. Jeśli tego nie zrobisz, reguła stworzy możliwą lukę w zabezpieczeniach, ponieważ dopasowanie pakietów przychodzących ze zdalnych lokalizacji zostanie również skierowane do hosta lokalnego.

-p all = stosuje się do wszystkich protokołów (tcp, udp i icmp).

-d 123,45.67.89 = pierwotny adres IP, do którego miał dotrzeć pakiet (jego miejsce docelowe).

-j DNAT = jeśli reguła jest zgodna (w tym przypadku, jeśli pakiet wychodzący ma adres docelowy IP 123.45.67.89), należy go obsłużyć za pomocą DNAT, który zmienia miejsce docelowe.

--to-destination 127.0.0.1 = mówi DNAT, co ma robić; zastąp pierwotne miejsce docelowe „127.0.0.1”.

(UWAGA: w przypadku bardziej złożonej sytuacji, takiej jak przechwytywanie żądań dotyczących określonych stron internetowych, alternatywnym rozwiązaniem może być użycie oprogramowania „proxy”).

ToolmakerSteve
źródło
Pamiętaj, że tutaj jest problem bezpieczeństwa. 127.0.0.1 jest powszechnie rozumiany jako nieosiągalny z jakiegokolwiek zdalnego hosta. Jeśli zmienisz to bez dodawania filtrowania, możesz przypadkowo pokonać środek bezpieczeństwa.
Slartibartfast
@Slartibartfast - Pamiętaj, że zmieniamy tylko żądania OUTGOING. Wprowadzamy zmiany w zaporze ogniowej na tym komputerze. (Niektóre żądania, które trafiłyby na zewnętrzną stronę, zapętlamy z powrotem do siebie.) Nie zmienia to INCOMING, więc nie wpływa na to, co każdy zdalny użytkownik może zobaczyć / zrobić. Biorąc to pod uwagę, czy nadal widzisz problem związany z bezpieczeństwem?
ToolmakerSteve
1
... niezbędnym środkiem bezpieczeństwa jest włączenie reguły „-A WYDAJNOŚĆ”. Zgodnie z Twoim komentarzem ludzie muszą być świadomi, że OMINIĘCIE groziłoby opisanym przez ciebie niebezpieczeństwem. Dodam komentarz, aby to podkreślić.
ToolmakerSteve
3
Działa dobrze, ale nie widzę go na liście nigdzie iptables --list lub --list-rules. Jak mogę to wyświetlić i usunąć, gdy nie będzie już potrzebne?
Filip Stefanov
@FilipStefanov (Nieco późno, wiem!): Wymień reguły nat z numerem obok nich: iptables -t nat --list --line-numbers Następnie usuń, które nigdy nie rządzą pod tym numerem: iptables -t nat -D OUTPUT <number>
Richard Walton