Назад | Перейти на главную страницу

Зеркальное отображение портов как служба Windows

Кто-нибудь знаком с инструментом зеркалирования или трансляции портов для Windows (2k8, если это имеет значение)? У меня есть установка Openfire, которая должна работать через 443, однако она не поддерживает клиентские подключения на этом порту (в настоящее время находится на порту 5222). В настоящее время брандмауэр обрабатывает эту трансляцию портов, однако это не работает для внутренних пользователей, поскольку DNS указывает на локальный адрес, а не на брандмауэр.

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

RelayTCP позволяет перенаправлять TCP / IP-соединения с локального порта на удаленный IP-адрес и порт.

Есть две версии программы:

  • Командная строка RelayTCP: исполняемый файл командной строки для перенаправления одного сокета.
  • Служба RelayTCP: это служба NT, которая позволяет выполнять несколько перенаправлений.

Если вы не возражаете, чтобы ваши сеансы XMPP были зашифрованы (и зачем вам ?!), вы должны иметь возможность использовать stunnel для прокси между двумя портами.

Есть Двоичные файлы Windows доступно, хотя я не знаю, может ли он работать как служба «из коробки».

Вы могли бы использовать Rinetd что аналогично решению других ответов, или вы можете запустить Openfire от имени администратора, что позволит ему прослушивать порты <1024, например 443, без какого-либо зеркалирования портов.

Вы можете попробовать socat под cygwin, это «швейцарский армейский нож», как netcat, но работает для двунаправленных соединений:

http://www.dest-unreach.org/socat/

один пример из man-страницы:

socat -d -d -lmlocal2 \
TCP4-LISTEN:80,bind=myaddr1,su=nobody,fork,range=10.0.0.0/8,reuseaddr \
TCP4:www.domain.org:80,bind=myaddr2

Перенаправитель портов TCP, каждая сторона привязана к другому локальному IP-адресу (привязка). В этом примере обрабатывается почти произвольное количество параллельных или последовательных подключений путем разветвления нового процесса после каждого accept (). Он обеспечивает небольшую безопасность, отправляя запрос пользователю none после разветвления; он разрешает соединения только из частной сети 10 (диапазон); из-за reuseaddr он позволяет немедленно перезапустить после завершения главного процесса, даже если некоторые дочерние сокеты не полностью закрыты. С -lmlocal2 socat регистрирует в stderr до успешного достижения цикла приема. Дальнейшее ведение журнала направляется в системный журнал с помощью средства local2.

Сначала я бы посмотрел на файл конфигурации Openfire, который довольно гибкий. Прошло некоторое время с тех пор, как я работал с ним, но порт, который он прослушивает, должен быть параметром конфигурации в файле конфигурации на основе XML, а некоторые поисковые запросы Google и / или обзор документации должны предоставить некоторые дополнительные сведения, если config не является самодокументированным. Нет смысла усложнять решение, если вы можете решить его в своем приложении, и оно может (я не уверен) быть способным даже прослушивать оба порта одновременно.