Проблемы с Wicd: не переподключает сетевое соединение после обрыва; не восстанавливает прерванное соединение; пропадает сеть после ждущего режима; невозможно автоподключиться, вам придется вручную подключиться.
Заколебало сеть отваливаться, wicd её автоматически не хотетъ переподключать мол "you'll have to manually connect", а долбоящуры стены нещадно долБЛЯтъ (Иногда они возвращаются..Снова! Разорви бы их ракета), кругом упоротые зомби наступатъ, пули свистетъ, бимбы гриметъ, руки/ноги ("разом до пэрэмоги") лететъ, трубы дыметъ, канализация булькаетъ.., - жуть, мрак.
Но, невзирая ни на что, попробуем разобраться в том, кто виноват и что делать чтобы сука не было ни единого разрыва!
Итак, у нас есть:
- железяка с дебилинухом;
- ИБП, через который запитана железяка;
- проводное соединение через вай-вай роутер;
- вай-вай роутер запитанный напрямую из розетки 220В (без ИБП);
- регулярные разрывы сети, после которых Wicd автоматически не подключает сеть заново.
Что дальше?
Wicd это
Wicd - Wired and Wireless Network Connection Manager, сетевой менеджер проводных и беспроводных соединений
$ apt-cache show wicd Package: wicd Version: 1.7.4+tb2-6 Installed-Size: 35 Maintainer: Debian WICD Packaging Team <pkg-wicd-maint@lists.alioth.debian.org> Architecture: all Depends: wicd-daemon (= 1.7.4+tb2-6), wicd-gtk (= 1.7.4+tb2-6) | wicd-curses (= 1.7.4+tb2-6) | wicd-cli (= 1.7.4+tb2-6) | wicd-client Description-ru: сетевой менеджер проводных и беспроводных соединений — метапакет Wicd — сервер общего назначения для настройки сетевых интерфейсов, предоставляющий простой, но гибкий интерфейс соединения с сетями. Среди особенностей: * Разнообразные настройки; * Возможность соединения (и поддержание профилей) как для проводных, так и для беспроводных сетей; * Поддержка различных схем шифрования, включая WEP, WPA, WPA2, и специальных схем; * Совместимость с wireless-tools; * Значок в системном лотке, отображающий сетевую активность и мощность сигнала; * Отсутствие зависимостей от GNOME (но требуется GTK+) делает простым использование использование в Xfce, Fluxbox, Openbox, Enlightenment и пр. . Данный метапакет позволяет установить все компоненты Wicd, включая один из клиентов, выбираемый вручную. Description-md5: c9261832526d55320630e5dce0403d40 Homepage: https://launchpad.net/wicd Tag: admin::configuring, admin::monitoring, implemented-in::python, network::configuration, role::metapackage, role::program, scope::utility, use::checking, use::configuring, use::monitor Section: net Priority: optional Filename: pool/main/w/wicd/wicd_1.7.4+tb2-6_all.deb Size: 25008 MD5sum: 7557d1fb720626f14e98cd04a77293ea SHA256: 300dcc15490a81c151f84f67b701cd8e50f9ba4ea8df016f4042572475655e0d
Хроники разрыва
Обрыв сети был начиная с 06.08.2022 06:05 до 06.08.2022 11:07, до момента "Aug 6 11:07:47" ручного "Connect -> Wired Network" через иконку wicd в трее.
- Детали системных журналов по ссылке: https://pastebin.com/kZxtLJmU
Кто виноват
Как видно из журналов сеть отвалилась начиная с 06:00, в промежутке с 06:00 до 11:00 машина находилась в ждущем режиме с заблокированным экраном.
Случилось приключилось в результате отключения электричества "Aug 6 06:00:02":
Aug 6 06:00:02 shajtan apcupsd[668]: 'Power failure'.
Дальше ntpd сплюнул интерфейсы
Aug 6 06:00:03 shajtan ntpd[678]: Deleting interface #4 enp1s0, fe80::225:22ff:fefe:526%2#123, interface stats: received=0, sent=0, dropped=0, active_time=618921 secs Aug 6 06:00:03 shajtan ntpd[678]: Deleting interface #5 enp1s0, 192.168.166.100#123, interface stats: received=3979, sent=3987, dropped=0, active_time=618915 secs
Отлинковался и сам интерфейс enp1s0, "Link is Down" к труду и обороне не готов "enp1s0: link is not ready"
[Сб авг 6 06:00:05 2022] r8169 0000:01:00.0 enp1s0: 'Link is Down' [Сб авг 6 06:00:14 2022] RTL8211B Gigabit Ethernet r8169-100:00: attached PHY driver [RTL8211B Gigabit Ethernet] (mii_bus:phy_addr=r8169-100:00, irq=IGNORE) [Сб авг 6 06:00:14 2022] IPv6: ADDRCONF(NETDEV_UP): 'enp1s0: link is not ready'
dhclient сделал всего две попытки последняя из которых была 06:00:12, после чего dhclient больше не просыпался (весь журнал проверен) аж до 11:08 ручного "Connect -> Wired Network" через иконку wicd в трее
Aug 6 06:00:12 shajtan dhclient[16254]: dhclient.c:2878: Failed to send 300 byte long packet over fallback interface. Aug 6 06:00:12 shajtan wicd[439]: Failed to connect to non-global ctrl_ifname: enp1s0 error: No such file or directory
Спустя пол минуты включилось электричество
Aug 6 06:00:32 shajtan apcupsd[668]: Running on UPS batteries. Aug 6 06:00:40 shajtan apcupsd[668]: Mains returned. No longer on UPS batteries. Aug 6 06:00:40 shajtan apcupsd[668]: Power is back. UPS running on mains.
Подано питание на роутер, сетевая карта проснулась, но интерфейс не прилинковался:
[Сб авг 6 06:00:48 2022] RTL8211B Gigabit Ethernet r8169-100:00: Master/Slave resolution failed [Сб авг 6 06:00:48 2022] r8169 0000:01:00.0 enp1s0: Link is Down
"Unable to autoconnect, you'll have to manually connect" - ок, так и делаем "Connect -> Wired Network" через иконку wicd в трее
2022/08/06 11:07:48 :: Putting interface down 2022/08/06 11:07:48 :: Releasing DHCP leases... 2022/08/06 11:07:48 :: Setting false IP... 2022/08/06 11:07:48 :: Stopping wpa_supplicant 2022/08/06 11:07:48 :: Flushing the routing table... 2022/08/06 11:07:48 :: Putting interface up... 2022/08/06 11:07:50 :: Running DHCP with NO hostname
Значит, как всегда виноваты Putting, жидомасоны, зомбоящик, и особенно упоротые барано-макаки делающие "Power failure".
Дежавю

Тут мне стала понятна причина ещё одного разрыва сети на одном VPS "эуропэйского хостынга". VPS сервант был всегда доступен по VNC и месяцами арбайтен без ребута, но сеть внутри него падала то по 5-10 раз на день, то 1-2 раза в месяц. Вероятно драные сетевые шлейфы в разбитых портах туда-сюда как г@мно в ополонке или сисьадмин пьяный на проводах коммутаторов/маршрутизаторов спать ляга, - там костыль "routing-fix.sh" давно поставлен, отчёты о его срабатывании иногда приходят...
В итоге:
- после отключения на роутере электричества (Power failure) отваливается сетевой интерфейс на машине;
- Wicd как бы вкурсе, но по каким-то причинам "Putting interface down" и "Putting interface up" не хочет или/и не может делать автоматически, хотя успешно справляется с этой задачей при старте системы;
- и мы "have to manually connect".
Но, "manually connect" не всегда возможен по простой причине "hands and legs" удалённости (поразлеталися все "разом до пэрэмогы" например), а удалённый доступ к шайтан-машине "must have".
Поэтому, без костылей "до пэрэмогы" никак не додыбать...
Консолидироваться можно вдвоём, и по вечерам, и на костылях. Вопрос в другом... © Замысел
Что делать
Нужно СРОЧНО делать схроны и бункераАаааа!!!!!!
Ах.., ну да.., ещё и костыли для Wicd...
Зачем костыли для Wicd, когда можно прописать фиксированный ИП адрес?
Не всё так просто.
Проводов от Интернетов куча, при нехватке портов на роутере провод другого провайдера включается прямо в сетевуху, а провайдер обычно всегда выдаёт динамический ИП адрес.
Кроме того, от "Power failure", "Link is Down" и "enp1s0: link is not ready" статический адрес не помагёт если электричество пропадёт на роутерах.
Каким функционалом должен обладать костыль для Wicd и что он должен уметь делать?
Ответ очевиден и пропечатан в журнале /var/log/wicd/wicd.log в тот момент времени, когда вручную восстанавливали подключение к сети "Connect -> Wired Network" через иконку wicd в трее, а значит наш костыль должен уметь:
- Putting interface down
- Releasing DHCP leases...
- Setting false IP...
- Stopping wpa_supplicant
- Flushing the routing table...
- Putting interface up...
- Running DHCP with NO hostname
К вышеупомянутому нужно добавить ещё и умение костыля определять "if link up" and "if link down". На "Setting false IP..." и "Stopping wpa_supplicant" можно "забить".
Как воспроизвести проблему и проверить арбайтен ли костыль?
Ответ очевиден!
- выдёргиваем вилку питания вай-вай роутера из розетки 220В;
- ждём 10-30 сек и втыкаем её обратно;
- на роутере три лампочки (провод ПК/провод сети/вай-вай), после включения в сеть загорится провод сети и вай-вай (если активировано на роутере) или только провод сети;
- выжидаем таймаут активации костыля (если установлен), анализируем результат.
Костыль 1
Запускаемый (от root юзверя конечно) по крону crontab -e -u root bash-скрипт /home/shajtan/bin/iflink.sh
Только после полного отключения блокировщика скриптов и рекламы на этом месте появится полезная подсказка/ссылка/код/пример конфигурации/etc!
Ахтунг!
Запускать от root-а bash-скрипты владельцем которых является другой пользователь не феншуёво совсем! Владельцем скрипта /home/shajtan/bin/iflink.sh должен быть только root, и правильно будет переместить его в /root/bin.
Костыль 2
Кинуть скрипт, с именем например "wicdrestart", в /etc/wicd/scripts/postdisconnect, после добавить его имя в переменную "postdisconnectscript = wicdrestart" конфигурационного файла /etc/wicd/wired-settings.conf (default "postdisconnectscript = None").
По-сути теже яйца, только вид сбоку - но запустить скрипт вместо cron-а должен будет wicd в случае "Power failure" на роутере:
[POWER OFF ON ROUTER] $ sudo systemctl status wicd ● wicd.service - Wicd a wireless and wired network manager for Linux Loaded: loaded (/lib/systemd/system/wicd.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-08-14 14:31:55 EEST; 1min 37s ago Docs: man:wicd(8) Main PID: 16756 (wicd) Tasks: 5 (limit: 4745) Memory: 16.2M CGroup: /system.slice/wicd.service ├─16756 /usr/bin/python -O /usr/share/wicd/daemon/wicd-daemon.py --no-daemon --keep-connection ├─16766 /usr/bin/python -O /usr/share/wicd/daemon/monitor.py ├─16835 /bin/sh -c /etc/wicd/scripts/postdisconnect/wicdrestart wired wired wired > /dev/null 2>&1 ├─16836 /bin/sh /etc/wicd/scripts/postdisconnect/wicdrestart wired wired wired └─16837 sleep 300
Перед правкой конфига /etc/wicd/wired-settings.conf останавливаем systemctl stop wicd иначе изменения могут быть потеряны.
Правда почему-то этот костыль wicd не всегда запускает.
Более того, после перезагрузки машины не запускается "/usr/bin/python -O /usr/share/wicd/daemon/monitor.py", нет иконки в трее. Отключив "Костыль 2" фронтенд Wicd успешно стартует и с иконкой всё ок.
- При перезагрузке сетевой интерфейс несколько раз вкл/выкл, о том сигнализирует светодиод порта подключения ПК;
- В скрипте первой строчкой "
sleep 300" - возможно из-за этой задержки?; - Не стартует
monitor.pyи после ручного "systemctl restart wicd"; - Нет иконки в трее и после запуска из меню "Приложения - Интернет - Wicd Network Manager".
Иконка в трее для "Wicd Network Manager" нам "до пэрэмогы", хотя страх как интересно почему не арбайтен, но это уже совсем другая история...
Костыль 3
А теперь на обоих, Костыль 1 + Костыль 2, и "разом до пэрэмогы".
Ведь два костыля надёжнее одного.
Ссылки по теме
- Wicd - Wikipedia
- wicd(8) — wicd-daemon — Debian buster — Debian Manpages
- wicd-wired-settings.conf(5) — wicd-daemon — Debian buster — Debian Manpages
- wicd-wireless-settings.conf(5) — wicd-daemon — Debian buster — Debian Manpages
- Ubuntu Manpage: wicd-cli - command-line interface to wicd
- NetworkConfiguration - Debian Wiki
- bash - WICD-CLI Script: How i read variable from the list of wireless networks - Stack Overflow

