LINUX.ORG.RU
ФорумAdmin

debian не меняет ip при перезапуске networking

 , , ,


0

3

Странная штука меня постигла.

debian 9 виртуалка на kvm. клонирую машинку с новенького темплейта, который я сделал, отключив эти веселые названия типа ens19 и оставив eth0.

Update:

посколько практически все читают этот пост не так , как я написал, я сделал вывод, что может быть я не понятно описал ситуацию.

действия:

на машине есть 1 интерфейс с 1 айпи.

заходим в /etc/network/interfaces и МЕНЯЕМ айпи.

перегружаем сервиc networking любым способом.

IP не меняется. подробнее ниже.

Конец апдейта. ----------

/etc/network/interfaces

source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

allow-hotplug eth0
iface eth0 inet static
	address 10.10.10.200/24
	gateway 10.10.10.1
	dns-nameservers 8.8.8.8

меняю 10.10.10.200 на 10.10.10.199

перезапускаю сервис 

/etc/init.d/networking restart

и eth0 падает. Поднимаю его и на нем тот же ип 10.10.10.200

в syslog

ifdown[857]: RTNETLINK answers: Cannot assign requested address

потому что старый айпи не сбрасывается

#  ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 12:45:cd:11:c5:68 brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.200/24 brd 10.10.10.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.10.10.199/24 brd 10.10.10.255 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::1045:cdff:fe11:c568/64 scope link 
       valid_lft forever preferred_lft forever

если поменять allow-hotplug eth0 на auto eth0 , то все тоже самое , за исключением того, в первом действии eth0 не падает.

При перезагрузке само -собой адрес меняется, но это уже перебор - перегружать машину из-за смены IP ( хотя мы стремимся к этому благодаря системдику)

И вот вопрос, это я дурак или мейнтейнеры опять херни наделали?

★★★★

Последнее исправление: constin (всего исправлений: 1)

попробуй так

