Сетевой сервис отключает eth0 при перезапуске в Debian 9 Strech

Когда вы подключаетесь к серверу через SSH, а сервер имеет фиксированный IP-адрес через файл / etc / network / interfaces , если вы пытаетесь изменить IP-адрес в этом файле, обычно вы перезапускаете сетевую службу.

Это действие создает проблему в системе, потому что сетевая служба зависает, поэтому вы не можете восстановить удаленный доступ через SSH. Таким образом, вы должны выполнить следующее на локальной машине:

# ifup eth0 

Dev eth0 выходит из строя при перезапуске сетевого сервиса. Я искал эту проблему в интернете, но я не смог найти эту конкретную проблему, только похожую проблему с беспроводными интерфейсами, хотя предлагаемые решения не были лучшими для этой проблемы.

Мне пришлось импровизировать, хотя я думаю, что это не самое профессиональное решение, поэтому мне нужна ваша помощь, чтобы найти лучшее.

Я сделал следующее:

 # vi /lib/systemd/system/networking.service 

Меняться от:

 ... ExecStart=/sbin/ifup -a --read-environment ExecStop=/sbin/ifdown -a --read-environment --exclude=lo ... 

Для того, чтобы:

 ... ExecStart=/sbin/ifup eth0 --read-environment ExecStop=/sbin/ifdown -a --read-environment --exclude=lo ; /sbin/ip addr flush dev eth0 ... 

Мне пришлось заставить eth0 сделать ifup, потому что действие ExecStop по умолчанию не позволяло запустить интерфейс.

Мне пришлось добавить flush dev eth0, потому что когда вы меняете IP-адрес в файле / etc / network / interface , система поднимает интерфейс eth0 с двумя IP-адресами (со старым и новым).

Как я уже говорил, это работает, хотя это не лучшее решение.

Это должно быть ошибкой в ​​Debian 9 strech, потому что этого не происходит в Debian 7 или 8.

Не могли бы вы попробовать это? Этого не происходит, если вы используете DHCP IP-адреса либо с Debian 9, но да с фиксированными.