Переадресація запиту на зовнішній IP на localhost (емуляція сервера)


12

У мене з’явилася програма (без вихідного коду), яка викликає сервер (жорсткий IP-код) і очікує відповіді перед запуском (вид входу).

Тому що сервер знаходиться в половині часу, я хочу створити фіктивний сервер, який буде імітувати поведінку офіційного сервера.

Моя проблема:

Як я можу перенаправити трафік на свою локальну машину?

Я хочу, щоб весь запит, що надсилається на IP wxyz, буде перенаправлений на localhost (де працює мій сервер)

Більше інформації:

  • мій серверний сервер - це рішення apache / php.
  • Я спробував відредагувати жорстко закодований IP-код у програмі за допомогою шестигранного редактора, але деякі контрольні суми не вдається, коли я запускаю програму.
  • через те, що IP-код у програмі важко закодований, я не можу використовувати файл хостів.
  • Я запускаю win xp.

пов'язано: Як перенаправити трафік на один IP на інший IP на Windows Server 2008

Відповіді:


8

Це був би тотальний злом, але ви можете спробувати призначити IP відповідного сервера як додатковий IP для вас локальний інтерфейс, інструкції тут


Це виглядає чудово !. але зараз я не можу спробувати, (мій Інтернет не працює, я приєднався до 3G ..). Я даю вам кілька відгуків наприкінці наступного тижня.
Лода

1
Це справді скелі! працює чудове, дуже просте рішення. Спасибі !
Лода

Мила, рада це почути :)
Роберт Свішер

1
Точність: Додавання 2sd IP до мого NIC отримало побічний ефект; всі IP-адреси в одному зовнішньому субредрі переспрямовуються на мій NIC. тобто при додаванні IP 50.51.51.51 IP 50.51.51.52 вже недоступний. Це спричинено маршрутом 50.51.51.0 і маршрутом 50.255.255.255. Обхід: додайте маршрут 50.51.51.52 -> звичайний шлюз.
Лода

посилання розірвано
danilo

2

Ну, ви можете спробувати наступне:

Налаштуйте конкретний маршрут для цієї IP-адреси, яка використовуватиме фіктивний сервер як шлюз, наприклад:

маршрут add -host wxyz / 32 gw фіктивний сервер-ip

Для цього вам знадобиться або доступ до основного роутера для вашої мережі, або ви повинні зробити це на машині, що надсилає запити. Це ефективно надсилає пакети TCP з IP-адресою wxyz на MAC-адресу манекена-сервера. Тому тепер вам потрібно переконатися, що сервер-манекен знає, що з ними робити.

Потім додайте wxyz IP-адресу як вторинну адресу на фіктивний сервер.
Нарешті оновіть конфігурацію apache на фіксованому сервері, щоб переконатися, що він також прослуховує адресу wxyz, і переконайтеся, що vhost на фіксованому сервері приймає вхідні запити як IP-адреси, так і доменного імені.

Зверніть увагу, що це буде працювати лише в тому випадку, коли між машиною-запитувачем і сервер-манекеном немає інших маршрутизаторів. І якщо є якісь брандмауери, вони також потребують оновлення.


Дякую за відповідь, це виглядає саме так, що я хочу зробити. але, у мене виникла проблема з його реалізацією. Я вважаю за краще не торкатися до маршрутизатора, тому що рішення повинно бути ексклюзивним для моєї машини. Команда, яку ви подали мені як приклад, не працює на моєму виграші xp. Я також без успіху спробував "route add wxyz 127.0.0.1". У мене немає брандмауера / маршрутизатора між програмою та фіктивним сервером. вони обидва працюють на одній машині. (Але у мене є брандмауер програмного забезпечення: kaspersky) Я дійсно буду вдячний за допомогу щодо встановлення цього маршруту.
Лода

1
Існує команда маршруту для Windows: маршрут ADD wxyz MASK 255.255.255.255 127.0.0.1 Це вкаже маршрут назад на вашу машину. Можливо, вам доведеться відкрити брандмауер для вхідних запитів на адресу wxyz.
wolfgangsz

Я намагався додати маршрут за допомогою цієї команди без успіху. не знаю чому.
Лода

"додавання маршруту 62.1.1.10 маска 255.255.255.255 127.0.0.1" Повідомлення про помилку кажуть: "помилка додавання маршруту: неправильний параметр" (перекладено з ES)
Loda

Хм, можливо, вам потрібно буде замінити 127.0.0.1 фактичною локальною IP-адресою цього інтерфейсу. Я ніколи не пробував нічого подібного раніше, тому є невеликі здогадки.
wolfgangsz

1

Ви, ймовірно, могли б щось поламати разом із iptables. Ось те, що я колись використовував, але більше не роблю, щоб дати вам ногу:

*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: Я це робив давно, там можуть бути помилки

Єдине, що я бачу, що це може бути проблемою, це те, що це специфічно для інтерфейсу. Я думаю, що eth0 призначений лише для вхідної частини, тому використання ip на lo-інтерфейсі (127.0.0.1) як цільова може все-таки працювати ...


1
Це було б чудовою відповіддю ... але він працює під керуванням Windows XP.
Джейсон Берг

До! Я думаю, що побачив "apache / php" і перестав читати. Навіть після того, як ви це вказали, я три рази сканував, перш ніж побачив це. Ну добре, я залишу це, можливо, це комусь десь допоможе.
jj33

Я думаю про те, щоб створити вибірковий VPN з Vagrant, busybox та iptables. Я хочу бути в змозі сказати моїй системі, що до кількох відомих IP-адрес належить VPN, тому трафік кудись не пройде через VPN. Моя ідея - використовувати дуже легкий Linux як зайнятий для підключення до VPN, а потім за допомогою iptables або файлу хостів або чогось подібного перенаправляти запити відомих IP-адрес до гостя Vagrant VM, щоб він обробляв VPN . Ці правила iptables можуть допомогти мені :)
Бруно Фінгер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.