source /etc/network/interfaces.d/*

# The loopback network interface auto lo iface lo inet loopback

# The primary network interface allow-hotplug enp3s0 iface enp3s0 inet static address 192.168.1.102/24 gateway 192.168.1.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.1.1

anonymous
()
Ответ на: комментарий от anonymous

так это тоже самое , что у меня, ну кроме название интерфейса.

Я сейчас верну назад ens и попробую с ним, но если дело в названии, то гнев мой будет сильным)

constin ★★★★
() автор топика
Ответ на: комментарий от constin

нет, дело не в новом или старом формате. c ens18 тоже самое один в один.

constin ★★★★
() автор топика
Ответ на: комментарий от rumgot

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

constin ★★★★
() автор топика
Ответ на: комментарий от constin

Да он уже хрен знает сколько не работает. И в убунтах тоже. Я тоже в свое время столкнулся с этой проблемой, но предпочел не тратить свое время зря на то, на что забили создатели дистров.

rumgot ★★★★★
()

перезапускаю сервис

/etc/init.d/networking restart

сто лет уже как deprecated

samson ★★
()
Ответ на: комментарий от samson

сто лет уже как deprecated

это не важно, перезапуск перенапрявляется на systemdick

systemctl restart servicename

тоже самое, потому что смотри выше

ifup/down

писал уже тоже.

лучше просто внимательно прочитать. Это пост не о том, что типа помогите мне айпи поменять, это пост о том, какого хрена происходит. сервис networking рестартует, конфиг при этом перечитывает. Но вместо того, чтобы переназначить адрес он не убирает предыдущий и пытается доназначить secondary. Опять же надо внимательнее читать то, что я изначально написал.

inet 10.10.10.200/24 brd 10.10.10.255 scope global eth0
inet 10.10.10.199/24 brd 10.10.10.255 scope global secondary eth0
constin ★★★★
() автор топика
Ответ на: комментарий от constin

только что проверил на debian 8. /etc/init.d/networking retsart - не работает корректно. После рестарта у меня вообще адрес не назначен. а systemctl restart networking.service - отработал нормально.

правда там всего один IPшник.

systemctl restart у вас тоже не отрабатывает корректно?

inet 10.10.10.200/24 brd 10.10.10.255 scope global eth0
inet 10.10.10.199/24 brd 10.10.10.255 scope global secondary eth0

тут случайно заморочка не в том, что адреса принадлежат одной подсети?

samson ★★
()
Ответ на: комментарий от samson

да блин. те пост не прочитать, никак?)

в начале загрузки 10.10.10.200, меняем на 10.10.10.199, рестартуем сервис и вместо 199 получаем два адреса на интерфейсе, но по факту раотает только старый. и в ifconfig виден только старый.

команды :

/etc/init.d/networking restart
systemctl restart networking.service
service  networking restart

приводят к одному и тому же результату и все попробованы.

constin ★★★★
() автор топика
Ответ на: комментарий от constin

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

constin ★★★★
() автор топика
Ответ на: комментарий от constin

очень похоже на два сервиса управления сеть одновременно. у меня похожее было когда я решил с дхцп на статику перейти. айпи назначил, пергрузился, а айпи то два - один с цп второй еще откуда. и далее - debian давно юзает systemd, на хрена ты его старым инитом пытаешься????

shashilx ★★
()
Ответ на: комментарий от constin

Проверил на Debian 9, виртуалка на VmWare, также ни один из трех способов не отрабатывает нормально, интерфейс ens192 (в моем случае) в статусе DOWN после рестарта.

Поднимается только после команды

ifup ens192


P.S. ifconfig eth0 всегад показывает только первый IP на интерфейсе, чтобы увидеть второй, юзай ip a или ipaddr

Fess88
()
Ответ на: комментарий от constin

да тут протупил, согласен, сори.

да блин. те пост не прочитать, никак?)

но пост читал)

ifup eth0; ifdown eth0 - нормально же отрабатывает??? Надо адрес на интерфейсе поменять, зачем networking restart делать?

а на счет рестарта сервиса, если мне память не изменяет, то где то наверное еще с wheezy при рестарте сервиса выдавало ворнинг, что то вроде следующего:

[warn] Running /etc/init.d/networking restart is deprecated 
        because it may not re-enable some interfaces ... (warning)

samson ★★
()
Последнее исправление: samson (всего исправлений: 1)
Ответ на: комментарий от constin

согласен, похоже /etc/init.d/networking restart то же самое что и systemctl restart networking.service

samson ★★
()

Попробуй systemctl restart ifup@eth0
Корректно - делаешь ifdown для интерфейса, меняешь настройки в interfaces, потом делаешь ifup

anonymous_sama ★★★★★
()
Ответ на: комментарий от anonymous_sama

ifdown для интерфейса, меняешь настройки в interfaces, потом делаешь ifup

но это не всегда применимо (если надо удаленно)...

samson ★★
()

кстати, еще одна такая мелочь, скорее всего не по теме (врядли влияет)

dns-nameservers 8.8.8.8

в man interfaces про dns-nameservers ничего не сказано. И оно не подменяет resolv.conf. Попробуйте изменить 8.8.4.4 и рестартонуть сеть (можно даже перезагруиться)

samson ★★
()
Ответ на: комментарий от SevikL

https://www.debian.org/doc/manuals/debian-reference/ch05.en.html#_the_basic_n...

5.5.13. The basic network reconfiguration

When you try to reconfigure the interface, e.g. eth0, you must disable it first with the «sudo ifdown eth0» command. This removes the entry of eth0 from the «/etc/network/run/ifstate» file. (This may result in some error message if eth0 is not active or it is configured improperly previously. So far, it seems to be safe to do this for the simple single user work station at any time.)

You are now free to rewrite the «/etc/network/interfaces» contents as needed to reconfigure the network interface, eth0.

Then, you can reactivate eth0 with the «sudo ifup eth0» command.

samson ★★
()
Последнее исправление: samson (всего исправлений: 1)

может косяк в том, что сначала (при поднятом интерфейсе) меняются настройки в /etc/network/interfaces и уже с измененными настройками делается stop, который не отрабатывает корректно. Ну а потом уже start...

samson ★★
()
Ответ на: комментарий от samson

может косяк в том, что сначала (при поднятом интерфейсе) меняются настройки в /etc/network/interfaces и уже с измененными настройками делается stop, который не отрабатывает корректно.

Двачую этого регистранта, была вроде такая проблема.

anonymous
()
Ответ на: комментарий от samson

[Tip] Tip

For general guide to the GNU/Linux networking, read the Linux Network Administrators Guide.
[Tip] Tip

For modern Debian specific guide to the networking, read The Debian Administrator's Handbook — Configuring the Network.
[Warning] Warning

Instead of using the traditional interface naming scheme («eth0», «eth1», «wlan0», …), the newer systemd uses «Predictable Network Interface Names» such as «enp0s25».
[Warning] Warning

This chapter is getting outdated since this is based on Debian 7.0 (Wheezy) released in 2013.
[Tip] Tip

Although this document still uses old ifconfig(8) with IPv4 for its network configuration examples, Debian is moving to ip(8) with IPv4+IPv6 in the wheezy release. Patches to update this document are welcomed.
[Tip] Tip

Under systemd, networkd may be used to manage networks. See systemd-networkd(8).

прямо под оглавлением

SevikL ★★★★★
()
Последнее исправление: SevikL (всего исправлений: 1)
Ответ на: комментарий от SevikL

похоже, что сути не меняет

на счет ip вместо net-tools - так ТС использует новый стиль:

address 10.10.10.200/24

имя интерфейся - тут врядли причем

samson ★★
()

Решение путем замены.

Попробуй переделать конфигурацию сети под systemd-networkd.

Директория файлов настройки /etc/systemd/network

lo можно не настраивать!

external.network

----

[MATCH] Name=eth0

[Network] DHCP=no DNS=8.8.8.8

[Address] Address=10.10.10.200/24

[Route] Gateway=10.10.10.1

---

После этого отключить другие сетевые службы и включить systemd-networkd.service

anonymous
()
Ответ на: Решение путем замены. от anonymous

Запутался я совсем, надо как-то подытожить:

1. Вырубаем интерфейс
2. Меняем настройки
3. Рестартим, либо запускаем интерфейс.

Перед

ifdown eth0 
/etc/init.d/networking restart

Fess88
()
Ответ на: комментарий от samson

А смысл уходить от /etc/network/interfaces?

С подобной ошибкой в службе networking я особо не сталкивался, но это может оказаться решением всей возни.

networkd может быть более понятным чем возня с интерфейсами если человек умеет читать man.

anonymous
()

Вероятно, потому что ifdown не знает о том что ты редактировал конфиг и пытается удалить несуществующий адресс с интерфейса. Я всегда использую тип static он гибче, но твой кейс так же не решает.

allow-hotplug eth0
iface eth0 inet static
        up ip link set $IFACE up
	up ip addr add  10.10.10.200/24 dev $IFACE
	up ip route add default via 10.10.10.1
        down ip route del default
        down ip addr del 10.10.10.200/24 dev $IFACE
        down ip link set $IFACE down

Yur4eg ★★
()
Ответ на: комментарий от Yur4eg

Поэтому проще использовать networkd.

networkd запоминает предыдущую конфигурацию до остановки в момент остановки восстанавливает исходное состояние без изменения в конфигурации, в момент запуска считывает конфигурацию и сохраняет её в памяти, инициализирует интерфейсы.

anonymous
()
Ответ на: комментарий от prof343

10.10.10.200/24 - чем не человеческаяя запись?

Зачем в debian 9 менять название интерфейсов?

на это тоже есть причины.

samson ★★
()
Ответ на: комментарий от prof343

Зачем в debian 9 менять название интерфейсов? От скуки? По крайней мере это нужно делать правильно.

у меня правильно, не беспокойтесь. Действительно есть моменты, когда нужны именно старые имена.

Прописывайте маску по-человечески netmask 255.255.255.0

У меня маска прописана более по-человечески, на мой взгляд, и это не имеет отношения к вопросу.

И добавьте интерфейс в автозагрузку auto eth0

это не поможет

constin ★★★★
() автор топика
Последнее исправление: constin (всего исправлений: 2)
Ответ на: комментарий от Fess88
ifdown eth0 && sed -i -- 's/10.10.10.200\/24/10.10.10.199\/24/g' /etc/network/interfaces && /etc/init.d/networking restart

и интерфейс отваливается

constin ★★★★
() автор топика
Ответ на: комментарий от Fess88

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


ifdown eth0 && sed -i -- 's/10.10.10.200\/24/10.10.10.199\/24/g' /etc/network/interfaces && /etc/init.d/networking restart && ifup eth0

constin ★★★★
() автор топика
Последнее исправление: constin (всего исправлений: 1)
Ответ на: комментарий от constin

а зачем networking restart? сделал ifdown, поменял конфиг, сделай ifup...

так работает:

ifdown eth0 && sed -i -- 's/10.10.10.200\/24/10.10.10.199\/24/g' /etc/network/interfaces && /etc/init.d/networking restart
?

samson ★★
()
Ответ на: комментарий от constin

&& /etc/init.d/networking restart && ifup eth0

и

/etc/init.d/networking restart && /etc/init.d/networking restart

или

/etc/init.d/networking stop && /etc/init.d/networking start

тоже работает?)

samson ★★
()
Последнее исправление: samson (всего исправлений: 1)
Ответ на: комментарий от samson

да, перестарался

работает:


ifdown eth0 && sed -i -- 's/10.10.10.200\/24/10.10.10.199\/24/g' /etc/network/interfaces && ifup eth0

в общем, я думаю, что там ошибка в скрипте перезапуска сервиса. надо посмотреть код.

constin ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.