2012-05-04 4 views
0

Я пытаюсь перенаправить часть трафика происходит, так что при запросе 1.1.1.1:2222 локальной машине, а не идет в 2.2.2.2:3333Перенаправление сетевого трафика

Что самый простой способ для достижения этой цели с использованием из java?

С уважением

файл hosts на окнах НЕ! опцион

EDIT: IP 1.1.1.1:2222 - это extenal IP (сервер, в котором я не являюсь). Поэтому я не могу создать простой сервер сокетов для перенаправления трафика. Мне нужно как-то изменить направление пакета

Также обратите внимание, что это OUTGOING часть, которую я хочу перенаправить. Быстрый пример будет, если я попрошу www.google.dk получить facebook

Это должно быть сделано из java.

+2

Какова ваша цель для этого? – fmucar

+1

Это касается? –

+0

Я не думаю, что этот вопрос связан с программированием. Вы должны настроить сетевое программное обеспечение, и работа зависит от конкретных требований. Например, ваш целевой IP имеет DNS-имя? Вас интересует перенаправление определенного протокола (например, http)?Почему вы указываете порты, если серверы не находятся под вашим контролем? – Raffaele

ответ

0

Я думаю, что это может быть легко реализовано с гнездами, в основном:

  1. открыть ServerSocket на 1.1.1.1:2222
  2. открыть сокет для 2.2.2.2:3333
  3. Перенаправление OutputStream из первый в InputStream из второго и наоборот

вам пример here

+0

Обновленный вопрос. Вы, кажется, не понимаете, куда я нахожусь :) Хотя спасибо за попытку;) –

+1

Тогда вы не можете сделать что-то подобное и благодарите Бога. Вы должны быть посреди общения каким-то образом ... Представьте себе хаос в Интернете, если вы можете перенаправить весь трафик серверов, которыми вы не владеете ... –

1

Вы не можете делать это на Java. В самом деле, вы вообще не можете делать это в приложениях пользовательского пространства вообще.

Если вы используете платформу Linux, вы можете сконфигурировать iptables для перехвата исходящих пакетов определенного типа, предназначенных для определенного IP-адреса/порта, и переписать IP-адрес назначения. Однако это проблема системы/сетевого администрирования, а не проблема программирования.

Как вы можете себе представить, есть всевозможные неприятные вещи, которые вы могли бы сделать, если непривилегированное приложение может привести к перенаправлению трафика. Вам нужно установить привилегию root на Linux для изменения конфигураций iptables.


Это должно быть сделано с Java.

Ну, если вы не спрашиваете о применении перенаправлять свои запросы, это не может быть сделано в Java/с Java.

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

+0

по его вопросу, я предполагаю, что это на Windows – Raffaele

+0

@ Raffaele - Ну, я не знаю, как можно было бы делать такие вещи в Windows ... –

Смежные вопросы