Перенаправление запросов внешних IP-адресов на локальный IP-адрес

Привет.

Я работаю над проектом в моей компании. У нас есть приложение, написанное одним из наших старых техников — его уволили за просмотр порнографических сайтов. К сожалению, он взял с собой исходный код нашего приложения и жестко закодировал в нем IP-адрес нашего внешнего сервера. Мы недавно сменили серверы, и нам нужно изменить, где приложение пытается получить доступ к нашей базе данных. Я бы действительно предпочел не изобретать велосипед, а переделать приложение...

Я пытался использовать команду маршрута, но не в кости.

route -p [new server] mask 255.255.255.255 [old server] metric 50 if [interface]

Я настроил временный веб-сервер на порту 80 нового ящика, ввел старый IP-адрес в браузере машины с указанным маршрутом, добавленным к его таблицам, и он все равно пошел на старый сервер.

Любая помощь в работе команды route или правдоподобные альтернативы? Например: программное обеспечение для перенаправления, трюки с маршрутизатором... и т.д.

  • Примечание. Мы пытались использовать обратный поиск имени на нашем частном DNS-сервере, но это также не удалось.

person Kurt Nauck    schedule 02.05.2011    source источник
comment
Мне всегда интересно, почему люди смотрят @порно на работе. Им так скучно? Я никогда этого не понимал...   -  person Jakub    schedule 02.05.2011


Ответы (5)


Поскольку IP-адрес жестко закодирован в двоичном коде, вы, вероятно, сможете найти его. Вероятно, он представлен четырьмя байтами. Затем вы можете заменить его новым IP-адресом с помощью шестнадцатеричного редактора.

person Community    schedule 02.05.2011
comment
Опять же, приложение сжато. - person Kurt Nauck; 02.05.2011
comment
Если это широко используемый метод сжатия, его, вероятно, можно отменить. - person Janus Troelsen; 02.05.2011
comment
Это был NSPack. Мы распаковали его и grepped. Благодаря тонну. - person Kurt Nauck; 09.06.2011

Предполагая, что у вас есть брандмауэр iptables где-то на маршруте, вы можете использовать DNAT:

iptables -t nat -A PREROUTING -d [old server] -j DNAT --to-destination [new server]

Неважно, где именно вы запускаете это, если оно видит пакеты, адресованные [old server], и имеет действительный маршрут к [new server], так что это может быть на хосте, на котором запущено приложение, на любом промежуточном маршрутизаторе или на вашем пограничном брандмауэре.

Конечно, вы всегда можете просто отредактировать адрес внутри самого двоичного файла....

person Flexo    schedule 02.05.2011
comment
У нас еще нет брандмауэра для Linux, хотя он находится в разработке. Спасибо за инструкцию. - person Kurt Nauck; 02.05.2011
comment
Вариант бинарного редактирования был только полушуткой — это не должно быть слишком сложно сделать, учитывая, что старый адрес известен для поиска. Другим вариантом было бы заставить ваш [новый сервер] утверждать, что у него есть как новый адрес, так и старый адрес, и тогда ваша команда маршрута будет работать, как ожидалось. Вы можете добавить несколько адресов в диалоговом окне Дополнительные параметры TCP/IP для сетевого интерфейса. - person Flexo; 02.05.2011
comment
Это сжатый двоичный файл. Я бы так и сделал, если бы мог =/ - person Kurt Nauck; 02.05.2011

В вашем брандмауэре/маршрутизаторе настройте NAT для этого общедоступного IP-адреса, чтобы он направлялся на ваш новый частный IP-адрес.

person CheckRaise    schedule 02.05.2011

Вы не можете просто добавить маршрут к новому серверу, как вы упомянули, потому что при первом переходе маршрутизатора пакет будет перенаправлен на старый сервер.

Возможно, вы сможете указать маршрут на локальном хосте, добавить старый сервер в качестве IP-адреса на локальном интерфейсе и написать прокси-сервер для пересылки запросов на старый сервер.

Лучший вариант IMO - выяснить, как распаковать двоичный файл и отредактировать его в шестнадцатеричном формате. Ты знаешь, на каком языке это написано? Или позвоните своему юристу, чтобы вернуть исходный код. знак равно

person mpontillo    schedule 03.05.2011

Используйте файл hosts для маршрутизации всех запросов к внешнему IP-адресу на локальный IP-адрес: http://en.wikipedia.org/wiki/Hosts_(file)

person Jos van Egmond    schedule 02.05.2011
comment
Файл hosts будет эффективен только в том случае, если он выполняет поиск DNS. Если это так, я думаю, что исправление записи DNS может быть проще и удобнее в долгосрочной перспективе. - person Flexo; 02.05.2011
comment
Это IP, а не доменное имя. если бы он ссылался на доменное имя нашей компании, у нас не было бы этой проблемы - person Kurt Nauck; 02.05.2011