Redirect permintaan ke IP eksternal ke localhost (meniru server)

12

Saya mendapat aplikasi (tanpa kode sumber) memanggil server (IP kode keras) dan mengharapkan jawaban sebelum memulai (semacam login).

Karena server turun separuh waktu, saya ingin membuat server dummy yang akan meniru perilaku server resmi.

Masalahku:

Bagaimana saya bisa mengarahkan lalu lintas ke mesin lokal saya?

Saya ingin semua permintaan kirim ke IP wxyz untuk dialihkan ke localhost (di mana server dummy saya berjalan)

Info lebih lanjut:

  • server dummy saya adalah solusi apache / php.
  • Saya mencoba mengedit IP kode keras dalam aplikasi dengan hex editor, tetapi beberapa checksum gagal ketika saya memulai aplikasi.
  • karena IPnya sulit dikodekan dalam aplikasi, saya tidak bisa menggunakan file hosts.
  • Saya menjalankan win xp.

terkait: Cara mengarahkan lalu lintas ke satu IP ke IP yang berbeda di Windows Server 2008

Loda
sumber

Jawaban:

8

Ini akan menjadi total hack, tetapi Anda dapat mencoba menetapkan IP server yang dimaksud sebagai IP tambahan pada antarmuka lokal Anda, instruksi di sini

Robert Swisher
sumber
Ini terlihat hebat! tapi saya tidak bisa mencobanya sekarang, (internet saya sedang down, saya tethering pada 3G ..). Saya memberi Anda beberapa umpan balik pada akhir minggu depan.
Loda
1
Ini benar-benar batu! bekerja dengan baik, solusi yang sangat mudah. terima kasih!
Loda
Manis, senang mendengarnya :)
Robert Swisher
1
Presisi: Menambahkan IP 2sd ke NIC saya mendapat efek samping; semua IP di subred eksternal yang sama dialihkan ke NIC saya. yaitu: ketika menambahkan IP 50.51.51.51, IP 50.51.51.52 tidak dapat dijangkau lagi. Ini disebabkan oleh rute 50.51.51.0 dan rute 50.255.255.255. Penanganan masalah: tambahkan rute 50.51.51.52 -> gateway normal.
Loda
tautannya rusak
danilo
2

Anda dapat mencoba yang berikut ini:

Siapkan rute tertentu untuk alamat IP itu, yang akan menggunakan server dummy sebagai gateway, seperti ini:

rute add -host wxyz / 32 gw dummy-server-ip

Untuk ini, Anda akan memerlukan akses ke router utama untuk jaringan Anda, atau Anda harus melakukannya pada mesin yang mengirim permintaan. Ini secara efektif mengirimkan paket TCP dengan alamat IP wxyz ke alamat MAC server-dummy. Jadi sekarang Anda perlu memastikan server dummy tahu apa yang harus dilakukan dengan mereka.

Kemudian tambahkan alamat IP wxyz sebagai alamat sekunder ke server dummy.
Akhirnya perbarui konfigurasi apache pada server dummy untuk memastikannya juga mendengarkan pada alamat wxyz, dan pastikan bahwa vhost di server dummy menerima permintaan masuk untuk alamat IP dan nama domain.

Harap dicatat bahwa ini hanya akan berfungsi jika tidak ada router lain antara mesin yang meminta dan server dummy. Dan jika ada firewall yang terlibat, mereka juga perlu memperbarui.

wolfgangsz
sumber
Terima kasih atas jawabannya, persis seperti apa yang ingin saya lakukan. tapi, saya kesulitan mengimplementasikannya. Saya lebih suka tidak menyentuh router, juga karena, solusinya harus eksklusif untuk mesin saya. Perintah yang Anda berikan kepada saya sebagai contoh tidak berfungsi pada win xp saya. Saya juga mencoba "route add wxyz 127.0.0.1" tanpa hasil. Saya tidak memiliki firewall / router antara aplikasi dan server dummy. keduanya berjalan pada mesin yang sama. (Tapi, saya punya firewall perangkat lunak: kaspersky) Saya akan sangat menghargai bantuan tentang cara mengatur rute ini.
Loda
1
Ada perintah rute yang tersedia untuk Windows: route ADD wxyz MASK 255.255.255.255 127.0.0.1 Ini akan mengarahkan rute kembali ke mesin Anda sendiri. Anda mungkin harus membuka firewall untuk permintaan yang masuk pada alamat wxyz.
wolfgangsz
Saya memang mencoba menambahkan rute menggunakan perintah ini tanpa hasil. tidak tahu kenapa.
Loda
"route add 62.1.1.10 mask 255.255.255.255 127.0.0.1" Pesan kesalahan mengatakan: "error menambahkan rute: parameter salah" (diterjemahkan dari ES)
Loda
Hmm, mungkin Anda perlu mengganti 127.0.0.1 dengan alamat IP LAN sebenarnya dari antarmuka itu. Saya belum pernah mencoba hal seperti ini sebelumnya, jadi ada sedikit dugaan yang terlibat.
wolfgangsz
1

Anda mungkin bisa menggedor sesuatu bersama iptables. Ini adalah sesuatu yang pernah saya gunakan tetapi tidak lagi dilakukan untuk memberi Anda pijakan:

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 172.16.25.202 -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to 172.16.27.59:8025
-A POSTROUTING -o eth0 -j MASQUERADE 
COMMIT

NB: Saya sudah lama melakukannya, mungkin ada kesalahan di sana

Satu-satunya hal yang saya lihat yang mungkin menjadi masalah adalah bahwa itu khusus untuk antarmuka. Saya pikir eth0 hanya untuk bagian inbound, jadi gunakan ip pada antarmuka lo (127.0.0.1) karena target mungkin masih berfungsi ...

jj33
sumber
1
Itu akan menjadi jawaban yang bagus ... tapi dia menjalankan Windows XP.
Jason Berg
Doh! Saya pikir saya melihat "apache / php" dan berhenti membaca. Bahkan setelah Anda menunjukkannya, saya memindai tiga kali sebelum melihatnya. Oh well, aku akan meninggalkannya, mungkin itu akan membantu seseorang di suatu tempat nanti.
jj33
Saya sedang berpikir dengan Vagrant, busybox dan iptables untuk membuat VPN selektif. Saya ingin dapat memberi tahu sistem saya bahwa hanya beberapa alamat IP yang diketahui milik VPN sehingga lalu lintas ke tempat lain tidak akan melalui VPN. Ide saya adalah menggunakan Linux yang sangat ringan sebagai busybox untuk terhubung ke VPN, dan kemudian menggunakan iptables, atau file host, atau yang serupa, mengarahkan permintaan alamat IP yang dikenal ke guest Vagrant VM sehingga akan menangani VPN . Aturan iptables ini mungkin bisa membantu saya :)
Bruno Finger