1

У меня есть виртуальная машина (на ESXi 5.1.0) под управлением Debian Wheezy (7.0).

У eth0 статически назначенный адрес. eth1 был назначен DHCP, и теперь я хочу сделать его статическим.

Вот мой старый /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback

# The primary network interface
allow-hotplug eth0 eth1
iface eth0 inet static
 address 10.2.1.77
 broadcast 10.2.1.255
 netmask 255.255.255.0
 pointopoint 10.2.1.1

iface eth1 inet dhcp

А вот мой новый /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback

# The primary network interface
allow-hotplug eth0 eth1
iface eth0 inet static
 address 10.2.1.77
 broadcast 10.2.1.255
 netmask 255.255.255.0
 pointopoint 10.2.1.1

iface eth1 inet static
        address 10.1.0.254
        netmask 255.255.255.0
        gateway 10.1.0.1
        dns-nameservers 8.8.8.8

Когда я перезагружаюсь, я вижу, как dhcpcd пытается возобновить аренду для моего старого назначенного DHCP-адреса, и успешно. Затем он перезаписывает /etc/resolv.conf , который должен содержать 8.8.8.8, но не содержит. Однако у eth1 правильный (статический) адрес.

Что я здесь не так делаю? Я не хочу прямо отключать dhcpcd . В ближайшем будущем я мог бы переключить eth1 обратно на DHCP или добавить третий назначенный DHCP интерфейс.

5 ответов5

2

Запустите (как root):

update-rc.d -f dhcpd remove

Если вы хотите включить его в будущем,

update-rc.d dhcpd defaults

ПРИМЕЧАНИЕ: удаление его из rc.d отключит его на всех интерфейсах. Восстановление его включит на всех интерфейсах.

2

Страница man для dhcpcd сообщает нам:

шаблон denyinterfaces

         When discovering interfaces, the interface name must not match
         pattern which is a space or comma separated list of patterns
         passed to fnmatch(3).

Чтобы dhcpcd не мог работать с интерфейсом (интерфейсами), вы можете попросить его оставить интерфейс в покое, добавив строку в /etc/dhcpcd.conf.

в случае ОП это будет:

denyinterfaces eth0

Это должно прекратить работу dhcpcd с вами на этом конкретном интерфейсе, оставляя dhcpcd включенным. Это также позволяет вам сохранить конфигурацию вашего интерфейса в /etc /network /interfaces. Другой вариант - использовать то, что предложил Ариффер (используя /etc/dhcpcd.conf, чтобы выполнить настройку вместо /etc /network /interfaces.)

2

Если вы используете dhcpcd (клиентский демон, большинство людей здесь путают его с DHCP и DHCPd, который отличается), то добавьте следующий текст внизу /etc/dhcpcd.conf

static
interface eth0
static ip_address=172.16.0.5/24
static routers=172.16.0.1
static domain_name_servers=8.8.8.8

Конечно, не забудьте заменить информацию об IP вашей сетевой информацией.

0

Это вызвано ограничением в dhcpcd5 - он включает DHCP на всех интерфейсах (все или ничего). Я исправил это, переключившись на isc-dhcp-client который более гибок.

0

Вы можете отключить услугу. https://serverfault.com/questions/32438/disable-a-service-from-starting-at-all-runlevels

Предпочтительным способом было бы обновить файл /etc/sysconfig/network-scripts/ifcfg-* для устройства, удалив строку dhcp (или изменив его на false)

К сожалению, я не нахожусь перед моей машиной Linux, поэтому я не могу получить точную конфигурацию для вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .