2013-10-10 3 views
2

В Windows 7 У меня есть туннель SSH, который работает на моем локальном адресе 127.0.0.1:34567, который мне нужен для доступа, поэтому я могу получить доступ к 12.34.56.78:8080 с помощью SSH-проксирования для меня поскольку я не могу получить доступ к этому IP-адресу напрямую (из-за того, что он не включен в белый список).Захват и перенаправление исходящего трафика из заданного ip: порт для цели ip: порт

Наша основная простая цель состоит в том, что в Windows всякий раз, когда я запрашиваю 12.34.56.78:8080 из любого места (например, моего браузера), я хотел бы, чтобы запрос был перенаправлен на 127.0.0.1:34567 прозрачно, и я хотел бы, чтобы это программное решение вместо аппаратный, если это возможно. Я думаю, что это то, что обычно достигается в Linux тем, что называется iptables, но я ищу что-то, что я могу использовать для Windows.

Кто-нибудь знает, как это возможно? Если мне нужно использовать любую внешнюю программу Windows для этого, это нормально, но я предпочитаю, чтобы она была бесплатной.

EDIT:, пожалуйста, не предоставляйте мне обратные туннельные решения. Моя цель - запросить тот же ip: порт, из которого я заблокирован, но чтобы получить доступ к этому ip: порт успешно с помощью моего существующего туннеля SSH. Обратные туннели требуют запроса другого ip: порта, который не является тем, что я ищу (у меня уже есть туннель прямого доступа, который я могу использовать, если захочу сделать запросы к другому ip: порту).

Пример сценария: Притворись, что у вас есть C скомпилированные .exe файл, исходный код, который вы не имеете доступа к тому, что жёстко просить 12.34.56.78:8000 для SOAP веб-сервисов. Проблема в том, что ваш IP заблокирован от этого ip: port, но у вас есть доступ к SSH-серверу, который не заблокирован 210.212.239.117:8080, а также для SSH-сервера для SSH-сервера для доступа к этому ip-порту. но ваш .exe имеет оригинальный ip: port hardcoded, поэтому вы не можете просто сказать ему, чтобы он запросил SSH-туннель ip: port, так как невозможно изменить ip: порт, который нужно запросить каким-либо образом из-за его жесткого кодирования ! Вам нужно было бы запросить 210.212.239.117:8080 на вашем компьютере, как-то перенаправленный в ваш SSH-туннель на уровне ОС. Итак, как бы вы это сделали?

EDIT 2: Я также не ищу таблицы маршрутизации (я думаю). Я не хочу изменять маршрут, который мой запрос проходит, чтобы достичь целевого ip: port; Я действительно хочу, чтобы запрошенный ip и порт сами молчали. Я как бы хочу достичь чего-то вроде файла hosts, за исключением того, что вместо того, чтобы разрешать имена хостов для ips, я хочу, чтобы ip: порты были перерезаны для разных ip: ports.

Bounty: К сожалению, похоже, что это StackOverflow мой вопрос засчитывается как оффтоп и не eligable за предложение щедрот, так жаль тех, кто положил в дополнительной работе и бы потенциально получили награду!

+0

Просто для уточнения обратного туннеля или перенаправления портов физический доступ не требует ничего другого. – Bytemain

+0

Для установки одного из них, может быть, но для использования обратного прокси-сервера, я бы запросил ip-порт, отличный от того, с которым я заблокирован. И если так, это не то, что я ищу. –

+0

Разве это не так: http: //blog.peter-b.org/2011/08/01/using-iptables-to-map-an-internal-address-to-an-external-one/? Или это: http: //en.wikipedia.org/wiki/Routing_table? – Bytemain

ответ

0

Вы можете использовать обратную оболочку. Он может отображать удаленный порт. Используйте ssh для подключения с опцией -R. Например, ssh -R xxxx: localhost: xxxx user: [email protected] Проверьте это: http://www.debianadmin.com/howto-use-ssh-local-and-remote-port-forwarding.html.

+0

Я думаю, что ваш синтаксис был немного неправильным. С небольшим изменением вы имели в виду 'ssh -R 12.34.56.78:8080:127.0.0.1:34567 user @ www.server.com'? Это не работало под моими окнами; он сказал: Предупреждение: удаленная переадресация порта не удалась для порта прослушивания 80 Я также пробовал 'ssh -R 141.101.120.14:80:127.0.0.1:80 user @ example.com', где' example.com' является некоторым рабочим SSH сервер, а '141.101.120.14' - это IP-адрес whatismyip.com. Я получил сообщение «Предупреждение: удаленная переадресация портов не удалась для порта прослушивания 80», а http://www.whatismyip.com/ не привела к моему локальному веб-серверу, как я ожидал. –

+0

@ SzerémiAttila: Нет, это абсолютно правильно: http: //www.dd-wrt.com/wiki/index.php/Telnet/SSH_and_the_Command_Line#SSH_Port_Forwarding – Bytemain

+0

Я его прочитал. Раздел Local Port Forwarding посвящен SSH-туннелям, которые, как я знаю, не нужны мне (в любом случае у меня их нет). Удаленная переадресация портов похожа на маршрутизаторы. Я ищу решение для Windows. Пожалуйста, прочтите мой вопрос. –

0

Заканчивать BarbaTunnel: http://barbatunnel.codeplex.com/

режим TCP-Redirect, вероятно, что вы ищете.

+0

Это, похоже, не позволяет мне достичь того, что мне нужно. Это выглядит немного сложнее, хотя я мог бы просто не понимать его.Я смотрел конфигурационную справку: http://barbatunnel.codeplex.com/wikipage?title=config.ini И я заметил, что существует только один параметр, который принимает только 1 IP-адрес, а это 'ServerAddress'. Я ожидаю 2 варианта IP-адреса, 1 для исходящих IP-запросов для захвата, а другой - для IP-адреса для отклонения запроса. Пожалуйста, прочтите мой обновленный вопрос. –

+0

Из того, что я читал, я думаю, что вы не сможете выборочно захватывать и перенаправлять трафик, идущий на определенный порт на определенном IP-адресе, он позволяет только захватить трафик, идущий в определенный порт на всех IP-адресах. Кроме того, он не позволяет вам сказать, к какому IP-адресу вы хотите перенаправить, он только позволяет перенаправлять на localhost. Таким образом, вы устанавливаете RealPort на номер порта TCP, который должен быть захвачен, вы устанавливаете TunnelPort на номер порта прослушивания локального хоста (вы открываете его с помощью 'ssh -L'), и он перенаправляет *: RealPort на 127.0.0.1:TunnelPort. –

+0

Но программное обеспечение является открытым исходным кодом и основано на общей библиотеке фильтрации пакетов. Разумеется, это программное обеспечение может быть расширено, чтобы ограничить это перенаправление на трафик, предназначенный только для одного IP-адреса, если вам действительно нужны эти функции. Или вы могли бы просто сбросить 95% кода и выполнить логику, которую вы хотите. –

1

Я не нашел готового исполняемого файла, но WFPSampler кажется перспективным. Он использует новый API платформы фильтрации Windows (доступный с Windows Vista) для управления пакетами.

Чтобы использовать его для перенаправления исходящих пакетов, ознакомьтесь с Q&A section, есть много примеров.

+0

Приятный API, который вы там нашли! Я верю, что у вас есть ответ на вопрос ОП. Вы пытались создать образец (возможно, с помощью sdk/wdk)? – ixe013

+0

Могу ли я попросить вас дать мне пример того, какую команду мне нужно выполнить, чтобы мой сценарий работал? Я не могу попробовать эту программу прямо сейчас, но я знаю, что мне понадобится много времени, чтобы скомпилировать это (так как, кажется, нет легко исполняемого исполняемого файла), и выясните, какой исполняемый файл можно вызвать с помощью какие аргументы у меня, возможно, не хватило времени, особенно с моими ограниченными знаниями в области сетевого взаимодействия. Если это не слишком много, чтобы спросить. Q & A кажется слишком сложным. –

+1

Нет проблем, в разделе Q & A пользователь _d-gojo_ предоставил команду перенаправить TCP-соединение на основе порта назначения и исполняемого файла, который устанавливает его на другой IP-адрес и порт LAN. Вот оно: 'WFPSampler.exe -s PROXY -l FWPM_LAYER_ALE_CONNECT_REDIRECT_V4 -aaid "<путь iexplore.exe>" -iprp 443 -pra 192.168.1.10 -prp 0x22B8 -prs -v -wi' Вы вероятно, не понадобится опция '-aaid', вместо этого вы должны добавить' -ipra' (IP-адрес удаленного доступа) и указать свой IP-адрес. Кроме того, удалите опцию -prs и измените «pra» и «prp», новый IP-адрес и порт. –

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