Icmp error received 6 host unreachable

Icmp error received 6 host unreachable ICMP (Internet Control Message Protocol — межсетевой протокол управляющих сообщений). ICMP является протоколом контрольных сообщений Структура межсетевого протокола IPv4. Протокол ICMP используется устройствами сети для отправки управляющих сообщений и сообщений об ошибках на компьютеры и серверы. Существует несколько областей применения протокола ICMP, например, объявление об ошибках в сети, […]

Содержание

  1. Icmp error received 6 host unreachable
  2. Destination Host Unreachable -Fix Ping Error Message
  3. Reasons to Get the ICMP Error Destination Host Unreachable
  4. How to Fix Ping Error Destination Host Unreachable?
  5. How to Solve a Destination Host Unreachable Error
  6. This can be caused by bad internet and/or cable connections or even overly aggressive firewalls
  7. In This Article
  8. Shortcut Options
  9. What Causes a Destination Host Unreachable Error?
  10. How to Fix a Destination Host Unreachable Error
  11. How to Add the Correct Gateway Address for a Destination Host
  12. Extra: How to Check if Destination Host Unreachable Error Is Resolved
  13. Протокол ICMP. Сообщения типа Error
  14. Структура сообщения ICMP
  15. Сообщения ICMP
  16. Структура заголовка сообщений ICMP
  17. Сообщение Destination Unreachable
  18. Сообщение Time Exceeded
  19. Сообщение Parameter Problem
  20. Сообщение Source Quench
  21. Сообщение Redirect

Icmp error received 6 host unreachable

ICMP (Internet Control Message Protocol — межсетевой протокол управляющих сообщений). ICMP является протоколом контрольных сообщений Структура межсетевого протокола IPv4. Протокол ICMP используется устройствами сети для отправки управляющих сообщений и сообщений об ошибках на компьютеры и серверы. Существует несколько областей применения протокола ICMP, например, объявление об ошибках в сети, объявление о перегрузке сети и устранение неполадок.

Каждое сообщение протокола ICMP передается по сети внутри пакета IP. Пакеты IP с сообщениями ICMP маршрутизируются точно так же, как и любые другие пакеты, без приоритетов, поэтому они также могут теряться. Мало того, при большой загруженности сети они могут вызывать дополнительную загрузку маршрутизаторов. Для того, чтобы не вызывать лавины сообщения об ошибках, предусмотрели, что в случае потери пакетов IP, которые сами «несут» сообщения ICMP об ошибках, новые сообщения ICMP об ошибке рождаться не будут.

ICMP только сообщает о возникших ошибках отправителю пакета; отправитель сам должен связать ошибки с конкретными прикладными программами и предпринять действия по исправлению ошибок.

Надо отметить, что большая часть ошибок исходит от отправителя, но другие — нет. Так как ICMP сообщает об ошибках отправителю, он не может использоваться, чтобы информировать промежуточные маршрутизаторы об ошибках. Например, пакет следует по пути через маршрутизаторы М1,М2,…,Мk. Если Мk содержит некорректную информацию о маршрутах и ошибочно отправит пакет на маршрутизатор Ме, то маршрутизатор Мe может лишь сообщить об ошибке отправителю пакета. К сожалению, отправитель не отвечает за эту проблему и не может управлять некорректно ведущим себя маршрутизатором Мk. Фактически, отправитель не сможет даже определить, какой маршрутизатор вызвал эту проблему.

Почему ограничивают протокол ICMP взаимодействием только с отправителем? Потому что IP- пакет содержит поля, которые определяют только отправителя и получателя; он не содержит полного описания своего пути через сеть (кроме необычных случаев, о которых мы скажем позже).

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

Источник

Destination Host Unreachable -Fix Ping Error Message

During my network engineer career, one of the common errors I received while troubleshooting connectivity issues is Destination Host Unreachable.

This error was the cause of my Internet connectivity problems most times.

The same can be true for you too. When you troubleshoot your connectivity problems, the chances of getting this ping reply are very high.

If you learn how to resolve this error by yourself, you can fix most of your Internet connectivity problems yourself. In this tutorial, I will explain everything about this error.

By the first part, you will learn the meaning of this ping reply.

The second part of this article explains the reasons to get the ping reply Destination Host Unreachable.

You will learn how to fix the Destination Host Unreachable ping error in the last part.

What does Destination Host Unreachable Ping Reply Mean?

Before proceeding to the core of this tutorial, let me explain the meaning of this ping reply.

