Как проверить из командной строки, что сеть достижима?

Linux (как любые современные Ose мультипроцесса, я надеялся бы), гарантирует, что процессы только обнуляются страницы, когда они выделяют память. Таким образом, процесс не может считать память, раньше используемую другим процессом.

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

  • используйте ошибку ядра
  • выведите содержание RAM или подкачки (который требует корневого или физического доступа),

Патч к ядру Linux, чтобы позволить обнулять страницы, как только они освобождены, был предложен (sanitize_mem эпизод 1, sanitize_mem эпизод 2), но насколько я могу сказать не принятый.

На практике самое большое окно для нападения является областью подкачки (который может сохранять данные в течение долгого времени), и даже который не тривиален для взломщика (кто должен украсть диск и разобраться в беспорядке страниц). Является также самым легким зафиксировать: зашифруйте область подкачки с dm-crypt.

12
17.07.2012, 06:02
5 ответов

ping к внешнему хосту может перестать работать для множества причин, только несколько из которых на самом деле говорят что-либо полезное о состоянии Вашей собственной сети.

Как первый шаг, откройте окно терминала и тип ip route ls

Необходимо видеть вывод вроде

shadur@equinox:~$ ip route ls
192.168.15.0/24 dev eth0  proto kernel  scope link  src 192.168.15.102 
default via 192.168.15.1 dev eth0 

Это указывает, что Ваша локальная сеть является соединением Ethernet (eth0) с адресом 192.168.15.0, и что его шлюз по умолчанию, через который это получает доступ к остальной части Интернета, может быть найден в 192.168.15.1.

Затем, можно попытаться ping тот адрес:

shadur@equinox:~$ ping 192.168.15.1
PING 192.168.15.1 (192.168.15.1) 56(84) bytes of data.
64 bytes from 192.168.15.1: icmp_req=1 ttl=255 time=0.352 ms
64 bytes from 192.168.15.1: icmp_req=2 ttl=255 time=0.269 ms
^C
--- 192.168.15.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.269/0.310/0.352/0.045 ms

Если Вы видите что-то подобное вышеупомянутому, Ваша собственная локальная сеть, по крайней мере, прекрасна. В этой точке можно начать смотреть с более усовершенствованными инструментами как traceroute видеть, где Ваша связь с местом назначения могла бы прерываться.

Однако после быстрой проверки Google какой growl как на самом деле предполагается, я получаю чувство, что существует что-то еще идущее не так, как надо. Можно ли развернуть вопрос предоставить нам еще несколько подробной информации о том, что Вы пытаетесь сделать, как Вы делаете попытку его, и полный вывод ошибок? Строка, которую Вы в настоящее время даете нам, отключена резко...

13
27.01.2020, 19:55
  • 1
    ip route get 1.2.3.4 более надежно, чем просто выполнение ip route ls. Первый возьмет в эффект любые правила, которые существуют в дополнение к маршрутам. Это также удаляет возможность неправильного чтения таблицы (таблиц) маршрутизации. –  Patrick 17.07.2012, 15:16

Очень простой и быстрый путь состоит в том, чтобы использовать ping команда.

Можно просто ввести

 $ ping yahoo.com

(или cnn.com или любой другой хост), и видят, возвращаете ли Вы вывод. Это предполагает, что имена хостов могут быть разрешены (т.е. DNS работает). В противном случае можно, надо надеяться, предоставить допустимый IP-адрес / количество удаленной системы и видеть, может ли оно быть достигнуто.

Вот страница справочника ping.

Обновление:

Как быстрый пример, можно проверить возвращаемое значение (например, с "echo $?") от ping видеть если команда, за которой следуют (Вы могли бы всегда передавать вывод по каналу команды к > /dev/nul). Обратите внимание, что я использую -c 1 здесь, но Вы могли использовать больше.

$ ping -c 1 yahoo.com
PING yahoo.com (72.30.38.140) 56(84) bytes of data.
64 bytes from ir1.fp.vip.sp2.yahoo.com (72.30.38.140): icmp_seq=1 ttl=52 time=83.5 ms

--- yahoo.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 83.593/83.593/83.593/0.000 ms

echo $?
0


$ ping -c 1 unicorns.are.here
ping: unknown host unicorns.are.here

$ echo $?
2
3
27.01.2020, 19:55
  • 1
    , Но как я могу понять от использования ping, что все в порядке? –  Radek 17.07.2012, 06:23
  • 2
    , Но как я могу понять от использования ping, что все в порядке? –  Radek 17.07.2012, 06:23
  • 3
    @Radek Вы попытались выполнить его уже? ping говорит Вам, если это получает ответы. –  jw013 17.07.2012, 06:26
  • 4
    @Radek Вы попытались выполнить его уже? ping говорит Вам, если это получает ответы. –  jw013 17.07.2012, 06:26
  • 5
    Что, если сервер находится на интранет только и не имеет доступа к внешнему миру? –  Radek 17.07.2012, 06:35
  • 6
    @jw013: Я не попробовал... Я не знаю для использования ping из необслуживаемого сценария. –  Radek 17.07.2012, 06:36
  • 7
    @jw013: Я не попробовал... Я не знаю для использования ping из необслуживаемого сценария. –  Radek 17.07.2012, 06:36
  • 8
    @Radek это довольно просто. Я принимаю 'возможностью соединения', Вы подразумеваете, что она может говорить с некоторым другим хостом на интранет. Таким образом выполненный ping -c 2 -n <other host's IP> и воздействуйте на код возврата: если верный (0), то это имеет возможность соединения; если ложь (1), то это не может говорить с той машиной. –  lxop 17.07.2012, 08:00
  • 9
    @Radek это довольно просто. Я принимаю 'возможностью соединения', Вы подразумеваете, что она может говорить с некоторым другим хостом на интранет. Таким образом выполненный ping -c 2 -n <other host's IP> и воздействуйте на код возврата: если верный (0), то это имеет возможность соединения; если ложь (1), то это не может говорить с той машиной. –  lxop 17.07.2012, 08:00

mtr является инструментом, который подобен ping, но дает Вам, больше информации, такой как пакет проигрывает, статистика по пакетному времени прохождения, и т.д...

2
27.01.2020, 19:55

Я бы использовал netcatдля нужного сервиса.

Например, успешное тестирование IP-порта

> nc -zv 192.168.1.1 80
Connection to 172.26.0.1 80 port [tcp/http] succeeded!

...и провал

> nc -zv 192.168.1.1 22
netcat: connect to 172.26.0.1 port 22 (tcp) failed: Connection refused

с тайм-аутом 10 с

> nc -zv -w 10 10.0.0.1 80
netcat: connect to 10.0.0.1 port 80 (tcp) timed out: Operation now in progress
1
14.05.2020, 08:26

Я использую следующую функцию... По умолчанию используется quad9, но вы можете передать другой домен. Время ожидания истекает через 15 минут после попытки

wait_for_dns() {

   local fqhn="quad9.net"
   fqhn=${1:-$fqhn}

   printf "waiting"
   for i in {1..15}; do
      local a_record=$(dig +short +time=2 $fqhn)

      if [[ $a_record != '' ]]; then
         printf "\n"
         return 0
      fi

      printf '.'
      sleep 60
   done

   printf "\n"
   return 1
}
0
14.05.2020, 17:16

Теги

Похожие вопросы