Как я могу симулировать блокировку RTMP через порт 80 в Windows? - PullRequest
3 голосов
/ 25 мая 2010

У меня есть простой Flash-клиент, подключающийся к Flash Media Server, и я хотел бы иметь возможность симулировать клиент, выполняя следующие действия:

  • Попытка подключения к потоку RTMP через порт 1935 и сбой,
  • Откат к RTMP на порту 443 и сбой,
  • Откат к RTMP на порту 80 и сбой, и в конечном итоге
  • Откат к RTMPT (HTTP) через порт 80 и успешное завершение.

Предполагается, что это поведение Flash по умолчанию, например , как описано здесь :

Во многих случаях это все, что вам нужно пройти мимо многих брандмауэров даже без используя HTTP туннелирование. Это работает из-за функции, встроенной в Объект NetConnection. Когда ты не указать номер порта в RTMP адрес, Macromedia Flash попытается подключиться к порту 1935. Если не получится Затем он попытается подключиться к порту 443; если это не удастся, он попробует порт 80. Таким образом, для доступа к портам 1935, 443 или 80 не требуется кодирование не указывать порт в RTMP адрес.

А вот :

При подключении к FMS вы будете использовать Объект netConnection на клиенте сторона, в пределах параметров метод подключения вы можете установить, что протокол, который вы хотите использовать: nc.connect ( "RTMP: // все, что"). если ты сделать это следует отметить, что флеш-плеер будет перебирать разные порты и протоколы пытаются подключиться автоматически. Конечно Вы можете установить, какой протокол вы хотите используйте, изменив часть rtmp. The Flash Player попытается подключиться к RTMP через порт 1935, затем порт 80, тогда он попробует rtmpt (рассмотрен ниже) через порт 80 .

Я на машине с Windows 7, и, по сути, я ищу советы о том, как мне смоделировать среду, в которой Flash не может подключиться к потоку RTMP на любом порту и возвращается к RTMPT. Брандмауэр Windows, кажется, позволяет устанавливать «номер протокола» (в дополнение к обычному номеру порта - например, TCP равен 6, UDP 17 и т. Д.), Но я не могу найти номер протокола для RTMP.

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

Ответы [ 3 ]

1 голос
/ 07 марта 2011

Мне удалось сделать это с помощью Firefox в Windows 7 с прокси-сервером, работающим на локальной машине (localhost). Я использовал брандмауэр Windows для блокировки исходящих подключений к портам 1935, 443 и 80 для определенного IP-адреса назначения для процесса: «plugin-container.exe». (Поверьте, Firefox 3.6 и выше, используйте «plugin-container.exe» для запуска Flash-плагина.) А затем я устанавливаю настройки прокси системы Windows (через IE, Сервис-> Свойства обозревателя-> Подключения-> Настройки локальной сети), чтобы использовать мой локальный http прокси-сервер. Интересно, что Flash, по-видимому, использует настройки прокси-сервера Windows, а не Firefox, даже при запуске из Firefox.

0 голосов
/ 17 июня 2010

Вам придется использовать посредника прокси-сервера HTTP, который выдаст ошибку HTTP для недопустимых запросов. Я не уверен, как протокол RTMP делает это, но я подозреваю, что вы можете ошибочно утверждать, что он пытается RTMP через порт 80, а затем возвращается к RTMPT на том же порту. Это действительно не имеет большого смысла. НО - если это действительно так, что лично я нахожу крайне маловероятным, и лично я никогда не разработал бы протокол для использования двух разных форматов на одном и том же порте, ТОГДА вам понадобится посредник, такой как прокси-сервер HTTP, который является только реалистично, как я мог видеть это на практике.

0 голосов
/ 25 мая 2010

RTMP построен поверх TCP, поэтому вы должны иметь возможность выбрать TCP и соответствующий порт, чтобы использовать брандмауэр для тестирования.

Вы захотите создать одно пользовательское правило для каждого порта.

name: RTMP Default (1935)
protocol: TCP
local port: any
remote port: 1935
local ip: any
remote ip: any

name: RTMP over 443
protocol: TCP
local port: any
remote port: 443
local ip: any
remote ip: any

name: RTMP over 80
protocol: TCP
local port: any
remote port: 80
local ip: any
remote ip: any

Затем установите правило RTMP по умолчанию, чтобы заблокировать весь трафик, но разрешите другим. Затем проверьте и убедитесь, что он переключается на порт 443. Затем установите для RTMP правило 443 для блокировки и убедитесь, что он переключается на порт 80.

...