При аренде выделенного сервера, как можно быть уверенным, что он / она не получит VPS или какой-либо другой вариант виртуальной машины вместо настоящего выделенного аппаратного блока?
Какие проверки можно запустить (при условии, что это Linux), чтобы обнаружить такой случай?
Не существует 100% надежного способа определить, что вы находитесь в виртуальной машине, точно так же, как нет способа определить, действительно ли вы находитесь в Матрице или вы на самом деле компьютерная симуляция.
Однако, если провайдер идиот, вы можете сказать, что находитесь на виртуальной машине, из следующего удобного списка:
/proc/sys/xen
существуют/proc/vz
существуютlspci
/proc/self/status
имеет s_context
или VxID
поле/sbin/zonename
существуютОни не на 100% надежны, потому что поставщик контролирует среду и может изменить систему, чтобы не отображать их. Однако любой, кто достаточно дешев, чтобы продать вам выделенный сервер и предоставить вам виртуальную машину, вероятно, не достаточно умен, чтобы осуществить это.
Прежде всего, физические машины имеют больше памяти, чем VPS. Вопрос 512 МБ или меньше. Во-вторых, вы можете проверить несколько вещей, чтобы найти VPS. Обычно вы обнаружите, что виртуальные машины имеют на удивление простое оборудование. Как будто у KVM есть видеокарта Cirrus Logic GD 5446. В VMWare раньше была сетевая карта RTL8129. Это значит, что на большинстве установочных носителей ОС есть драйверы для виртуальных устройств.
В фасад (часть Марионетки) virtual.rb В скрипте есть несколько полезных методов для определения того, на каком компьютере вы работаете.
Искать /proc/vz/veinfo
Ищите один из /proc/sys/xen
, /sys/bus/xen
или /proc/xen
Искать s_context
или VxID
в /proc/self/status
lspci
и ищите адаптер VMWare VGAdmidecode
и ищите упоминания о VMWare или ParallelsЗапустите lspci и найдите RAM memory: Qumranet, Inc. Virtio memory balloon
Взгляните на MAC-адрес (а) вашего компьютера. Вы видите какие-нибудь OUI для конкретных виртуальных машин?
Если вы хотите применить более практический подход, вы можете попробовать этот ответ из в другом месте. К сожалению, он требует наличия функционального компилятора в «гостевой» системе.
Попробуйте настроить среду виртуальной машины. Он должен выйти из строя, если он находится внутри виртуальной машины.