Now you understand the meaning of this ping reply. However, to learn more about this error, you should ask yourself two questions.

    Who replied to your device this Destination Host Unreachable message?
  • Why the ping packets from your computer failed to reach the destination address?
  • Let me answer the questions one by one. But before I explain the first question, you must learn how the ping operation works.

    When you ping an address, this is how it works.

      I am pinging to my blog by typing ping www.corenetworkz.com on command prompt.

    Ping packets reach the default gateway

    Checking the ARP table and Routing table

    Finding a route to the Remote Gateway of the destination IP address

    Remote Gateway forwards the ping packets to the destination host

    Remote host reply with an acknowledgment

    Can you tell me the potential sources for a Destination Host Unreachable reply from this ping workflow algorithm?

    You can get this reply from two possible sources.

      Your Default Gateway

    How do you know whether the reply comes from your default gateway or remote gateway?

    Well, it is simple. All you have to do is to analyze the ping reply carefully. Check the format of the message. Two types of error messages are common on Windows devices.

      Reply from x.x.x.x Destination Host Unreachable

    If you see the following format, check the IP address. Most of the time, X.X.X.X must be a remote gateway address. Which shows the error message you received is from the remote gateway.

    Destination Host Unreachable

    If you don’t see an IP address in the error reply, your default gateway sends it.

    Both error formats have different reasons. I will explain the reasons to get either format in the next part.

    Reasons to Get the ICMP Error Destination Host Unreachable

    Any one of the reasons listed below can get you to the ICMP Echo message Destination Host Unreachable.

      Your Default Gateway doesn’t know the route to the destination IP address

    Packet Routing issue on Remote gateway

    The destination host might be down

    Wrong Firewall Settings

    One of the frequent questions I received from our readers is whether this error is related to the Operating System like Windows error and Linux error?

    The answer is no.

    Analyzing the ICMP Echo Destination Host Unreachable

    Let me explain why I received this ICMP Echo by analyzing a live example.

    Here I send ping packets to the global DNS address 4.2.2.2 to troubleshoot the connectivity problem. The screenshot below shows the reply I received.

    Which format is this? It is the second format of the Destination Host Unreachable error. Let me explain how to resolve this error.

    How to Fix Ping Error Destination Host Unreachable?

    If you do not want to go into the complexity of this ICMP Echo, you can follow the instructions below to resolve the Destination Host Unreachable Ping error message.

    Aggressive firewall settings can cause the destination host unreachable error.

    To check whether the firewall is the reason for this issue, disable it on your computer.

    Try to access the Internet after disabling the firewall.

    Perform a Power Cycle in your Network

      Switch off the devices on your network

    Disconnect power cables from Modem and Router

    Disconnect the Ethernet cables from Modem, Computer, and Router

    Reconnect the power and ethernet cables

    Power on the Modem and Router after one minute

    Disable IPv6 and Test the Connectivity

    Sometimes devices fell into the IP version conflicts. Different operating systems have different IP version priorities.

    Windows 10 prefer IPv6 to IPv4. The same is true for the major Linux variants like Ubuntu, Fedora, Debian, etc.

    However, sometimes devices fail to work properly with IPv6.

    Rarely it results in ICMP error messages. We can check it by disabling the IPv6 on your device.

    Let us check how to disable the IP Version 6 on a Windows 10 computer and test the issue.

      Right-click on the Network Adapter at the system tray

    Click on Open Network & Internet settings

    Click on Change Adapter options

    Right Click on the current connection and click properties

    Uncheck the Internet Protocol Version 6 (TCP/IPv6)

    Reboot your Computer

    Once you reboot your computer, check for the connection.

    About The Author:

    Alex George is a Microsoft and Cisco Certified Network Engineer. He has been working as a network engineer for more than ten years.

    His Professional Qualifications: CCNA, CCNP, and MCSE.

    Источник

    How to Solve a Destination Host Unreachable Error

    This can be caused by bad internet and/or cable connections or even overly aggressive firewalls

    In This Article

    Jump to a Section

    Shortcut Options

    • Test the IPv6 connection to determine the default gateway IP, then compare it to the device’s configured gateway via netshell IP settings.
    • Add a gateway: LAN settings >Internet Protocol Version 6 (TCP/IPv6) >Properties. Change Default Gateway to the correct address.
    • To check if the error is resolved, enter a ping test in Command Prompt: C:UsersMe>ping -6 151.101.194.114.

    This article explains how to fix a destination host unreachable error on Windows devices, as well as how to add the correct gateway address for a destination host, and how to confirm the error is resolved.

    What Causes a Destination Host Unreachable Error?

    There are many possible reasons for getting a “destination host unreachable” error, including things as simple as erroneously connected cables or an overly aggressive firewall.

    As you can see from the details below, we’re trying to ping a specific network device IP address, but the response we’re getting doesn’t provide much detail beyond the error itself:

    Pinging 151.101.194.114 with 64 bytes of data:

    Reply from 151.101.194.114: Destination host unreachable

    So, what’s going on here? In simple terms, we’re trying to communicate with a device at the specified IP address, but the remote gateway is unable to direct our ping request to the host itself, and so it sends an echo message back to say that it can’t be found.

    How to Fix a Destination Host Unreachable Error

    In diagnosing the error, it’s useful to follow the steps to fix an IPv6 error first to see if they resolve your networking issues. If the problem persists, you need to look at your network infrastructure to establish where the issue is.

    For this example, we’re going to check our Default Gateway settings, then follow the steps to fix them.

    To start, we need to check our internet connection via a browser. For this example, we’ll check google.com to see if it loads on our device. If it does, we know there’s a problem on our local network, rather than a broader connection issue.

    Next, we’re going to test our IPv6 connection to see if that’s where the issue lies. To do this, open the Command Prompt and use the following command to ping your original IP address, but type «ping -6» to isolate the IPv6 line.

    You should get a reply in the Command Prompt, which looks like this:

    The above reply comes from IP address 151.101.194.1.241, which seems to relate to the remote gateway handling our request. To check this, run a traceroute using the following command:

    You should get a response, and it should resemble the following:

    From this, we can make a judgment that 151.101.194.1.241 is configured as the default gateway. To check if this is as it should be, we can look at our IP settings via the netshell. To launch netshell, enter the following command:

    With netshell open, enter this command:

    The response will show our Local Area Connection details, with a reference line for the Default Gateway. In our example we see the following:

    This confirms that 151.101.194.1.241 is currently configured as the default gateway, but when we look at our actual device’s IP address, we see it’s slightly different: 151.101.194.1.244.

    How to Add the Correct Gateway Address for a Destination Host

    From the information gained above, we can see we need to add the correct gateway address via our Local Area Network (LAN) settings. To do this, follow these steps.

    Select Settings > Network and Internet > Network Connections.

    Right-click the relevant Local Area Network. Then, select Properties.

    From the list, select Internet Protocol Version 6 (TCP/IPv6). Next, select Properties.

    In the Properties tab, change the Default Gateway to the correct address. So, in this example, we change «151.101.194.1.241» to «151.101.194.1.244.»

    Press OK to save the changes.

    To check if the issue is resolved, go back to the Command Prompt and exit the netshell using the following command:

    Now, we’re ready to try our ping test once more, using this command:

    Just as before, the ping should come back with a reply showing the new Default Gateway.

    As we can see, our ping test is now working and our connection is running as expected.

    A request timeout error means that your request was received, but the host took too long to respond. A destination host unreachable error, on the other hand, means that your request couldn’t reach the host.

    The ping command is used to test the ability of the source computer to reach a specified destination computer. It sends Internet Control Message Protocol (ICMP) Echo request messages to the destination computer and waits for a response.

    Источник

    Протокол ICMP. Сообщения типа Error

    Протокол ICMP представляет собой механизм передачи сообщений об ошибках, которые возникают в процессе информационного обмена в сети Internet. На данный протокол не возлагаются функции локализации и устранения причин, которые привели к возникновению этих ошибок.

    Для передачи сообщений протокола ICMP по сети IP используются дейтаграммы обычного формата. Сообщение ICMP в данном случае помещается в поле DATA. Заголовок дейтаграммы, которая предназначена для переноса сообщений ICMP, имеет следующие значения полей:

    • SERVICE TYPE = 0
    • PROTOCOL = 1 (ICMP)
    • TIME TO LIVE – устанавливается в соответствии с типом сообщения в секундах
    • SOURCE IP ADDRESS – адрес источника сообщения ICMP
    • DESTINATION IP ADDRESS– адрес станции назначения для данного сообщения ICMP

    Структура сообщения ICMP

    TYPE ICMP Сообщение
    Echo Reply
    3 Destination Unreachable
    4 Source Quench
    5 Redirect
    8 Echo Request
    11 Time Exceeded
    12 Parameter Problem
    13 Timestamp Request
    14 Timestamp Reply
    15 Information Request
    16 Information Reply
    17 Address Mask Request
    18 Address Mask Reply

    Сообщение ICMP состоит из заголовка сообщения и собственно сообщения. Заголовок сообщения ICMP может занимать до 8 байтов – два 32-х разрядных слова. Собственно сообщение ICMP не имеет фиксированной длины, поэтому размер данного поля определяется типом сообщения. В заголовке сообщения размещается идентификатор типа сообщения ICMP. В таблице приведены значения поля TYPE ICMP и типы сообщений, которые соответствуют этим значениям.

    Сообщения ICMP можно условно разделить на парные и непарные. Парные сообщения состоят из двух компонентов – запрос (Request) и ответ (Reply). Сообщение типа ответ высылается станцией назначения только в ответ на полученное от источника сообщение типа запрос. К сообщениям такого типа относятся Echo Request/Reply. Непарные сообщения формируются асинхронно при возникновении какой либо проблемы при передаче дейтаграммы, и передается в адрес источника данной дейтаграммы. К сообщениям подобного типа относятся сообщения Destination Unreachable и Source Quench.

    Сообщения ICMP

    Структура заголовка сообщений ICMP

    Заголовки всех сообщений ICMP имеют примерно одинаковый формат. В четырех первых байтах заголовка сообщений ICMP размещаются поля TYPE, CODE и CHECKSUM.

    В этом поле заголовка сообщений ICMP размещается код, который соответствует типу сообщения.

    В поле CODE некоторых сообщений ICMP может быть размещен код дополнительной диагностической информации.

    В этом поле заголовка сообщений ICMP размещается контрольная сумма данного сообщения. Эта контрольная сумма вычисляется суммированием всех полей, начиная с поля TYPE. При вычислении контрольной суммы значение поля CHECKSUM полагается равным 0.

    Сообщение Destination Unreachable

    Сообщение Destination Unreachable (цель недоступна) — принадлежит к непарным сообщениям ICMP. Это сообщение формируется в том случае, если запрошенный сетевой ресурс является недоступным для запрашивающей его станции.

    7 15 31
    TYPE=3 CODE=0…12 CHECKSUM
    UNUSED=0
    Internet Header+64 первых бита дейтаграммы

    В поле CODE сообщения Destination Unreachable размещается код, который соответствует типу запрошенного недоступного сетевого ресурса или конкретизирует причину, из-за которой этот ресурс недоступен в данном случае. Возможные значения поля CODE приведены в таблице:

    CODE Значение
    Network Unreachable
    1 Host Unreachable
    2 Protocol Unreachable
    3 Port Unreachable
    4 Fragmentation Need & DF set
    5 Source Route Failed
    6 Destination Network Unknown
    7 Destination Host Unknown
    8 Source Host Isolated
    9 Communication with destination Network Administratively Prohibited
    10 Communication with destination Host Administratively Prohibited
    11 Network Unreachable for type of service
    12 Host Unreachable for type of service

    Сообщения данного типа могут быть сформированы как станцией назначения (CODE=2 и 3), так и одним из промежуточных маршрутизаторов – шлюзов (CODE=0,1,6 и т.д.). При этом в качестве адреса источника должен быть указан IP адрес узла, который обнаружил проблему. Например, сообщение №1 — Host Unreachable может быть сформировано последним маршрутизатором, который пытается доставить сообщение до хоста по непосредственно подключенной сети. Для того, чтобы станция – источник смогла правильно интерпретировать диагностическое сообщение, в тело сообщения Destination Unreachable помещается заголовок и первые 8 байт исходной дейтаграммы.

    Сообщение Time Exceeded

    Сообщение Time Exceeded – (истекло время) принадлежит к непарным сообщениям ICMP. Это сообщение должно быть сформировано в том случае, если в процессе передачи дейтаграммы истекло допустимое время её существования в сети или на хосте.

    7 15 31
    TYPE=11 CODE=0 или 1 CHECKSUM
    UNUSED=0
    Internet Header+64 первых бита дейтаграммы

    Значение поля CODE в сообщении Time Exceeded используется для уточнения причины, по которой дейтаграмма прекратила существование:

    • CODE=0 — в процессе передачи дейтаграммы поле TTL приняло значение 0
    • CODE=1 – таймер дефрагментации установился в 0 до полной сборки принятого сообщения

    Сообщение Parameter Problem

    Сообщение Parameter Problem — (проблема с параметром) принадлежит к непарным сообщениям ICMP. Сообщение данного типа должно быть сформировано в том случае, если в процессе обработки заголовка дейтаграммы на хосте или маршрутизаторе были обнаружены некорректные аргументы, которые делают невозможным дальнейшее перемещения дейтаграммы. В этом случае дейтаграмма должна быть уничтожена, а в адрес её источника должно быть передано сообщение Parameter Problem.

    7 15 31
    TYPE=12 CODE=0 или 1 CHECKSUM
    POINTER UNUSED=0
    Internet Header+64 первых бита дейтаграммы

    В поле CODE данного сообщения размещается признак типа диагностической информации. В том случае, если в этом поле находится код «0», значение поля Pointer сообщения Parameter Problem соответствует номеру байта в заголовке исходного сообщения, который не может быть адекватно интерпретирован. Например, значение Pointer=1, в данном случае указывает на возникновение проблемы с интерпретацией поля Type Of Service исходного сообщения.

    Значение поля CODE=1 должно быть сформировано в ситуации, когда причина, по которой данная дейтаграмма не может продолжать перемещение по сети заключается в несоответствии запрашиваемых параметров установленным требованиям. Такими требованиями могут быть, в частности, требования по обеспечения безопасности.

    Сообщение Source Quench

    Сообщение Source Quench – (сдерживание источника) принадлежит к непарным сообщениям ICMP. Это сообщение должно быть сформировано в том случае, если в процессе передачи дейтаграммы возникла угроза перегрузки.

    При получении от станции назначения или одной из промежуточных станций сообщения Source Quench, источник должен, используя специальные процедуры уменьшить скорость информационного обмена в указанном направлении.

    7 15 31
    TYPE=4 CODE=0 или 1 CHECKSUM
    UNUSED=0
    Internet Header+64 первых бита дейтаграммы

    При передаче этого сообщения в качестве адреса назначения должен быть использован адрес IP источника первичного сообщения. Для того, чтобы станция – источник смогла правильно интерпретировать диагностическое сообщение, в тело сообщения Destination Unreachable помещается заголовок и первые 8 байт исходной дейтаграммы.

    Сообщение Redirect

    Сообщение Redirect – (изменение маршрута) принадлежит к непарным сообщениям ICMP. Это сообщение должно быть сформировано в том случае, если при получении дейтаграммы шлюз обнаруживает, что для её передачи был выбран неудачный маршрут. На рисунке приведен пример использования сообщения Redirect для изменения неверного маршрута.

    В данном случае хост А(10.40.0.2) отправляет дейтаграмму в направлении хоста В(10.10.0.2) используя для этого в качестве шлюза маршрутизатор R2. После того, как маршрутизатор R2 получает дейтаграмму, он определяет, что данная дейтаграмма адресована в направлении 10.10.0.0. Кратчайший маршрут для достижения этой сети для маршрутизатора R2 лежит через маршрутизатор R4, который в данном случае подключен к тому сегменту сети, из которого была получена принятая дейтаграмма.

    Маршрутизатор R2 направляет дейтаграмму по направлению R4 (красная стрелка на рисунке) и одновременно формирует сообщение ICMP Redirect, в котором он рекомендует хосту А впредь для передачи дейтаграмм в направлении сети использовать в качестве шлюза маршрутизатор R4.

    7 15 31
    TYPE=5 CODE=0/1/2/3 CHECKSUM
    Gateway Internet Address
    Internet Header+64 первых бита дейтаграммы

    Сообщения данного типа могут быть сформированы только маршрутизатором – шлюзом. В заголовке сообщения ICMP Redirect размещается IP адрес шлюза, который рекомендуется использовать для достижения сетевого ресурса, указанного в исходной дейтаграмме и тип маршрута, который должен быть изменен по предложению источника сообщения ICMP. В таблице приведены используемые значения поля CODE сообщения ICMP Redirect и соответствующие им рекомендации по изменению маршрута:

    Источник

    Начало

    > Основы TCP/IP

    Протокол ICMP представляет собой механизм передачи сообщений об ошибках, которые возникают в процессе
    информационного обмена в сети Internet. На данный протокол не возлагаются функции локализации и устранения причин, которые привели к возникновению этих ошибок.

    Для передачи сообщений протокола ICMP по сети IP используются дейтаграммы обычного формата. Сообщение ICMP в данном случае помещается в поле DATA. Заголовок дейтаграммы, которая предназначена для переноса сообщений ICMP, имеет следующие значения полей:

    • SERVICE TYPE = 0
    • PROTOCOL = 1 (ICMP)
    • TIME TO LIVE – устанавливается в соответствии с типом сообщения в секундах
    • SOURCE IP ADDRESS – адрес источника сообщения ICMP
    • DESTINATION IP ADDRESS– адрес станции назначения для данного сообщения ICMP

    Структура сообщения ICMP

    TYPE ICMP Сообщение
    0 Echo Reply
    3 Destination Unreachable
    4 Source Quench
    5 Redirect
    8 Echo Request
    11 Time Exceeded
    12 Parameter Problem
    13 Timestamp Request
    14 Timestamp Reply
    15 Information Request
    16 Information Reply
    17 Address Mask Request
    18 Address Mask Reply

    Сообщение ICMP состоит из заголовка сообщения и собственно сообщения. Заголовок сообщения ICMP может занимать до 8 байтов – два 32-х разрядных слова. Собственно сообщение ICMP не имеет фиксированной длины, поэтому размер данного поля определяется типом сообщения. В заголовке сообщения  размещается идентификатор типа сообщения ICMP. В таблице приведены значения поля TYPE ICMP и типы сообщений, которые соответствуют этим значениям.

    Сообщения ICMP можно условно разделить на парные и непарные. Парные сообщения состоят из двух компонентов – запрос (Request) и ответ (Reply). Сообщение типа ответ высылается станцией назначения только в ответ на полученное от источника сообщение типа запрос. К сообщениям такого типа относятся Echo Request/Reply. Непарные сообщения формируются асинхронно при возникновении какой либо проблемы при передаче дейтаграммы, и передается в адрес источника данной дейтаграммы. К сообщениям подобного типа относятся сообщения Destination Unreachable и Source Quench.

    Сообщения ICMP

    Структура заголовка сообщений ICMP

    Заголовки всех сообщений ICMP имеют примерно одинаковый формат. В четырех первых байтах заголовка сообщений ICMP размещаются поля TYPE, CODE и CHECKSUM.

    Поле TYPE

    В этом поле заголовка сообщений ICMP размещается код, который соответствует типу сообщения.

    Поле CODE

    В поле CODE некоторых сообщений ICMP может быть размещен код  дополнительной диагностической
    информации.

    Поле CHECKSUM

    В этом поле заголовка сообщений ICMP размещается контрольная сумма данного сообщения. Эта контрольная сумма вычисляется суммированием всех полей, начиная с поля TYPE. При вычислении контрольной суммы значение поля CHECKSUM полагается равным 0.

    Сообщение Destination Unreachable

    Сообщение Destination Unreachable (цель недоступна) — принадлежит к непарным  сообщениям ICMP. Это сообщение формируется в том случае, если запрошенный сетевой ресурс является недоступным для запрашивающей его станции.

    0 7 15 31
    TYPE=3 CODE=0…12 CHECKSUM
    UNUSED=0
    Internet Header+64 первых бита дейтаграммы

    В поле CODE сообщения Destination Unreachable размещается код, который соответствует типу запрошенного недоступного сетевого ресурса или конкретизирует причину, из-за  которой  этот ресурс недоступен в данном случае.
    Возможные значения поля CODE приведены в таблице:

    CODE Значение
    0 Network Unreachable
    1 Host Unreachable
    2 Protocol Unreachable
    3 Port Unreachable
    4 Fragmentation Need & DF set
    5 Source Route Failed
    6 Destination Network Unknown
    7 Destination Host Unknown
    8 Source Host Isolated
    9 Communication with destination Network Administratively Prohibited
    10 Communication with destination Host Administratively Prohibited
    11 Network Unreachable for type of service
    12 Host Unreachable for type of service

    Сообщения данного типа могут быть сформированы как станцией назначения (CODE=2 и 3), так и одним из промежуточных маршрутизаторов – шлюзов (CODE=0,1,6 и т.д.). При этом в качестве адреса источника должен быть указан IP адрес узла, который обнаружил проблему. Например, сообщение №1 — Host Unreachable может быть сформировано последним маршрутизатором, который пытается доставить сообщение до хоста по непосредственно подключенной сети. Для того, чтобы станция – источник смогла правильно интерпретировать диагностическое сообщение, в тело сообщения Destination Unreachable помещается заголовок и первые 8 байт исходной дейтаграммы.

    Сообщение Time Exceeded

    Сообщение Time Exceeded – (истекло время) принадлежит к непарным сообщениям ICMP. Это сообщение должно
    быть  сформировано в том случае, если в процессе передачи дейтаграммы истекло допустимое время её существования в сети или на хосте.

    0 7 15 31
    TYPE=11 CODE=0 или 1 CHECKSUM
    UNUSED=0
    Internet Header+64 первых бита дейтаграммы

    Значение поля CODE в сообщении Time Exceeded используется для уточнения причины, по которой дейтаграмма прекратила существование:

    • CODE=0 — в процессе передачи дейтаграммы поле TTL приняло значение 0
    • CODE=1 – таймер дефрагментации установился в 0 до полной сборки принятого сообщения

    Сообщение Parameter Problem

    Сообщение Parameter Problem — (проблема с параметром) принадлежит к непарным сообщениям ICMP. Сообщение данного типа должно быть сформировано в том случае, если в процессе обработки заголовка дейтаграммы на хосте или маршрутизаторе были обнаружены некорректные аргументы, которые делают  невозможным дальнейшее перемещения дейтаграммы. В этом случае дейтаграмма должна быть уничтожена, а в адрес её источника должно быть передано сообщение Parameter Problem.

    0 7 15 31
    TYPE=12 CODE=0 или 1 CHECKSUM
    POINTER UNUSED=0
    Internet Header+64 первых бита дейтаграммы

    В поле CODE данного сообщения размещается признак типа диагностической информации. В том случае, если в этом поле находится код «0», значение поля Pointer сообщения Parameter Problem соответствует номеру байта в заголовке исходного сообщения, который не может быть адекватно интерпретирован. Например, значение Pointer=1, в данном случае указывает на возникновение проблемы с интерпретацией поля Type Of Service исходного сообщения.

    Значение поля CODE=1 должно быть сформировано в ситуации, когда причина, по которой данная дейтаграмма не может продолжать перемещение по сети заключается в несоответствии запрашиваемых параметров установленным
    требованиям. Такими требованиями могут быть, в частности, требования по обеспечения безопасности.

    Сообщение Source Quench

    Сообщение Source Quench – (сдерживание источника) принадлежит к непарным сообщениям ICMP. Это сообщение должно быть сформировано в том случае, если в процессе передачи дейтаграммы возникла угроза перегрузки.

    При получении от станции назначения или одной из промежуточных станций сообщения Source Quench, источник должен, используя специальные процедуры уменьшить скорость информационного обмена в указанном направлении.

    0 7 15 31
    TYPE=4 CODE=0 или 1 CHECKSUM
    UNUSED=0
    Internet Header+64 первых бита дейтаграммы

    При передаче этого сообщения в качестве адреса назначения должен быть использован адрес IP источника первичного сообщения. Для того, чтобы станция – источник смогла правильно интерпретировать диагностическое сообщение, в тело сообщения Destination Unreachable помещается заголовок и первые 8 байт исходной дейтаграммы.

    Сообщение Redirect

    Сообщение Redirect – (изменение маршрута) принадлежит к непарным сообщениям ICMP. Это сообщение должно быть  сформировано в том случае, если при получении дейтаграммы шлюз обнаруживает, что для её передачи был выбран неудачный маршрут. На рисунке приведен пример использования сообщения Redirect для изменения неверного маршрута.

    В данном случае хост А(10.40.0.2) отправляет дейтаграмму в направлении хоста В(10.10.0.2) используя для этого в качестве шлюза маршрутизатор R2. После того, как маршрутизатор R2 получает дейтаграмму, он определяет, что данная дейтаграмма адресована в направлении 10.10.0.0. Кратчайший маршрут для достижения этой сети для
    маршрутизатора R2 лежит через маршрутизатор R4, который в данном случае подключен к тому сегменту сети, из которого была получена принятая дейтаграмма.

    Маршрутизатор R2 направляет дейтаграмму по направлению R4 (красная стрелка на рисунке) и одновременно формирует сообщение ICMP Redirect, в котором он рекомендует хосту А впредь для передачи дейтаграмм в направлении сети использовать в качестве шлюза маршрутизатор R4.

    0 7 15 31
    TYPE=5 CODE=0/1/2/3 CHECKSUM
    Gateway Internet Address
    Internet Header+64 первых бита дейтаграммы

    Сообщения данного типа могут быть сформированы только маршрутизатором – шлюзом. В заголовке сообщения ICMP Redirect размещается IP адрес шлюза, который рекомендуется использовать для достижения сетевого ресурса,
    указанного в исходной дейтаграмме и тип маршрута, который должен быть изменен по предложению источника сообщения ICMP. В таблице приведены используемые значения поля CODE сообщения ICMP Redirect и соответствующие им рекомендации по изменению маршрута:

    CODE Значение
    0 Redirect Datagram for networks
    1 Redirect Datagram for host
    2 Redirect Datagram for the Type of service and networks
    3 Redirect Datagram for the Type of service and host


    Ссылки по теме:

    • RFC 792

    I have two ubuntu computers on a local network and neither one of them can ping each other. Every time I try I get the «destination host unreachable» error message. Both computers are able to access the internet with any problems.

    I have a ActionTech v1000h router from Telus. I’ve been in touch with one of their customer representatives and they said that there should’t be any reason why two devices cannot ping each other on the network.

    I’m totally at a loss, do any of you guys have any ideas?

    Computer 1:

    ifconfig -a

    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:10084 errors:0 dropped:0 overruns:0 frame:0
              TX packets:10084 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:797420 (797.4 KB)  TX bytes:797420 (797.4 KB)
    
    wlan0     Link encap:Ethernet  HWaddr c4:85:08:77:d3:f5  
              inet addr:192.168.1.77  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::c685:8ff:fe77:d3f5/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:373068 errors:0 dropped:0 overruns:0 frame:0
              TX packets:380158 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:103445020 (103.4 MB)  TX bytes:112630337 (112.6 MB)
    

    route -n

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.1.254   0.0.0.0         UG    0      0        0 wlan0
    169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 wlan0
    192.168.1.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0
    

    sudo iptables -L

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination  
    

    Computer 2:

    ifconfig -a

    etho0     Link encap:Ethernet HWaddr 00:24:8c:ae:f6:91
              UP BROADCAST MULTICAST MTU:1500 Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:2
              collisions:0 txqueuelen:1000
              RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:65536  Metric:1
              RX packets:110 errors:0 dropped:0 overruns:0 frame:0
              TX packets:110 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:8414 (8.4 KB)  TX bytes:8414 (8.4 KB)
    
    wlan0     Link encap:Ethernet  HWaddr 00:22:43:9b:7b:64  
              inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::222:43ff:fe9b:7b64/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:252 errors:0 dropped:0 overruns:0 frame:0
              TX packets:435 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:123143 (123.1 KB)  TX bytes:65828 (65.8 KB)
    

    route -n

    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.1.254   0.0.0.0         UG    0      0        0 wlan0
    192.168.1.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0
    

    sudo iptables -L

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination  
    

    Edit: Example of the error when computer 1 tries to ping computer 2:

    ping 192.168.1.2

    PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
    From 192.168.1.77 icmp_seq=1 Destination Host Unreachable
    From 192.168.1.77 icmp_seq=2 Destination Host Unreachable
    From 192.168.1.77 icmp_seq=3 Destination Host Unreachable
    From 192.168.1.77 icmp_seq=4 Destination Host Unreachable
    From 192.168.1.77 icmp_seq=5 Destination Host Unreachable
    From 192.168.1.77 icmp_seq=6 Destination Host Unreachable
    ^C
    --- 192.168.1.2 ping statistics ---
    7 packets transmitted, 0 received, +6 errors, 100% packet loss, time 6031ms
    pipe 3
    

    Edit 2: arp -a of both computers

    Computer 1:

    ? (192.168.1.254) at 20:76:00:f5:3b:70 [ether] on wlan0
    

    Computer 2:

    ? (192.168.1.254) at 20:76:00:f5:3b:70 [ether] on wlan0
    ? (192.168.1.77) at <incomplete> on wlan0
    

    Edit 3: nmap -sn 192.168.1.0/24 on computer 2

    Starting Nmap 6.40 ( http://nmap.org ) at 2014-05-07 21:14 PDT
    Nmap scan report for 192.168.1.2
    Host is up (0.00024s latency).
    Nmap done: 256 IP addresses (1 host up) scanned in 3.30 seconds
    

    Edit 4: The tcpdump logs of both computers while the first ping 192.168.1.254 and then each other:

    Computer 1:

    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on wlan0, link-type EN10MB (Ethernet), capture size 65535 bytes
    22:45:01.661300 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
    22:45:02.659393 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
    22:45:03.659394 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
    22:45:04.676872 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
    22:45:05.675391 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
    22:45:06.675396 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
    22:45:07.692825 ARP, Request who-has 192.168.1.2 tell 192.168.1.77, length 28
    22:45:48.379058 ARP, Request who-has 192.168.1.77 tell 192.168.1.254, length 28
    22:45:48.379108 ARP, Reply 192.168.1.77 is-at c4:85:08:77:d3:f5, length 28
    22:45:54.419388 ARP, Request who-has 192.168.1.254 tell 192.168.1.77, length 28
    22:45:54.420875 ARP, Reply 192.168.1.254 is-at 20:76:00:f5:3b:70, length 28
    

    Computer 2:

    reading from file pc2.pcap, link-type EN10MB (Ethernet)
    22:44:43.538367 ARP, Request who-has 192.168.1.254 tell 192.168.1.2, length 28
    22:44:43.676705 ARP, Reply 192.168.1.254 is-at 20:76:00:f5:3b:70 (oui Unknown), length 28
    22:45:02.107935 ARP, Request who-has 192.168.1.254 tell 192.168.1.2, length 28
    22:45:02.107951 ARP, Reply 192.168.1.254 is-at 20:76:00:f5:3b:70 (oui Unknown), length 28
    22:45:06.780619 ARP, Request who-has 192.168.1.77 tell 192.168.1.2, length 28
    22:45:07.778419 ARP, Request who-has 192.168.1.77 tell 192.168.1.2, length 28
    22:45:08.778419 ARP, Request who-has 192.168.1.77 tell 192.168.1.2, length 28
    22:45:09.796214 ARP, Request who-has 192.168.1.77 tell 192.168.1.2, length 28
    

    Edit 5: Setup static ips for both computers etho0 and connected them with an internet cable. Both computers can definitely ping each other through the ethernet cable! ifconfig -a eth0 results:

    Computer 1:

    eth0      Link encap:Ethernet  HWaddr 68:68:68:00:62:a4  
              inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::6a68:68ff:fe00:62a4/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:15 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:4060 (4.0 KB)  TX bytes:7629 (7.6 KB)
    

    Computer 2:

    eth0      Link encap:Ethernet  HWaddr 00:24:8c:ae:f6:91  
              inet addr:192.168.1.20  Bcast:192.168.1.255  Mask:255.255.255.0
              inet6 addr: fe80::224:8cff:feae:f691/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:250 errors:0 dropped:0 overruns:0 frame:0
              TX packets:130 errors:0 dropped:0 overruns:0 carrier:3
              collisions:0 txqueuelen:1000 
              RX bytes:26501 (26.5 KB)  TX bytes:20897 (20.8 KB)
    

    ICMP (Internet Control Message Protocol — межсетевой протокол управляющих сообщений). ICMP является протоколом контрольных сообщений Структура межсетевого протокола IPv4. Протокол ICMP используется устройствами сети для отправки управляющих сообщений и сообщений об ошибках на компьютеры и серверы. Существует несколько областей применения протокола ICMP, например, объявление об ошибках в сети, объявление о перегрузке сети и устранение неполадок.

    Каждое сообщение протокола ICMP передается по сети внутри пакета IP. Пакеты IP с сообщениями ICMP маршрутизируются точно так же, как и любые другие пакеты, без приоритетов, поэтому они также могут теряться. Мало того, при большой загруженности сети они могут вызывать дополнительную загрузку маршрутизаторов. Для того, чтобы не вызывать лавины сообщения об ошибках, предусмотрели, что в случае потери пакетов IP, которые сами «несут» сообщения ICMP об ошибках, новые сообщения ICMP об ошибке рождаться не будут.

    ICMP только сообщает о возникших ошибках отправителю пакета; отправитель сам должен связать ошибки с конкретными прикладными программами и предпринять действия по исправлению ошибок.

    Надо отметить, что большая часть ошибок исходит от отправителя, но другие — нет. Так как ICMP сообщает об ошибках отправителю, он не может использоваться, чтобы информировать промежуточные маршрутизаторы об ошибках. Например, пакет следует по пути через маршрутизаторы М1,М2,…,Мk. Если Мk содержит некорректную информацию о маршрутах и ошибочно отправит пакет на маршрутизатор Ме, то маршрутизатор Мe может лишь сообщить об ошибке отправителю пакета. К сожалению, отправитель не отвечает за эту проблему и не может управлять некорректно ведущим себя маршрутизатором Мk. Фактически, отправитель не сможет даже определить, какой маршрутизатор вызвал эту проблему.

    Почему ограничивают протокол ICMP взаимодействием только с отправителем? Потому что IP- пакет содержит поля, которые определяют только отправителя и получателя; он не содержит полного описания своего пути через сеть (кроме необычных случаев, о которых мы скажем позже).

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

    Расшифровка кодов ICMP сообщений:

    Ответ на некоторые ICMP-сообщения может привести к разглашению некоторой информации о хосте, в то время как другие — привести к модификации таблицы маршрутизации, поэтому их необходимо запретить.

    Обычно выход во внешний мир разрешают ICMP-сообщениям 3, 8, 12, в то время как на вход принимают только 0, 3, 4, 11, 12.

    Разрешение ICMP в Packet Filter Firewall (PF) (обновление 2018.08).

    1. Пример

      # Разрешить входящие ICMP ping пакеты. Остальные ICMP относятся к
      # TCP/UDP и разрешаются их статами.
      #
      pass in on $ext_if inet proto icmp to ($ext_if) icmp-type echoreq code 0
    2. Пример

      # ICMP Echo
      pass in log quick inet proto icmp from any to $AllIFs 
      icmp-type 8 keep state
    ${fwcmd} add 00300 allow icmp from any to внешний_IP in via внешний_интерфейс icmptype 0,3,4,11,12
    ${fwcmd} add 00301 allow icmp from внешний_IP to any out via внешний_интерфейс icmptype 3,8,12
    ${fwcmd} add 00304 allow icmp from внешний_IP to any out via внешний_интерфейс frag
    ${fwcmd} add 00305 deny log icmp from any to any in via внешний_интерфейс

    Правила для Правила iptables. Список возможных типов выводится по команде

    # iptables -p icmp -h
    
    Valid ICMP Types:
    any
    echo-reply (pong)
    destination-unreachable
       network-unreachable
       host-unreachable
       protocol-unreachable
       port-unreachable
       fragmentation-needed
       source-route-failed
       network-unknown
       host-unknown
       network-prohibited
       host-prohibited
       TOS-network-unreachable
       TOS-host-unreachable
       communication-prohibited
       host-precedence-violation
       precedence-cutoff
    source-quench
    redirect
       network-redirect
       host-redirect
       TOS-network-redirect
       TOS-host-redirect
    echo-request (ping)
    router-advertisement
    router-solicitation
    time-exceeded (ttl-exceeded)
       ttl-zero-during-transit
       ttl-zero-during-reassembly
    parameter-problem
       ip-header-bad
       required-option-missing
    timestamp-request
    timestamp-reply
    address-mask-request
    address-mask-reply

    Можно указать стандартный числовой код или сообщение. Пропустить все входящие ICMP-эхо-запросы (пинги).

    # iptables -I INPUT -p icmp --icmp-type 8 -j ACCEPT
    # iptables -I INPUT -p icmp --icmp-type echo-request -j ACCEPT

    Блокирует фрагменты ICMP-пакетов

    iptables -I INPUT -p icmp -f -j DROP

    Рекомендуемые правила для ICMP:

    #!/bin/sh
    
    IPT="/sbin/iptables"
    
    $IPT -A INPUT -p icmp --icmp-type 3 -j ACCEPT # destination-unreachable 3/4
    $IPT -A INPUT -p icmp --icmp-type 8 -j ACCEPT # echo request
    $IPT -A INPUT -p icmp --icmp-type 12 -j ACCEPT # IP header bad 
    $IPT -A OUTPUT -p icmp --icmp-type 0 -j ACCEPT #
    $IPT -A OUTPUT -p icmp --icmp-type 3 -j ACCEPT #
    $IPT -A OUTPUT -p icmp --icmp-type 4 -j ACCEPT #
    $IPT -A OUTPUT -p icmp --icmp-type 11 -j ACCEPT #
    $IPT -A OUTPUT -p icmp --icmp-type 12 -j ACCEPT #

    В отличие от цели DROP, где пакет просто отбрасывается, в данном случае отправителю будет отправлено IСМР-сообщение «Port unreachable / icmp port unreachable» («Порт недоступен»). С помощью опции –reject-with можно изменить тип ICMP-сообщения:

    # iptables -A INPUT -s 1.2.3.4 -j REJECT --reject-with icmp-net-unreachable

    У опции –reject-with есть следующие аргументы:

    icmp-net-unreachable — сеть недоступна;
    icmp-host-unreachable — узел недоступен;
    icmp-port-unreachable — порт недоступен;
    icmp-proto-unreahable — неподдерживаемый протокол;
    icmp-net-prohibited — сеть запрещена;
    icmp-host-prohibited — узел запрещен.

    По умолчанию будет передано сообщение port-unreachable.
    Вышеперечисленные аргументы являются ICMP error messages.В дополнение к опции –reject-with TCP-пакеты можно отклонить с помощью аргумента tcp-reset, который отправляет RST-сообщения отправителю. Это наилучший с точки зрения безопасности способ, нужно обязательно использовать именно его. TCP RST пакеты используются для закрытия TCP соединений.

    The ‘ICMP Destination unreachable‘ message is quite interesting, because it doesn’t actually contain one message, but infact six! This means that the ICMP Destination unreachable futher breaks down into 6 different messages.

    This article will analyse all six destination unreachable messages and explain which occasions each message is used. The table below shows an brief summary of the available messages and their code value contain in the ICMP header:

    icmp-dest-unreach-msgs

    To make sure you don’t get confused, keep one thing in mind: The ICMP Destination unreachable is a generic ICMP message, the different code values or messages which are part of it are there to clarify the type of «Destination unreachable» message was received. It goes something like this: ICMP Destination unreachable.

    The ICMP — Destination net unreachable message is one which a user would usually get from the gateway when it doesn’t know how to get to a particular network.

    The ICMP — Destination host unreachable message is one which a user would usually get from the remote gateway when the destination host is unreachable.

    If, in the destination host, the IP module cannot deliver the packet because the indicated protocol module or process port is not active, the destination host may send an ICMP destination protocol / port unreachable message to the source host.

    In another case, when a packet received must be fragmented to be forwarded by a gateway but the «Don’t Fragment» flag (DF) is on, the gateway must discard the packet and send an ICMP destination fragmentation needed and DF set unreachable message to the source host.

    These ICMP messages are most useful when trying to troubleshoot a network. You can check to see if all routers and gateways are configured properly and have their routing tables updated and synchronised.

    Let’s look at the packet structure of an ICMP destination unreachable packet:

    icmp-dest-unreach-packet1

    icmp-dest-unreach-packet2

    Please read on as the following example will help you understand all the above.

    The Analysis

    When you open a DOS command prompt and type «ping 200.200.200.200», assuming that your workstation is NOT part of that network, then it would forward the ICMP Echo request to the gateway that’s configured in your TCP/IP properties. At that point, the gateway should be able to figure out where to forward the ICMP Echo request.

    The gateway usually has a «default route» entry, this entry is used when the gateway doesn’t know where the network is. Now, if the gateway has no «default route» you would get an «ICMP Destination net unreachable» message when you try to get to a network which the gateway doesn’t know about. When you’re connected to the Internet via a modem, then your default gateway is the modem.

    In order for me to demonstrate this, I set up my network in a way that should make it easy for you to see how everything works. I have provided a lot of pictures hoping to make it as easy as possible to understand.

    I will analyse why and how you get an «ICMP — Destination net unreachable» message.

    icmp-dest-unreach-network-setup

    In the example above, I’ve setup my workstation to use the Linux server as a default gateway, which has an IP of 192.168.0.5. The Linux server also has a default gateway entry and this is IP: 192.168.0.1 (the Windows 2000 Server).

    When my workstation attempts to ping (send an ICMP Echo request) to IP 200.200.200.200, it realises it’s on a different network, so it sends it to the Linux server, which in turn forwards it to its default gateway (the Win2k server) so it can then be forwarded to the Internet and eventually I should get a ping reply (ICMP Echo reply) if the host exists and has no firewall blocking ICMP echo requests.

    Here is the packet which I captured and its analysis on the right:

    icmp-dest-unreachable-iris-small2

    icmp-dest-unreachable-iris-small1

    When looking at the decoded packet you can see in the ICMP header section that the ICMP Type is equal to 8, so this confirms that it’s an ICMP Echo (ping). As mentioned earlier, we would expect to receive an ICMP echo reply.

    Check out though what happens when the default gateway entry is removed from the Linux server:

    icmp-dest-unreach-network-setup-2

    Now what I did was to remove the default gateway entry from the Linux server. So when it gets a packet from my workstation, it wouldn’t know what to do with it. This is how you get the gateway to generate an «ICMP Destination net unreachable» message and send it back to the source host (my workstation).

    Here is a screen shot from the command prompt:

    icmp-dest-unreachable-example

    As you can see, the Linux server has returned an «ICMP Destination net unreachable». This is one of the six possible ‘ICMP Destination Unreachable’ messages as listed at the beginning of this page. The Linux server doesn’t know what to do with the packet since it has no way of getting to that 200.200.200.0 network, so it sends the «ICMP Destination net unreachable» message to my workstation, notifiying it that it doesnt know how to get to that network.

    Let’s now take a look what the packet sniffer caught :

    icmp-dest-unreachable-iris-small4 icmp-dest-unreachable-iris-small3

    The decoded packet on the right shows that the Linux server (192.168.0.5) sent back to my workstation (192.168.0.100) an ICMP Destination unreachable message (look at the ICMP type field, right under the ICMP header) but if you also check out the ICMP Code (highlighted field), it’s equal to 0, which means «net unreachable». Scrolling right at the top of this page, the first table clearly shows that when the code field has a value of 0, this is indeed a «net unreachable» message.

    It is also worth noticing the «Returned IP header» which exists within the ICMP header. This is the IP header of the packet my workstation sent to the Linux server when it attempted to ping 200.200.200.200, and following that is 64 bits (8 bytes) of the original data.

    This completed our discussion on the ICMP ‘Destination Unreachable’ generated packets.

    Next — ICMP — Source Quench Message

    Понравилась статья? Поделить с друзьями:
  • Icm http ssl error
  • Icloud как изменить имя отправителя
  • Ide 1 error toshiba
  • Icloud unsupported device как исправить
  • Idapython3 dll error не найден указанный модуль