
Одной из моих headless-систем назначен статический IP-адрес через /etc/network/interfaces
проводной Ethernet. Она подключена к маршрутизатору, который также является DHCP-сервером. Через пару дней статический адрес отбрасывается и заменяется DHCP-адресом. Почему так?
- Если я делаю
sudo ifdown eth0 && sudo ifup eth0
илиsudo service networking restart
перезагружаю, система снова принимает статический адрес, но затем через пару дней IP-адрес меняется на динамический. - В сети нет другой системы с (случайно) таким же статическим адресом.
- NetworkManager не запущен в системе.
- Я настроил систему так, чтобы она отправляла мне письмо, как только адрес меняется, но время, в которое это происходит, кажется совершенно случайным. Время аренды DHCP составляет 24 часа, но это, похоже, не коррелирует, и в любом случае это не должно иметь значения для статического адреса.
- Мой /etc/network/interfaces выглядит так:
авто ло iface lo inet loopback авто eth0 iface eth0 inet статический адрес 192.168.124.104 шлюз 192.168.124.253 сетевая маска 255.255.255.0
Это своего рода головоломка.
Что может заставить систему отказаться от статического адреса и запросить вместо него адрес DHCP? На что обратить внимание, в каком файле журнала?
решение1
Недавно я столкнулся с этой проблемой, и после некоторого расследования выяснилось, что в /etc/dhcp/dhcp.conf необходимо добавить (или раскомментировать) блок, подобный этому:
псевдоним { интерфейс "eth0"; фиксированный адрес 10.1.1.1; опция маска-подсети 255.0.0.0; }
Надеюсь это поможет!
С уважением, Глендон Гросс
решение2
Хм, странно... Я не уверен, что это имеет значение, но ради аккуратности я бы поместил параметр netmask
сразу после "адреса", а не после "шлюза". Вам также следует удалить/деактивировать пакет ( isc-
) dhcp-client
с хоста и остерегаться ipv6 и resolveconf
пакета. Перед этим: способ выяснить, что происходит, — это установить правило брандмауэра, которое принимает и регистрирует весь трафик на порты DHCP и с них (сервер 67 UDP и клиент 68 UDP) или создать журнал для состояния устройств, или dhcp-client
прослушать ваш трафик.
Обходной путь (или альтернативное решение) — настроить резервирование DHCP для некоторых хостов или бесконечное время аренды для их адресов DHCP. Для меня это работает очень хорошо, и преимуществом является централизованное управление. Если ваш сервер DHCP — это ваш модем/маршрутизатор, вы, вероятно, можете настроить его в веб-интерфейсе (либо время аренды, либо резервирование), а на некоторых маршрутизаторах вы даже можете поставить галочку «фиксированный адрес». Если вы настроили свой собственный сервер (Ubuntu?), вам нужно отредактировать файл, dhcpd.conf
добавив несколько строк, например:
host Accountant {
hardware ethernet 00:1F:6A:XX:XX:XX;
fixed-address 192.168.124.104;
}
решение3
Я знаю, что это старо, но я столкнулся с похожей проблемой, с которой я боролся. Я также открыл кейс в Canonical, чтобы попросить о помощи.
С тех пор я решил свою проблему и вернулся к этому посту в надежде, что это может оказаться полезным для кого-то еще, кто может наткнуться на это. В конце концов, моей проблемой оказался 'wicd-daemon'. Я не уверен, как и почему был установлен пакет, но он был основным виновником потери моего статического адреса и возникновения других сетевых проблем для меня.
Симптомом моей проблемы было то, что dhclient запускался, если я отсоединял сетевой кабель и снова его подключал. Подобно проблеме, описанной здесь, я получал другой IP-адрес. Если я вручную устанавливал свою сетевую карту, все было в порядке, но затем некоторое случайное время спустя он получал другой IP-адрес (кажется, из-за того, что dhclient работал в фоновом режиме). Проверьте, запущен ли dhclient. А почему dhclient вообще работает, это уже другая проблема. Ниже я опишу, как мне удалось решить проблему с dhclient, и в итоге я проследил несколько путей (avahi, ntpd, ifup, ...). В моем случае это был wicd-daemon.
Проблема изначально обнаружилась при тестировании, когда я переключал сети, что требовало от меня физического перемещения сетевого кабеля. Это вызвало у меня проблемы с сетью, которых не должно было быть. Также потребовалось некоторое время, чтобы обнаружить проблему, так как я не ожидал, что мой статический IP-адрес упадет или изменится.
В конце концов, очистка wicd-daemon и python-wicd решила проблему. Теперь моя система сохраняет статический IP-адрес, даже если сетевой кабель отключен. Я также не видел запуска dhclient, поэтому думаю, что эта проблема также разрешилась сама собой. Я пошел и по другим путям, посмотрел на avahi, который, как мне показалось, играл роль в моих проблемах, я также посмотрел на ntpd (странно, я знаю, но он появлялся в системных журналах одновременно с другими проблемами; NTPD, вероятно, не имел к этому никакого отношения, но он создавал подозрительные журналы). Я пробежался по нескольким кроличьим норкам, пока случайно не наткнулся на процесс wicd, работающий во время другого тестирования.
Короче говоря, проверьте, запущен ли dhclient и запущен ли в вашей системе сетевой менеджер вроде wicd. Это может быть причиной проблем с вашим статическим адресом.
решение4
Хочу только добавить, что если у вас несколько интерфейсов, убедитесь, что вы определили правильный интерфейс в своем /etc/network/interfaces
файле.
Для меня проблема была в том, что auto lo
было определено в начале файла. Но на самом деле вместо этого нужно было auto eth0
.
После правильного определения мой статический IP-адрес сохраняется после перезагрузки.
Надеюсь, это кому-нибудь поможет.