Не блокировать порт

  • Автор темы Red Wind
  • Дата начала
Статус
Закрыто для дальнейших ответов.
R

Red Wind

Гость
#1
Доброго времени суток!
Пишу приложение которое должно работать с портом через TcpListner. Всё ок, но мне бы хотелось сделать так, что бы если моё приложение не блокировало порт, то есть к этому порту поверх меня должно подключаться другое приложение.
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#2
и как эти два приложения будут делить пакеты? конечно беркли сокетов есть опция позволяющая связывать несколько сокетов на один порт, но в твоем случае она вряд ли применима

SO_REUSEADDR
By default, a socket cannot be bound (see bind) to a local address that is already in use. On occasion, however, it can be necessary to reuse an address in this way. Because every connection is uniquely identified by the combination of local and remote addresses, there is no problem with having two sockets bound to the same local address as long as the remote addresses are different. To inform the Windows Sockets provider that a bind on a socket should not be disallowed because the desired address is already in use by another socket, the application should set the SO_REUSEADDR socket option for the socket before issuing the bind. Note that the option is interpreted only at the time of the bind: it is therefore unnecessary (but harmless) to set the option on a socket that is not to be bound to an existing address, and setting or resetting the option after the bind has no effect on this or any other socket. SO_REUSEADDR is not applicable for ATM sockets, and although requests to reuse and address do not result in an error, they have no affect on when an ATM socket is in use.
 
R

Red Wind

Гость
#3
Я понимаю, но как тогда работает тот же фаервол? Хотя мне вообще не нужно перехватывать трафик с порта, мне просто требуется повесить на порт ssl сертификат. То есть сделать так, что бы весь входящий трафик расшифровывался этим сертификатом и расшифровонные данные передавались какому либо клиенту.
 
R

Red Wind

Гость
#5
А можешь дать какие-нибудь ссылки где про это написано. А то меня только на форумы сисадминов из гугла выкидывает.
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#6
по LSP конечно могу дать ссылочку http://www.komodia.com/index.php?page=lsp.html, но в данном случае это будет стрельба из пушки по воробьям.

если клиентское приложение позволяет настраивать хост по которому происходит коннект то ремаппинг портов имхо будет оптимальныйм выбором.
 
R

Red Wind

Гость
#7
Про LSP я прочитал в MSDN, а вот инфу про ремаппинг портов так и не нашёл. Собственно ссылки на неё я и просил.
<!--QuoteBegin-Kmet+1:05:2007, 23:12 -->
<span class="vbquote">(Kmet @ 1:05:2007, 23:12 )</span><!--QuoteEBegin-->если клиентское приложение позволяет настраивать хост по которому происходит коннект
[snapback]64170" rel="nofollow" target="_blank[/snapback]​
[/quote]
Что значит хост?
 

Kmet

Well-Known Member
Java Team
25.05.2006
1 036
8
#8
я не совсем правильно выразился. позволяет настраивать IP и порт к которому происходит коннект
 
R

Red Wind

Гость
#9
То есть под ремаппингом портов понимается перенаправление трафика на другой порт?
 
P

Pasha

Гость
#10
Для: Red Wind
так что конкретно тебе надо сделать? Повесить 2 независимых приложения на один порт? Или добавить шифрование к уже существующему соединению?
 
R

Red Wind

Гость
#11
Добавить шифрование, но приложение которое висит на этом порту я изменять не могу.
 
P

Pasha

Гость
#12
В клиентской части приложения можно явно задать ip сервера? Если да, то делаешь следующий финт ушами:
1. Клиентская часть висил на машине ip_A, серверная на машине ip_B:portX
2. Пишешь свое приложение из 2-х частей. Первая часть (прокси-клиент) вешается на ip_A:portX.
3. Клиентское приложению говоришь коннектится к ip_A:portX вместо ip_B:portX.
4. Прокси-клиент шифрует все, что получает от клиентского приложения и отправляет это все на ip_B:portY.
5. На ip_B:portY висит прокси-сервер, который расшифровывает все, и отдает это серверу ip_B:portX.
6. Данные от сервера идут через эту мегацепочку в обратной последовательности.

Если явно задать ip сервера нельзя, то начинаешь бить в бубен с записями в hosts и порт мэппингом.

Если использовать SSL не самоцель, а просто требуется секьюрность соединения в какой-то несекьюрной общей сети, то настрой RAS на сервере, и сделай VPN на 2 машины. Тогда вообще ничего писать не придется.
 
R

Red Wind

Гость
#13
К сожалению, к клиентской части я вообще не имею никакого отношения. Все ухищрения нужно делать на сервере.
 
P

Pasha

Гость
#14
Т.е. клиент в любом случает будет передавать данные в открытом виде, а сервер просто для развлечения будет их сам для себя шифровать? :) Нафига тогда вообще шифрование?
 
R

Red Wind

Гость
#15
Клиент в любом случае будет шифровать данные и передавать их на сервер в таком виде.
 
P

Pasha

Гость
#16
Для: Red Wind
А сервер на другой порт можно перевесить?
 
R

Red Wind

Гость
#17
Лан, спасибо. Буду перенаправлять расшифрованый трафик на другой порт.
 

Гость
#18
Вообще-то Паша прав: сначала надо понять что делается и зачем. В зависимости от требований к безопасному каналу и вообще к безопасности этих данных, перенаправление внутри машины тоже может представлять проблемы. Например, случайная мисконфигурация может отправить расшифрованные пакеты гулять по сети. И кстати, а как вообще получилось, что клиент данные шифрует, а сервер - нет, при этом они очевидно используют один и тот же протокол поверх криптографии...?
 
Статус
Закрыто для дальнейших ответов.