Я новичок в администрировании серверов Linux и пробую некоторые сетевые команды. Я хочу изменить параметры сети, изменив файл / etc / network / interfaces, и хочу, чтобы изменения вступили в силу как можно скорее. Но я не хочу перезапускать сетевую службу, так как это приведет к катастрофе. Мы также хотим избежать перезагрузки системы, насколько это возможно. Как это сделать? Я использовал команды ip и ifup / ifdown, но по какой-то странной причине они иногда терпят неудачу. Где можно найти документацию или книги для изучения? Извините за английский.
Проблема с ifup/ifdown
состоит в том, что это читает текущую конфигурацию для обеспечения интерфейса вверх и вниз. Таким образом, если Вы имели, например:
iface eno1 inet static
address 1.1.1.1
netmask 24
и Вы ifup eno1
, что действительно происходит, являетесь приблизительно ip addr
и ip route
выполняемые команды. Среди них Вы будете иметь ip addr add 1.1.1.1/24 dev eno1
. Если теперь Вы изменяете файл:
iface eno1 inet static
address 2.2.2.2
netmask 24
и Вы ifdown eno1
, это не выполнится ip addr del 1.1.1.1/24 dev eno1
, но ip addr del 2.2.2.2/24 dev eno1
, следовательно ошибки при изменении конфигурации, в то время как интерфейс произошел.
Для работы вокруг этого скопируйте старый конфигурационный файл прежде, чем изменить его:
cp /etc/network/interfaces /etc/network/interfaces.bak
и после изменения конфигурации используйте резервное копирование для эти ifdown
команда:
ifdown -i /etc/network/interfaces.bak <your_interface>; ifup <your_interface>
, Если бы Вы соединяетесь с машиной удаленно, хорошая идея состояла бы в том, чтобы инвертировать операцию после тайм-аута:
(sleep 180; ifdown <your_interface>; ifup -i /etc/network/interfaces.bak <your_interface>)&
при потере возможности соединения она должна быть восстановлена после 180 секунд иначе можно просто уничтожить задание.