Мы запускаем виртуальные серверы на нашем сервере Windows, я заметил, что один из серверов не подключается, и при подключении через интерфейс виртуальной машины мы обнаружили, что сервер запущен и работает, и мы можем получить доступ к сети / Интернету внутри сервера, но ни один посторонний не может подключиться к сервер.
Мы удалили виртуальный сетевой интерфейс и добавили новый (который будет генерировать новый MAC-адрес для виртуального сетевого интерфейса), после чего сервер стал доступен.
Такая же проблема возникла как в VMWare, так и в HyperV, но не одновременно, а с перерывом в 3-4 дня.
Я хочу знать, возможно ли, что два сетевых интерфейса в одной локальной сети с одинаковым MAC-адресом, но с другим IP-адресом могут создать проблему?
Черт, да, безоговорочно плохая идея - они ДОЛЖНЫ быть уникальными.
Протокол Ethernet ничего не знает об IP-адресах. Вы всегда обращаетесь к хостам по их MAC-адресам (IP-адреса сопоставляются с MAC-адресами), поэтому дубликаты недопустимы.
Хотя редко бывает, чтобы один MAC-адрес был привязан к нескольким интерфейсам или нескольким серверам, ничто не мешает сделать это; и действительно есть случаи, когда это делается.
Например, существуют конфигурации балансировки нагрузки, в которых нескольким серверам предоставляется один и тот же MAC-адрес, один или оба сервера передают бесплатный ARP, объявляя, что соответствующий IP-адрес можно найти по этому физическому адресу.
Коммутатор, к которому подключены устройства, добавляет запись в свою таблицу портов для Mac для обоих портов и с радостью пересылает пакеты на оба порта при перенаправлении на соответствующий Mac.
Затем серверы балансировки нагрузки будут выбирать, какие пакеты они ACK (в случае tcp), обычно на основе исходного IP-мода пакета, что позволяет, например, одному серверу обрабатывать 50% трафика (при условии, что используется мод 2).
Что касается поиска ARP, здесь нет никаких проблем. Когда клиент отправляет запрос ARP для рассматриваемого IP-адреса, оба сервера отвечают одинаковым ответом, вы можете найти IP-адрес x на Mac Y. Впоследствии он сохраняется в таблице ARP клиентов в виде отдельной записи.
Просто чтобы добавить к ответам немного подробностей. Да, ОЧЕНЬ плохо иметь два устройства с общим MAC-адресом. Коммутаторы доступа, обслуживающие эти устройства, не смогут поддерживать приличную таблицу MAC-адресов. Каждый раз, когда они получают пакет от устройства, которого нет в таблице, они будут обновлять порт входа устройства.
Также по поводу ответа на ARP-запрос. Клиент запишет IP-адрес ПОСЛЕДНЕГО устройства для ответа. Первый ответ (у меня есть MAC-адрес XYZ и IP-адрес 1) будет записан, но затем перезаписан при получении нового «обновления» (у меня MAC-адрес XYZ, а я на IP-адресе 2). В зависимости от обстоятельств, клиент может в конечном итоге постоянно обновлять свой кеш ARP и действительно портить сеансы TCP.
Да, протокол ARP используется для сопоставления IP-адресов с адресами Ethernet, чтобы биты могли найти свой путь к соответствующему порту Ethernet. Если у вас есть две системы с одним и тем же адресом Ethernet, то биты будут переданы той системе, которая первой ответит на запрос ARP.
Чтобы избежать путаницы, они должны быть уникальными.