У меня есть ситуация, когда я могу запускать образы CentOS 6.6 в подсети, так что экземпляры виртуальных машин получают свои IP-адреса из виртуального шлюза подсети. Теперь этот шлюз стал шатким, и у меня нет доступа, чтобы его исправить, поэтому я настроил свой собственный DHCP-сервер в этой подсети.
Итак, теперь в этой подсети есть 2 DHCP-сервера, и мои виртуальные машины получают случайные IP-адреса, иногда с одного DHCP-сервера, а иногда с другого. Мой вопрос в том, как я могу настроить dhcp-клиент на моих виртуальных машинах, чтобы они отправляли DHCP-запросы только моему DHCP-серверу, а не неисправному? man dhcp.conf
не очень помог.
В CentOS 7 этого можно добиться, создав файл /etc/dhcp/dhclient.conf
и добавив строку вроде
reject 192.168.56.0/24;
отклонять предложения DHCP от одного или другого сервера (или, в этом примере, от всех серверов DHCP в определенной подсети).
Чтобы отфильтровать предложения DHCP только на определенном интерфейсе, поместите reject
директива внутри interface
блок:
interface "eth0" {
reject 192.168.56.0/24;
}
Обратите внимание на название интерфейса (здесь eth0
) должны быть заключены в кавычки, в отличие от примера, показанного на странице руководства для dhclient.conf
.
Во всех случаях запускайте systemctl restart network.service
как суперпользователь, чтобы изменения вступили в силу.
В CentOS 6.7 работают те же инструкции, но
reject
правило будет добавлено будет /etc/dhcp/dhclient-eth0.conf
(и явно не нужно было бы использовать interface
блок).service network restart
, который снова должен быть вызван как суперпользователь.DHCP работает через многоадресный запрос IP-адреса. Которая получает IP-адрес от первого DHCP-сервера для ответа. Я не знаю способа заставить клиента получить DHCP-адрес с определенного сервера.
Фактически, запуск двух DHCP-серверов, которые не знают друг друга, спрашивает о типе проблемы, с которой вы столкнулись. Вам необходимо отключить или отремонтировать неисправный.