Я хотел бы отключить запуск службы DHCP с помощью командной строки Linux, чтобы использовать собственный DHCP-клиент или установить статические IP-адреса.

Я знаю, что, как уже упоминалось в этом посте, установив статический тип интерфейса вместо dhcp в /etc /network /interfaces, DHCP отключается для соответствующего интерфейса.

Но я хотел бы сделать сценарий оболочки, который использует командные строки, чтобы сделать это и наоборот.

2 ответа2

1

Предполагая, что вы уже деактивировали NetworkManager для нужных интерфейсов, вы можете использовать команду «ip».

Назначение вручную (скажем, ваш интерфейс - eth0):

ip link set eth0 up
ip addr add 192.168.0.2/255.255.0.0 broadcast 192.168.255.255 dev eth0
ip route add default via 192.168.0.1

Динамическое назначение:

ip link set eth0 up
dhclient eth0

Команда ip addr принимает подкоманды replace и change и вы можете использовать label SOMETHING чтобы назвать ваше устройство в удобочитаемой форме. Так что это должно помочь сделать скрипт оболочки таким, как вам нужно.

Далее читает:

1

Манипулируя IP-адресом интерфейса, в то время как он настроен на использование dhcp, существует риск того, что ваш статический ip будет регулярно переопределяться.

Затем вам нужно убить dchclient, связанный с вашим интерфейсом (htop и kill). Однако, похоже, что dhclient хранит pid своего экземпляра в каталоге по умолчанию: /var/run/dhclient.{interface}.pid . Затем вы можете сделать:

ifce=eth0
kill -9 $(cat /var/run/dhclient.${ifce}.pid
sudo ifconfig $ifce [IP] netmask [NETMASK]

и снова включить dhcp:

ifce=eth0
dhclient -pf /var/run/dhclient.${ifce}.pid $ifce

РЕДАКТИРОВАТЬ

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

  1. удалите все ссылки на ваш интерфейс в /etc /network /interfaces

  2. добавьте следующую строку в конец /etc /network /interfaces

    source /etc/network/interfaces.d/*.conf

  3. создайте каталог /etc/network/interfaces.d если он не существует, и следующие два файла:

    • /etc/network/interfaces.d/ndominterface‹.dhcp, который содержит конфигурацию dhcp вашего интерфейса
    • /etc/network/interfaces.d/ndominterface‹.static, который содержит статическую конфигурацию вашего интерфейса
  4. Затем вы можете переключиться с dhcp на статический и наоборот, скопировав файл в /etc/network/interfaces.d/{interface}.conf и перезапустив интерфейс, либо

    ifce=eth0
    cp /etc/network/interfaces.d/${ifce}.static /etc/network/interfaces.d/${ifce}.conf
    ifdown $ifce
    ifup $ifce
    

    или же

    ifce=eth0
    cp /etc/network/interfaces.d/${ifce}.dhcp /etc/network/interfaces.d/${ifce}.conf
    ifdown $ifce
    ifup $ifce
    

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