Как контролировать интернет-соединение на предмет прерываний - для Mac OS X


16

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

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

Это очень раздражает по двум причинам. Я загружаю что-то, и затем загрузка внезапно останавливается, и я должен начать снова. Другая причина заключается в том, что я использую VoIP-бокс, подключенный к моему телефону через Ethernet, и этот VoIP-бокс теряет соединение каждый раз, и мой VoIP-телефон перестает принимать / совершать звонки, заставляя меня перезапускать бокс каждый раз, когда я его обнаруживаю, и часами оставаться с телефон выключен, не замечая.

У меня вопрос: как я могу следить за интернет-сервисом в течение определенного периода, сообщая мне, когда сервис не работает, создавая графику или что-то в этом роде? Любой инструмент или какой-либо способ для мониторинга качества сети или соединения, которые могут работать на Mac?

Моя идея состоит в том, чтобы что-то показать им и доказать, что я прав.


Этот Q действительно может быть по теме, он соответствует шаблону «хороший вопрос» (из Как я могу задать вопрос, который может потребовать рекомендации программного обеспечения? ) «У меня есть <проблема-x - прерывания сети >, которые я не знаю, как Я уже пробовал X, Y, Z (перезапустите VoIP, когда я его обнаружу) , но эти программы не работают из-за того или другого. Как мне это сделать? " Является ли единственной проблемой в основном запрос «инструмента для мониторинга интернет-соединения» вместо того, чтобы сказать «как контролировать интернет-соединение на предмет прерываний?»
Xen2050

Ответы:


5
Applications->Utilities->Console.app

Посмотрите в журналах там как начало.

Вы также можете посмотреть в ntop или Little Snitch .


1
ntop.org <правильная ссылка на ntop (я думаю)
Фрэнк Ламмер

Найдите en0или en1откройте console.app (имена вашего сетевого интерфейса), чтобы увидеть информацию о сети.
Джастин

7

Если вы используете следующее:

ping -A -i 10 --apple-time 10.20.30.40 > monitor.txt

Он будет работать непрерывно, пока не будет остановлен, и каждые 10 секунд пинговать 10.20.30.40(изменить адрес)

Это --apple-timeозначает, что он будет регистрировать время каждого пинга, чтобы вы могли увидеть сбои. Вот так:

11:33:10.793801 64 bytes from 10.20.30.40: icmp_seq=0 ttl=58 time=27.744 ms
11:33:11.780250 64 bytes from 10.20.30.40: icmp_seq=1 ttl=58 time=9.757 ms
11:33:12.781136 64 bytes from 10.20.30.40: icmp_seq=2 ttl=58 time=10.150 ms
11:33:13.782932 64 bytes from 10.20.30.40: icmp_seq=3 ttl=58 time=11.779 ms
11:33:14.785446 64 bytes from 10.20.30.40: icmp_seq=4 ttl=58 time=11.254 ms

2

Как насчет pingработы в терминале? Просто найдите сервер, который включен и отвечает на пинги. Хотя он не показывает точное время, он дает вам какое-то доказательство того, что что-то не так.

Отредактировано, чтобы добавить: я использовал это сам некоторое время назад для подобного. Хотя они утверждали, что моя (устаревшая, если честно) беспроводная точка доступа может быть виновата, поскольку они ничего не нашли, «у меня есть таймауты пинга по крайней мере раз в час», что помогло инженеру проверить материал.


2

пинг

Для мониторинга интернет-соединения вы можете просто использовать pingкоманду. Он просто отправляет ICMP ECHO_REQUEST и ожидает ответа.

Пропингуя IP-адрес вашего маршрутизатора, когда он не отвечает, вы можете сообщить своему интернет-провайдеру о прерывании Интернета.

Если у вашего маршрутизатора есть брандмауэр, используйте arpingвместо него или просто выберите другой удаленный хост, например

$ ping 4.2.2.1
PING 4.2.2.1 (4.2.2.1): 56 data bytes
64 bytes from 4.2.2.1: icmp_seq=0 ttl=57 time=37.710 ms
64 bytes from 4.2.2.1: icmp_seq=1 ttl=57 time=32.051 ms

Arping

Для мониторинга вашего физического подключения к маршрутизатору вы можете использовать arping, например,

$ sudo arping 192.168.0.1

Это особенно полезно, когда ваш WiFi продолжает падать, и ваш маршрутизатор не отвечает на стандартные пакеты ICMP. Установить через Brew ( brew install arping).

Tcpdump

Есть такие, tcpdumpкоторые могут сбрасывать трафик в сети. Например , чтобы сбросить все исходящие пакеты в порт 80и 443, синтаксис может быть:

