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

Нормально ли иметь много подключений с моего собственного IP-адреса сервера, когда я запускал команду netstat?

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

netstat -tn 2>/dev/null | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head

Объяснение команды можно найти здесь: http://www.mkyong.com/linux/list-all-ip-addresses-connected-to-your-server/ (Я разместил ссылку, по которой я нашел команду после некоторого поиска в Google, прежде чем я спросил здесь, и в этом блоге есть много объяснений того, что на самом деле делает команда. Но почему-то у меня нет опыта и мне нужна дополнительная информация об этом вопрос. Прошу вашей помощи и терпения).

Получил вот что:

223 MY OWN SERVER IP
  6 36.83.145.0
  6 141.0.11.183
  6 118.96.107.46
  5 114.121.128.224
  4 139.194.112.178
  4 125.162.210.152
  3 114.121.130.92
  2 82.145.211.30
  1 95.128.246.45

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

Как уже заявил Теро Килканен в своем комментарии: "... Это полностью зависит от приложений, которые вы запускаете на своем сервере ...".

Исходя из самого вашего вопроса, я предполагаю, что это не Вам легко получить общую картину вашей системы, чтобы решить, являются ли ваши 223 соединения "нормальными" или нет.

Чтобы помочь вам решить это, вам необходимо понять именно что такое число 223 (я имею в виду число; то самое число, на котором вы основываете весь свой вопрос).

То, что вы выполнили (... и вырезали и вставили в свой вопрос), представляет собой цепочку из 8 команд, где вывод n-й команды предоставляется в качестве входных данных для n + 1-го, за единственным исключением первый (который не получает ниоткуда) и последний (вывод которого вам показан).

Давайте проверим эти команды одну за другой:

  • netstat -tn 2> / dev / ноль: это выведет TCP-соединения, зарегистрированные в настоящее время в вашей системе. Обратите внимание:
    • каждый TCP-соединение будет соответствовать, независимо от состояния. Это означает, что вывод будет содержать, например, СОЗДАНО соединение (следовательно, реальные, активные, соединения), а также ВРЕМЯ ЖДЕТ ед. Другими словами: будет показано не только реальное, установленное, соединение. Подробное обсуждение этого вопроса выходит далеко за рамки этого ответа. Пожалуйста, задокументируйте себя по разумному минимуму, прежде чем запрашивать подробности;
  • grep: 80: это проанализирует каждую строку, полученную из предыдущего вывода, и отфильтрует только строки, содержащие текст «: 80». Обычно это означает, что только соединение, относящееся к HTTP выбраны. Обратите внимание:

    • с таким "grep", без различия сделано в отношении ПТС источник или место назначения порт. Это означает, что отфильтрованные строки будут связаны как с входящий TCP / 80 соединения (обычно управляемые вашим локальным веб-сервером) и исходящий TCP / 80 соединения (те, где ваша система это HTTP-клиент, например, при обновлении некоторых пакетов / ОС или при доступе к некоторым онлайн-сервисам, RSS-каналам и т. д.);
  • awk '{print $ 5}': на основе строк, отфильтрованных выше, будет выбран пятый столбец. Такой столбец содержит МЕСТО НАЗНАЧЕНИЯ IP-адрес, а также МЕСТО НАЗНАЧЕНИЯ Порт TCP в виде 1.2.3.4:5678. Обратите внимание, что в соответствии с указанным выше TCP-порт назначения будет не обязательно быть 80;

  • вырезать -d: -f1: это разделит указанную выше пару (:) и извлечет первую часть (IP-адрес);

  • Сортировать: это получит вывод из приведенной выше команды и произведет лексикографически упорядоченный вывод;

  • uniq -c: это сгруппирует входящие строки (которые упорядочены) и подсчитает количество вхождений каждой группы, добавив такое число (счетчик) к значению каждой группы;

  • sort -nr: это упорядочит значения в числовом порядке на основе числа, которое должно быть в самом начале каждой строки. Также порядок обратный (от самого высокого до самого низкого);

  • глава: это покажет (на выходе) только первые 10 строк ввода.

При всем вышесказанном должно быть ясно, что: «когда вы запускали вышеуказанные команды, в ваших TCP / стеках было 223 сокета в различных состояниях, включая состояние ESTABLISHED, ссылаясь на обе входящие и исходящие TCP-соединения с портом источника 80 или портом назначения 80. "

Нормально это или нет ... "... полностью зависит от приложений, которые вы запускаете на своем сервере ...".

В заключение:

  • обратите внимание, что, учитывая текущую тенденцию в отношении AJAX / асинхронных HTTP-запросов, это совершенно обычное явление для не замужем веб-страницу, чтобы открыть и оставить открытыми несколько одновременных TCP / соединений с одним и тем же целевым IP;

  • единичный исходящий (или входящий) DOS атаки может создавать очень большое количество сокетов IP (включая TCP или UDP).


P.S .: в одном из комментариев вы написали: "Дайте мне знать, если я задаю этот ответ не в том месте, тогда хорошо, извините". Я действительно думаю, что это подходящее место. Но, кроме того, я думаю, что вы осваиваете стек TCP / IP и общее сетевое и системное администрирование на таком уровне, что ... Я, наверное, зря трачу свое время на написание этого очень ответ :-)

Надеюсь, вы это оцените (... и начнете тратить больше времени на изучение, чем на такие вопросы на ServerFault)

Прошло 2 года, но я думаю, что это cmd могло быть больше так:

netstat -polenta | awk '{print $5}' | awk -F ":" '{print $1}' | sort | uniq -c | sort -nr | head

Поскольку это легче понять, я добавил только еще одну awk, которая удаляет всю часть после разделителя ":". Таким образом вы удаляете 2 команды для использования 1 (cut -d: -f1 и grep: 80 превратились в awk -F ":" '{print $ 1}').

В конце концов, результат тот же, я знаю, но я думаю, что у вас есть как минимум на один cmd меньше, чтобы записать на терминал.