Bagaimana cara mengubah alamat IP untuk menunjuk ke localhost?

10

Lingkungan kotak pasir aplikasi web dapat dijangkau secara langsung dengan alamat IP: http://<my_ip_address>tanpa nama login.

Apakah ada cara untuk membuat host virtual di mesin lokal saya, dinamai <my_ip_address>, dan mengubah / etc / hosts sehingga akan "mengarahkan" ke localhost saya?

127.0.0.1 <my_ip_address>

Jadi ketika saya memuat url http://<my_ip_address>, browser akan menunjuk ke localhost saya? Cara saya sudah bisa mengarahkan ulang nama domain.

Mike
sumber

Jawaban:

21

File host hanya dapat digunakan untuk mengaitkan nama domain dengan IP; tidak dapat memetakan IP ke IP.

Mengubah IP dapat dilakukan oleh firewall . Di Linux, firewall default dikendalikan oleh perintah iptables . "man iptables" adalah dokumentasinya. Google "jelaskan iptables" untuk penjelasan pengantar.

Beberapa tautan:

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

Secara khusus, Anda ingin mengubah permintaan OUTGOING dari PC Anda ke alamat IP ( <my_ip_address>), sehingga mereka pergi ke alamat IP yang berbeda, dalam hal ini 127.0.0.1. Anda ingin melakukan NAT ( Terjemahan Alamat Jaringan ), diberi "IP tujuan" ( <my_ip_address>; mis. 123.45.67.89), mengubahnya menjadi "IP tujuan" yang berbeda (127.0.0.1).

Coba ini (menggantikan 123.45.67.89 , masukkan ip_address yang perlu diubah):

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

Detail:

-t nat = tabel untuk menerjemahkan satu alamat ke alamat lainnya

-A OUTPUT = tambahkan ke daftar aturan untuk paket yang dihasilkan secara lokal, keluar. PERINGATAN KEAMANAN: Pastikan aturan menyertakan arahan OUTPUT ini. Jika tidak, aturannya akan menciptakan celah keamanan yang mungkin, karena mencocokkan paket yang masuk dari lokasi yang jauh juga akan diarahkan ke localhost.

-p semua = berlaku untuk semua protokol (tcp, udp, dan icmp).

-d 123.45.67.89 = alamat IP asli yang akan dituju paket (tujuannya).

-j DNAT = jika aturannya cocok (dalam hal ini, jika paket keluar memiliki IP tujuan 123.45.67.89), maka tangani dengan DNAT, yang mengubah tujuan.

--to-destination 127.0.0.1 = memberi tahu DNAT apa yang harus dilakukan; ganti tujuan awal dengan "127.0.0.1".

(CATATAN: Jika Anda memiliki situasi yang lebih kompleks, seperti mencegat permintaan untuk halaman web tertentu, solusi alternatif mungkin menggunakan perangkat lunak "proxy".)

ToolmakerSteve
sumber
Perhatikan bahwa ada masalah keamanan di sini. 127.0.0.1 umumnya dipahami tidak dapat dijangkau dari host jarak jauh mana pun. Jika Anda mengubahnya tanpa menambahkan pemfilteran, Anda mungkin secara tidak sengaja mengalahkan langkah keamanan.
Slartibartfast
@ Slartibartfast - Perhatikan bahwa kami hanya mengubah permintaan OUTGOING. Dan kami membuat perubahan pada firewall di PC ini. (Beberapa permintaan, yang akan keluar ke situs eksternal, kami kembali ke diri kami sendiri.) Ini tidak mengubah permintaan INCOMING, jadi itu tidak mempengaruhi apa yang dapat dilihat / dilakukan oleh siapa saja. Mengingat ini, apakah Anda masih melihat masalah keamanan?
ToolmakerSteve
1
... ukuran keamanan yang penting, adalah dimasukkannya "-A OUTPUT" dalam aturan. Per komentar Anda, orang-orang perlu menyadari bahwa MENGHINDARI itu akan memiliki bahaya yang Anda gambarkan. Saya akan menambahkan komentar untuk menekankan ini.
ToolmakerSteve
3
Ini berfungsi dengan baik tetapi saya tidak bisa melihatnya terdaftar di mana saja iptables --list atau --list-rules. Bagaimana saya bisa mendaftar dan menghapusnya setelah itu ketika tidak lagi diperlukan?
Filip Stefanov
@FilipStefanov (Agak terlambat saya tahu!): Sebutkan aturan nat dengan nomor di sebelahnya: iptables -t nat --list --line-numbers Lalu hapus yang tidak pernah berkuasa dengan nomor itu: iptables -t nat -D OUTPUT <number>
Richard Walton