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

определение того, какие порты использует программа

Я пытаюсь использовать wirehark, чтобы определить, какие порты использует определенная программа. Программа отлично подключается к серверу, если мы находимся в одной сети, но мне, очевидно, нужно перенаправить порты на брандмауэре, чтобы использовать его за пределами офиса.

Включаю wirehark и пытаюсь установить соединение из программы на 192.168.1.6. Затем я смотрю на пакеты, которые идут на 192.168.1.6 и из него.

Все они TCP и говорят:

Source: 192.168.1.130
Dest: 192.168.1.6
Service: TCP    
Info: 49716 > 808 [PSH, ACK] Seq=1102 Ack=395 Win=65304 Len=87

или некоторые идут другим путем

Source: 192.168.1.6 
Dest: 192.168.1.130 
Service: TCP    
Info: 808 > 49710 [ACK] Seq=2 Ack=320 Win=254 Len=0

У меня вопрос:

  • Исходный порт для приложений, которым не нужен конкретный исходный порт, как правило, попадает в временный диапазон> 49152. Подробнее Вот.

  • Пока брандмауэр "отслеживает состояние", другими словами, отслеживает соединения, распознает пакеты из одного и того же TCP-потока как часть одного и того же потока (подавляющее большинство современных брандмауэров делают это), вам нужно будет разрешить соединение только в одном направление (на порт 808).

Порт назначения - это порт на сервере, к которому подключается программа, в данном сценарии это TCP-порт 808. Если вы хотите, чтобы внешние пользователи могли подключаться к серверу за вашим брандмауэром, вам необходимо создать правило в вашем брандмауэре, которое разрешает внешние соединения, входящие на порт 808 сервера. Скорее всего, вам также потребуется создать правило NAT, которое переводит один из ваших маршрутизируемых (общедоступных) IP-адресов в немаршрутизируемый (частный) IP-адрес сервера. Порт на стороне клиента выделяется из пула эфемерных портов и в основном будет отличаться каждый раз, когда программа устанавливает новое соединение с сервером. Соединение между клиентом и сервером представляет собой 4-кортеж, состоящий из IP-адреса / порта источника и IP-адреса / порта назначения. Трафик от сервера к клиенту для установленного сеанса не нужно специально разрешать через брандмауэр (исходящее правило не требуется), поскольку это компонент установленного сеанса на основе вашего входящего правила.

Я думаю, что другие плакаты ответили на ваши два (более или менее) «концептуальных» вопроса, но практически говоря, в Windows вы можете запустить netstat -aon | find ":<portnumber>" который сообщит вам идентификатор процесса. Затем вы можете использовать диспетчер задач (с добавленным столбцом идентификатора процесса в разделе «Просмотр»> «Выбрать столбцы», как я полагаю), чтобы определить, какой процесс прослушивает определенный порт.

Также, TCPView от Sysinternals работает хорошо.