Убить прослушивающий порт для определенного IP

740
Daz

У меня есть SIP-сервер с несколькими сетевыми интерфейсами. (виртуальный) Когда я выполняю команду, netstat -nlputона показывает все прослушиваемые IP и порты, как показано ниже.

root@DUO-CALLSERVER004:/etc/init.d# netstat -nlput Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 723/rpcbind tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 172.20.112.238:8021 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1835/sshd tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 1868/nrpe tcp 0 0 172.20.112.118:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 172.20.112.117:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 172.20.112.114:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 172.20.112.112:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 172.20.112.110:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 172.20.112.238:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 172.20.112.111:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 172.20.112.116:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 172.20.112.115:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp 0 0 192.168.52.108:5060 0.0.0.0:* LISTEN 21036/freeswitch tcp6 0 0 :::111 :::* LISTEN 723/rpcbind tcp6 0 0 :::22 :::* LISTEN 1835/sshd tcp6 0 0 :::5666 :::* LISTEN 1868/nrpe udp 0 0 172.20.112.118:5060 0.0.0.0:* 21036/freeswitch udp 0 0 172.20.112.117:5060 0.0.0.0:* 21036/freeswitch udp 0 0 172.20.112.114:5060 0.0.0.0:* 21036/freeswitch udp 0 0 172.20.112.112:5060 0.0.0.0:* 21036/freeswitch udp 0 0 172.20.112.110:5060 0.0.0.0:* 21036/freeswitch udp 0 0 172.20.112.238:5060 0.0.0.0:* 21036/freeswitch udp 0 0 172.20.112.111:5060 0.0.0.0:* 21036/freeswitch udp 0 0 172.20.112.116:5060 0.0.0.0:* 21036/freeswitch udp 0 0 172.20.112.115:5060 0.0.0.0:* 21036/freeswitch udp 0 0 192.168.52.108:5060 0.0.0.0:* 21036/freeswitch udp 0 0 0.0.0.0:111 0.0.0.0:* 723/rpcbind udp 0 0 0.0.0.0:731 0.0.0.0:* 723/rpcbind udp6 0 0 :::111 :::* 723/rpcbind udp6 0 0 :::731 :::* 723/rpcbind 

я хочу убить порт 5060, который прослушивает 172.20.112.117:5060. Но другой набор IP-адресов также перечисляет тот же порт, используя тот же PID. Я не хочу их убивать. Только 172.20.112.117 IP нужно освободить от порта 5060. Есть ли способ сделать это?

0
Зависит от того, связаны ли разные процессы с разными IP-адресами или нет. Используйте `lsof`, чтобы найти, какой процесс слушает` 172.20.112.117: 5060`. Если он не слушает другие порты, убей его. dirkt 7 лет назад 0
... который, как правило, уже показан в столбце «PID / Program» вывода netstat. grawity 7 лет назад 0

1 ответ на вопрос

0
Seth

Настройте процесс так, чтобы он связывался только с правильными адресами вместо 0.0.0.0. Если процесс Freeswitch, вы должны взглянуть на конфигурацию. Из списка рассылки (хотя и датированного):

Чувак, прямо из конфигурации по умолчанию:

<!-- bind_server_ip Can be an ip address, a dns name, or "auto". This determines an ip address available on this host to bind. If you are separating RTP and SIP traffic, you will want to have use different addresses where this variable appears. Used by: sofia.conf.xml dingaling.conf.xml --> <X-PRE-PROCESS cmd="set" data="bind_server_ip=auto"/> 

В качестве альтернативы из вики .

Интересно, что это ставит слушателя на каждый IP. обычно при привязке к 0.0.0.0/all-Interfaces привязка составляет 0.0.0.0 для netstat. Должно быть, VOIP вещь. Frank Thomas 7 лет назад 0
Это только мое предположение. Это может быть неправильно, так как конфиг говорит «auto», это может быть тем, что они делают. Я действительно не проверял специфику этого программного обеспечения. Seth 7 лет назад 0
@FrankThomas: Возможно, для симметрии с UDP - и в UDP это все еще часто делается, потому что старые операционные системы не могли сказать вам, на какой адрес был отправлен пакет, поэтому вы не могли правильно отправить ответ. ntpd и krb5-kdc делают это, по крайней мере. grawity 7 лет назад 1