Я столкнулся с проблемой на сервере с двумя интерфейсами ethernet (etho и eth1), на нем запущен linux-ubuntu-server. Мне нужно, чтобы eth1 не делал никаких запросов dhcp, потому что мне нужно, чтобы он был только прослушивающим интерфейсом, очевидно, мне нужно, чтобы eth0 работал нормально. Так как же мне отключить любые dhcpclient ation через eth1?
заранее спасибо.
решение1
Что-то вроде:
auto lo eth0 eth1
iface lo inet loopback
iface eth1 inet static
address 192.168.32.130
netmask 255.255.255.0
gateway 192.168.32.1
в вашем /etc/network/interfaces
конфигурационном файле вам будет назначен eth1
статический IP-адрес.
решение2
Иногда даже с правильным /etc/network/interfaces
файлом dhclient
продолжает запрашивать IP-адреса на статических интерфейсах. Проблема может быть в существовании старых /var/lib/dhcp/dhclient.*.leases
файлов с неверной информацией. Просто убейте dhclient
, удалите эти файлы и запустите его заново (выполнив ifdown
/ ifup
на интерфейсах DHCP).
решение3
В современных ОС Linux это можно контролировать с помощью Network Manager:
В RHEL: измените
BOOTPROTO=dhcp
строку в файле/etc/sysconfig/network-scripts/ifcfg-eth1, затем перезапуститеBOOTPROTO=static
сетевые службы.В Debian: измените строку в файле
method=auto
наmethod=static
/etc/NetworkManager/system-connections/Проводное соединение 1, затем перезапустите сетевые службы.
решение4
Если вы не хотите добавлять статический IP-адрес на этот интерфейс, возможно, вам придется удалить IP-адрес, назначенный DHCP-клиентом.
Запуск этого скрипта удалит IP на eth0.
#!/bin/sh
localip=`ip addr list dev eth0 | grep "inet " | sed 's/\(^\s*inet\s\)\([0-9\.]*\)\([\s\/].*\)/\2/'`
if [[$ip != ""]]; then
sudo ip addr del $localip dev eth0
fi
Вам нужно запустить его вручную или установить его в crontab. Или попробуйте вызвать его после назначения IP, но я не знаю, как это зацепить. После удаления IP-адреса он работает так, как будто клиент dhcp отключен на этом интерфейсе.
Примечание: Это всего лишь обходной путь, удаляющий эффект DHCP-клиента на указанном интерфейсе, а не его реальное отключение. Это работает в моем решении, которое требовало, чтобы интерфейс был UP без КАКОГО-ЛИБО назначенного IP-адреса.