Перенаправление портов
FPIPE
Похоже, что Unix-системы всегда первыми обеспечивают пользователей наиболее полезными сетевыми сервисными средствами. Утилита datapipe содержит немногим более 100 строк программного кода на языке C. До создания библиотеки Cygwin и datapipe не существовало никаких вариантов для перенаправления портов средствами Windows. Утилита FPipe, созданная компанией Foundstone, реализует технологию перенаправления портов для системы Windows. В ней также добавлена поддержка протокола пользовательских дейтаграмм (UDP - User Datagram Protocol), которая отсутствует в datapipe.
Утилита FPipe не требует никаких вспомогательных файлов DLL или привилегированного доступа, однако она выполняется только на платформах NT, 2000 и XP. Отсутствие вспомогательных файлов DLL или подобных файлов облегчает возможность простого переноса исполняемого файла fpipe.exe на другую систему. По сравнению с datapipe, утилита FPipe добавляет больше возможностей по использованию порта отправителя и связыванию с определенным интерфейсом.
Реализация
Увеличение функциональных возможностей утилиты FPipe требует указания еще нескольких ключей командной строки:
C:\>fpipe -h -?/-h - shows this help text (показывает этот текст справки) -c - maximum allowed simultaneous TCP connections. Default is 32 (максимальное разрешенное количество одновременных TCP-подключений. Значение по умолчанию - 32) -i - listening interface IP address (IP-адрес прослушиваемого интерфейса) -l - listening port number (номер порта прослушивания) -r - remote port number (номер удаленного порта) -s - outbound source port number (выходящий номер порта отправителя) -u - UDP mode (режим UDP) -v - verbose mode (многословный режим)
В качестве простой утилиты перенаправления порта FPipe работает подобно datapipe:
$./datapipe 9080 80 www.google.com
Ниже приводится эквивалентный вызов утилиты FPipe:
C:\>fpipe -l 9080 -r 80 www.google.com Pipe connected: In: 127.0.0.1:1971 --> 127.0.0.1:9080 Out: 192.168.0.184:1972 --> 216.239.33.101:80
В отличие от datapipe, утилита FPipe работает не в фоновом режиме. Она будет продолжать сообщать о подключениях, пока вы не нажмете сочетание клавиш CTRL-C. Заметьте, что FPipe также указывает равноправные IP-адрес и номер порта отправителя каждого подключения. Параметр -s утилиты FPipe позволяет использовать преимущества более детальной спецификации портов.
C:\>fpipe -l 139 -r 139 -s 88 192.168.97.154
Этот пример сначала может показаться тривиальным. В конце концов, какая польза от перенаправления одного порта NetBIOS на другой? Ценность заключается в том, что весь SMB-трафик после перенаправления порта имеет номер порта отправителя - 88. Подобная уловка, связанная с портом отправителя, позволяет обойти неверно сконфигурированные брандмауэры. Другие хорошие порты отправителя, которые можно попробовать использовать для этих целей, имеют номера 20, 25, 53 и 80. В разделе "Пример из жизни. Пакетные фильтры, порты и проблемы" далее в этой лекции рассказывается, почему изменение номера порта отправителя позволяет обходить правила сетевого доступа.
Параметр -i становится полезным на компьютерах с несколькими сетевыми адаптерами ( multi-homed system ), когда вы хотите указать определенный интерфейс для прослушивания.
C:\>fpipe -l 80 -r 22 -i 10.17.19.42 192.168.97.154
Такая функция весьма полезна на Web-серверах. Например, Web-сервис IIS-сервера может быть связан с определенным адаптером, но порт 80 разрешен для всех интерфейсов. Установите FPipe на прослушивание одного из других интерфейсов, и порт 80 будет ваш.