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

Обнаружение повторяющегося IP-адреса из неправильно клонированных виртуальных машин

Один из наших производственных серверов был «клонирован» для создания вторичной тестовой среды. Исходный сервер - это виртуальная машина (среда VMWare vSphere), присоединенная к домену и имеющая статический IP-адрес.

Когда клонированная виртуальная машина была включена, виртуальный сетевой адаптер был включен. Имя компьютера не изменилось. IP-адреса тоже не было. Каким-то образом эти два сервера с одинаковым DNS-именем и IP-адресом сосуществовали в одном домене в течение нескольких дней - может быть, целую неделю. Какое-то время мы будем заняты устранением повреждений ...

Будь то невнимательность или незнание, люди совершают ошибки. Я могу это принять. Так что давайте предположим, что это может повториться снова. Я знаю, как решить проблему. Но как это обнаружить?

РЕДАКТИРОВАТЬ
Я не ищу инструкций или советов о том, как клонировать виртуальную машину. Это задание не мне дано. Я хочу знать, как быстро (или немедленно) определить, когда два компьютера / рабочие станции / виртуальные машины имеют одинаковое DNS-имя.

ОБНОВИТЬ
Я решил запустить «проверку» при запуске основной службы SQL Server, которая попытается определить, был ли клонирован хост SQL. (Обратите внимание, что эта тактика применима только к виртуальным машинам, которые являются узлами SQL Server.)

TL; DR: жестко запрограммируйте имя хост-машины SQL и домен в сохраненной процедуре и сравните эти значения с SERVERPROPERTY(N'MachineName') и DEFAULT_DOMAIN(). Сделайте что-нибудь радикальное, если значения не совпадают.

Если кому интересно, я писал об этом в блоге: SQL Server: Атака клонов

Последние мысли
Наверное, мне следовало упомянуть об этом, когда я изначально задавал вопрос: я - администратор баз данных SQL Server. Хотя я не являюсь системным администратором, я работаю с ними. Я не в одной «команде» с системными администраторами, но и я не отгорожен от них. Я ценю вклад и многочисленные ответы на мой вопрос. Большинство указывало, что проблема связана с обучением, и я должен обучить тех, кто в ней участвует. Я не могу не согласиться. Это разумный и проактивный подход. Но ... почти все, что находится за пределами области SQL Server, находится вне моего контроля. Сисадмины приходят и уходят. Они действуют и принимают решения независимо от моих желаний и потребностей. Однако я контролирую, что происходит с точки зрения SQL Server. Я все еще могу действовать на опережение даже после того, как дело сделано. Поскольку мое домашнее решение зависит от SQL Server, сейчас очевидно, я должен был разместить свой вопрос на https://dba.stackexchange.com/ Я думаю, что вопрос здесь все же имеет значение, но если модератор захочет перенести его, я понимаю.

Когда вы клонируете виртуальную машину в среде vSphere, у вас есть возможность "настроить гостя" при клонировании или развертывании виртуальных машин из шаблона ...

Здесь вы можете указать имя, изменить настройки сети, указать членство в домене и сгенерировать новый SID. (для операционных систем Microsoft). Это все, что вам нужно сделать в будущем.

Скорее всего, в программе просмотра событий были журналы, указывающие на конфликты IP-адресов. Любая система мониторинга, которая собирает и фильтрует журналы событий, должна уметь обнаруживать это и запускать предупреждения.

На физических управляемых коммутаторах вы, вероятно, могли бы обнаружить повторяющийся MAC-адрес и предупредить о нем - я недостаточно знаком с виртуальными коммутаторами vmware, чтобы знать, какие варианты у вас могут быть там.

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

Надеюсь, одна машина «выиграла» все время, и изменения не распространились на оба сервера!

Ничто не заменит хорошую политику управления IP. Конец. Плавник. FIN-ACK.

Независимо от контекста, нет никакого способа предотвратить глупость людей с IP-адресами, если только программное обеспечение не сделает все возможное, чтобы запретить это - а обычно это невозможно. Откуда он знает, что ты не необходимость несколько виртуальных машин для хранения этих адресов, и будут ли подключаться к сети только одна из них за раз? Это не задача программного обеспечения - контролировать это. Задача администратора - ценить свою работу настолько, чтобы не создавать перебоев в работе из-за конфликта IP-адресов.

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

  • Вы не ошибаетесь с риском конфликтов IP.
  • Забота, которую вы проявляете при работе с чем-то, имеющим IP-адрес чего-то важного, должна быть больше или равна вашему желанию продолжать получать зарплату.
  • Важнее, вы не можете предположить, что что-то предотвратит или обнаружит их за вас - кроме вашего собственного усердия и преклонения колен перед помазанным в вашей организации источником Истины ИС.

tl; dr, никто не умнее IPAM. Назначение IP-адреса или клонирование устройства - это религиозная функция, которая должна сопровождаться благословением IPAM. Вера в языческие обычаи, предназначенные для предотвращения или смягчения конфликтов интеллектуальной собственности, приведет только к предопределенной гибели. Игнорируйте его божественное руководство на свой страх и риск.

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

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

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

$vcserver = "your-vcenter-server-name"
Add-PSsnapin VMware.VimAutomation.Core
Connect-VIServer $vcserver
$results = Get-VM | Select -ExpandProperty Guest | % {
   $name = $_.HostName
   $_.IPAddress | % {
      New-Object PSObject -Property @{
         HostName = $name
         IP = $_
      }
   }
}
Disconnect-VIServer

Затем найдите дубликаты с помощью этот:

$count = @{}
$results | % { $count["$($_.IP)"] += 1 }
$count.Keys | ? { $count["$_"] -gt 1 } | % {
   $dup = $_
   $results | ? { $_.IP -eq $dup }
} | ft