sudo tcpdump -i en0 port http or port https

Для записи в файл добавьте -w file, а затем прочитайте его через -r file. Это будет включать точные временные метки каждого сетевого пакета, полученного или отправленного.

Чтобы проверить, не прерывается ли Интернет, найдите SYN-пакеты (в разделе «Флаги»), которые отправляет ваш компьютер, и для каждого из них сервер должен ответить SYN-ACK. Если этого не происходит и трафик не возвращается (только пакеты SYN, то нет подключения к интернету).


Есть ли простой способ (например, скрипт), который автоматически ищет выходные данные tcpdump в поисках пакетов SYN, которые не имеют соответствующего ответа SYN-ACK?
Xen2050

@ Xen2050 Я думаю, я бы заполучил дамп или вывод, посмотрев Sфлаг вроде: sudo tcpdump -i en0 -nl | grep -C5 "Flags .S"если оттуда, если вы согласны с контекстом (дополнительно | grep ack), это означает, что что-то ответило. Так что вам нужно что-то противоположное. Я думаю, что вы найдете какой-нибудь синтаксис awk/, sedкоторый может найти 5 SYN-пакетов подряд, а затем он может предупредить, что что-то не так (если вы не связываетесь с каким-то мертвым хостом).
Кенорб

Для мониторинга в реальном времени, ping -A www.yahoo.com подаст звуковой сигнал, когда соединение разорвется . Хотя вы можете использовать IP-адрес, использование удобочитаемого адреса также будет проверять сбои DNS.
Брианфит

1

Это приложение регистрирует состояние вашего соединения и даже утверждает, что оно используется Apple для внутреннего использования.

Записывайте ваши сбои в сети, график скорости со временем и многое другое. Network Logger Pro также можно использовать для мониторинга веб-сайтов и создания хронологических графиков их скоростей, отключений и времени отклика.

https://itunes.apple.com/us/app/network-logger-pro/id764324406?mt=12

Хотя это 10 долларов: /


1

Это был один из симптомов, которые у меня были , кроме низкой пропускной способности. Оказалось, это кабельный модем. Хорошей новостью является то, что вам, возможно, не придется никого убеждать, чтобы получить новый кабельный модем. Оказалось, что у моего провайдера есть политика, согласно которой вы можете просто заменить кабельный модем на новый по своему усмотрению. Проверьте и посмотрите, сделает ли это ваш.


Интересно, но вы попали в точку. Да, мое соединение, к сожалению, по кабельному модему, но оно совершенно новое (оно было установлено ими месяц назад). Я подозреваю, что проблема заключается в их кабельной сети. Мне никогда не нравился кабельный интернет (я был вынужден им пользоваться, потому что в моем регионе нет другой широкополосной компании, предлагающей услуги).
SpaceDog

1

Для собственного использования я написал простой скрипт Bash, чтобы проверить это. Он используется pingкак способ контроля за тайм-аутами, именно так, как предлагает большинство ответов. Преимущество сценария заключается в том, что вывод на ваш экран показывает только истекшие значения времени ожидания, а не успешные. Кроме того, вы можете передать параметр продолжительности мониторинга, а не количество попыток проверки связи. Короче говоря, это просто оболочка для следующего: ping google.com -i 1 -c 60 | grep "timeout\|statistics\|transmitted\|avg" его исходный код и простые инструкции по установке доступны по ссылке ниже:

https://github.com/superman-lopez/monitor-timeouts

Я протестировал скрипт на macOS и Ubuntu Linux.

#!/bin/bash
#Usage: ./monitor-timeouts.sh [duration] [target]
#example: ./monitor-timeouts.sh 60 192.168.1.1
minutes=$1
target=$2
if [ $# -eq 0 ]; then
    minutes=1
    target=google.com
fi
if [ -z "$2" ]; then
    target=google.com
fi
pings=$((60 * $minutes))

system=`uname`
if [[ $system == *"Linux"* ]]; then
    extraflag="-O"
fi

echo "Start monitor for network timeouts at `date` for $minutes minute(s)."
echo "Target host: $target"
ping $target -i 1 -c $pings $extraflag | grep -i "timeout\|unreachable\|no answer\|statistics\|transmitted\|avg"
echo "End monitoring at `date`."

Добро пожаловать в Супер пользователя! Ваш сценарий достаточно короткий, чтобы включить его в ваш пост; Вы должны отредактировать свой ответ, чтобы включить его
bertieb

Спасибо за предложение
Superman.Lopez
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.