Як я можу перевірити, чи слухає порт на сервері Linux?
netstat -an | grep PORTNUMBER | grep -i listen
Якщо вихід порожній, порт не використовується.
Як я можу перевірити, чи слухає порт на сервері Linux?
netstat -an | grep PORTNUMBER | grep -i listen
Якщо вихід порожній, порт не використовується.
Відповіді:
Ви можете перевірити, чи прослуховується процес на порталі TCP або UDP за допомогою netstat -tuplen
.
Щоб перевірити, чи доступні деякі порти ззовні (це, мабуть, те, що ви хочете), можна скористатися сканером портів, як Nmap з іншої системи. Запуск Nmap на тому ж хості, який ви хочете перевірити, є абсолютно марним для ваших цілей.
-t
, -u
, -p
, -l
, -e
, і -n
. Завдяки аналізатору параметрів він може бути виражений як -tuplen
. linux.die.net/man/8/netstat
telnet
команда зазвичай підтримує лише TCP, тому вам не пощастить, якщо служба, яку ви хочете перевірити, працює за іншим протоколом.
sudo netstat -tuplen
. Це дасть вам процеси, які належать не тільки вам, але й іншим, і він надрукує додаткові деталі (наприклад, PID / назва програми), якщо вони вже не відображаються як некористувацький користувач.
Найшвидший спосіб перевірити, чи не відкрито порт TCP (включаючи будь-які апаратні брандмауери), це набрати з віддаленого комп'ютера (наприклад, на робочому столі):
telnet myserver.com 80
Який спробує відкрити з'єднання з портом 80 на цьому сервері. Якщо ви вимкнули час або заборонили, порт не відкритий :)
if you get a time out or deny, the port is not open
Добре, підсумовуючи, у вас є сервер, на якому ви можете увійти. Ви хочете побачити, чи щось слухається на якомусь порті. Як корінь, запустіть:
netstat -nlp
це покаже перелік процесів прослуховування на портах TCP та UDP. Ви можете відсканувати (або вимкнути) його на процес, який вас цікавить, та / або номери портів, які ви очікуєте побачити.
Якщо очікуваного процесу немає, слід запустити цей процес і знову перевірити netstat. Якщо процес є, але він прослуховує інтерфейс і порт, якого ви не очікували, то виникає проблема з конфігурацією (наприклад, це може бути прослуховування, але лише в інтерфейсі зворотного зв'язку, тому ви побачите 127.0.0.1:3306 і немає ніяких інших рядків для порту 3306, у випадку конфігурації за замовчуванням для MySQL).
Якщо процес закінчується, і він прослуховує очікуваний порт, ви можете спробувати запустити "telnet" до цього порту зі свого Macbook у вашому офісі / будинку, наприклад,
telnet xxxxxxxxxxxx.co.uk 443
Це перевірить, якщо (якщо використовувати стандартні порти), що веб-сервер налаштований для SSL. Зауважте, що цей тест за допомогою telnet буде працювати лише в тому випадку, коли процес прослуховується через порт TCP. Якщо це порт UDP, ви можете також спробувати з будь-яким клієнтом, який ви збиралися використовувати для підключення до нього. (Я бачу, що ви використовували порт 224. Це masqdialer, і я поняття не маю, що це таке).
Якщо служба є, але ви не можете до неї потрапити зовні, значить, брандмауер блокує вас. У цьому випадку запустіть:
iptables -L -n
Це покаже всі правила брандмауера, як визначено у вашій системі. Ви можете розмістити це, але, як правило, якщо ви не дозволяєте все в ланцюзі INPUT, вам, ймовірно, потрібно буде чітко дозволити трафік на відповідному порту:
iptables -I INPUT -p tcp --dport 224 -j ACCEPT
або щось у цьому напрямку. Не запускайте команди брандмауера наосліп, спираючись на те, що вам повідомив незнайомець в Інтернеті. Подумайте, що ви робите.
Якщо ваш брандмауер на коробці дозволяє вам потрібний трафік, то ваша хостинг-компанія може працювати з брандмауером (наприклад, вони дозволяють лише SSH (22 / tcp), HTTP (80 / tcp) і HTTPS (443 / tcp) і заперечувати весь інший вхідний трафік). У цьому випадку для вирішення цієї проблеми вам потрібно буде відкрити квиток служби підтримки, хоча, мабуть, у вашому cPanel може бути щось, що може це дозволити.
Я використовую комбо netstat
та lsof
:
netstat -an | grep <portnumber>
lsof -i:<portnumber>
Щоб побачити, чи використовується порт, і що він використовує.
Якщо ви підключені до системи і можете запустити команду як root, то ви можете перевірити вихід iptables
iptables -L -vn
тут буде перераховано правила брандмауера та які порти є відкритою ціллю ACCEPT
та будь-які явно закриті цілі портів REJECT
.
firewall-cmd --query-port=port/protocol
, наприклад firewall-cmd --query-port=80/tcp
.