Автор Тема: Задаване на IP на интерфейс без връзка в SLES 12  (Прочетена 2820 пъти)

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Като споменах SLES в другата тема се усетих, че може да ви питам за един проблем със SuSE Linux Enterprise Server 12, който ме спъна. Не успявам да задам IP адрес на мрежови интерфейс при изключен кабел. Някой играл ли си е с тази дистрибуция и знае ли дали има начин това да стане със стандартния инструментариум в нея?

Понеже съм се отчаял, че ще намеря отговор, та поне да си изплача мъката :) Губя почва под краката си, когато разбера, че трябва да се занимая с някое SuSE. С тази дистрибуция ми върви наопаки - някои неща се случват на магия и ми спестяват работа (макар че рядко е добра идея да разчиташ на неща, които не си разбрал как са станали), но редовно ми се случват проблеми, които другаде съм нямал. Лично аз съм на мнение, че SuSE може да се брои за Linux точно толкова, колкото и Android, ама не искам да разсърдя някои негови фенове :)
В тази версия на SLES за настройка на мрежата не се ползва ifup, не се ползва и NetworkManager, а се ползва нещо, на име Wicked. Мрежовия интрефейс (в случая бяха 4 карти, вързани 2х2 в bonding, но това няма значение за проблема; пробвах и с единична карта) го настроих през YaST, постарали са се да има привидно всичко необходимо за настройка, но се оказва, че Wicked не задава IP на интерфейса, когато няма включен кабел в него. Оказа се и, че въпреки различните настройки за това кога интерфейсът да се вдига (при boot, при вкаран кабел, при зареден модул...) не се задава IPv4 адрес, ако системата зареди без включен кабел и чак след това се включи. Казвам IPv4 адрес, понеже се оказа, че IPv6 адрес с всякакви настройки успява да се зададе автоматично при вкарване на кабела (макар че там нямах IPv6 свързаност, за да пробвам работи ли, и макар че IPv6 адрес също не се задава, ако кабелът е изключен при вдигане на интерфейса). След заравяне във файловете в /etc/wicked намерих един ред, на който пишеше "use-nanny" и беше "false". Зададох го на "true" и след рестарт на Wicked автоматичното задаване на адрес при вкаран кабел тръгна. Чудно защо в сървърна дистрибуция е изключено по подразбиране и защо не е изведено сред настройките в YaST, но гледайки в changelog-а на дистрибуцията как ту е бил включен по подразбиране, ту не, оставам с впечатлението, че този демон може и да е бъгав, но сякаш работи. Но той не помага за задаване на адреси при изключен кабел. А е важно да се задават адреси при изключен кабел, защото хората там казаха, че щяло да се случва сървърът да се пуска без мрежа (това също не го разбирам, но както и да е), а на сървъра му сложихме dhcpd, който упорито отказва да запали, ако няма зададен IP адрес на мрежовия интерфейс, към който е вързан. Успях да го накарам да се рестартира при ifdown-ifup и при цялостен рестарт на мрежата, като сложих команда за това в един скрипт за рестарт на firewall-а, който Wicked си ползва, и като добавих "sleep 1" в скрипта за стартиране на dhcpd, понеже без него успяваше да се рестартира, преди да е успял да се зададе адрес на интерфейса, въпреки че се изпълняваше съвсем в края на процеса по рестарт на мрежата. Не съм сигурен как се получаваше това разминаване, но SLES 12 пристига със systemd и е възможно да има някаква връзка с асинхронните му процеси. И въпреки всичко все още не стартира, ако системата се зареди с изключен мрежови кабел, защото все още не се задава IP адрес на интерфейса при този случай и ще иска ръчно рестартиране след включването на кабела, защото, за разлика от основния демон на Wicked, демонът Wicked-nanny, който включих да се грижи за задаването на адрес при включване на кабела, не поддържа скриптови разширения и няма къде да му добавя рестарт на dhcpd-то. Да, това се решава със скрипт в cron-а, който да следи за появата на адрес и да рестартира dhcpd-то, но... Всички гимнастики, които описах, нямаше да са нужни, ако в SLES 12 се задаваше IP адрес и на мрежови интерфейси без връзка. Много ще се радвам, ако разбера, че и то си можело, но аз съм пропуснал нещо :)
« Последна редакция: Feb 13, 2015, 01:22 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8792
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
5.


Сузи е Яст, а изклчвайки Яст имаме неуправляема система. Но съвсем не е само той. Свободата ни дава и това. Има много дистрибуции, например Гобо, Гуикс, Цоребоот и какви ли не. Сузана дори не е тежък случай до колкото нейната организация поне е Посикс. Само рака наречен Яст дето го е завладял, но поне пациента е на командно дишане, а не отишъл в друг (по-добър  :D) свят, като други ;)

По проблема не мога да ти помогна, просто разтягам масали.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
6.

Направи си RJ-45 заглушка :)
Не знам дали е правено такова нещо (гошо не открива), но си го представям така: Взимаш един куплунг RJ-45 и го кримпваш с две жички като свързваш 1 с 3 и 2 с 6

Второто търсене в гошо го намери: ето такова нещо.
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

4096bits

  • Напреднали
  • *****
  • Публикации: 6180
    • Профил
Боже мили! Чак до такива трикове ли се стига  :D
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
Първият път четох описанието на проблема "по диагонал". След второто прочитане бих предложил портът да се включи в суич с надпис "Не изключвай!" и в него вече да включват каквото и когато си искат. И млъквам, понеже първото ми предложение не върши работа в случая, а второто няма да ти хареса.
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
И млъквам, понеже първото ми предложение не върши работа в случая, а второто няма да ти хареса.
Не разбрах защо си отбелязал първото си предложение с т.6. Всъщност е много идейно, от години не съм си играл с loopback кабел и въобще не се сетих за него като вариант, но и никога не съм го пробвал с bonding и ще си поиграя при мен, макар че така наизуст не се сещам защо да не работи. Но едва ли ще се стигне да го предложа на клиента - положението в момента е закърпено стабилно (макар и грозно) с решенията по-горе, а ако все пак почне с нещо да дразни, по-удобно би било за всички ни, ако успея да го убедя да сменим дистрибуцията. Надписът "Не изключвай!"... Виждал съм подобен надпис над контакта на рутер, през който минава цял офис, но това не пречеше един път да реват, че нямат Интернет, след като някой дръпнал щепсела, за да включи кафеварка. Решетките също са ненадеждно оборудване, понеже съм срещал и включен калорифер в UPS, заключен в rack шкаф :D
Та... просто търся как софтуерно може да стане по-чисто и красиво изпълнение на задачата. Интересно е да прочетем и идеи за хардкор изпълнения, но няма да отговорят на темата в случая.
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8792
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
И млъквам, понеже първото ми предложение не върши работа в случая, а второто няма да ти хареса.
Не разбрах защо си отбелязал първото си предложение с т.6.


Ами предполагам, че се майтапи, защото аз отбелязах своя коментар с точка пет.
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
ААААРРРРГГГГХХХХ...  >:D Понякога нещата, които най-трудно се забелязват, са тези, които са ти под носа (а моят е голям)! И за пореден път някакво щастие ми се усмихва баш на петък 13-ти (макар че сядам да го опиша след полунощ).

Та... в SLES 12 демонът Wicked, който се грижи за мрежата, е вкоренен дълбоко в системата, дори всички мрежови команди, имената на които започват с "if", са заменени с негови инструменти, и всички мрежови операции минават през него. Но не и командата "ip", наличието на която в системата някак пропуснах преди. Изпълнението на
Код:
ip addr add 1.2.3.4 dev eth0
успешно задава адрес на интерфейса, независимо дали има връзка, или не, и независимо дали Wicked е включен, или не. И така това се явява решението на задачата.
Сега, има обаче малко допълнения (все пак още си е SuSE - не може без извращения). Това, че може да зададе адрес на интерфейса, не е достатъчно. Ако Wicked не е включен и не е взел в ръцете си мрежовите интерфейси, командата "ip" само задава адрес, но интерфейсът няма свързаност дори и при включен кабел, командата "ip" не може да зададе маршрутизатор, командата ifenslave не може да зададе bonding (макар че това не на всеки му трябва), и услуги, зависещи от работеща мрежа при стартирането си (като dhcpd), не палят. Така че е нужно Wicked да се остави включен и интерфейсите (включително и bonding-ите, че иначе няма да се виждат в ifconfig) да се настроят през него, а командата "ip" да се ползва само за задаване на адреси и маршрутизатори, когато не са зададени от Wicked. Тук има малко свобода на избора. Ако в Wicked се зададат статични и/или DHCP адреси, то командата "ip" трябва да се изпълнява само при зареждане на системата и за предпочитане е само тогава, когато при това няма връзка и Wicked не е задал адреси. Ако в Wicked на интерфейсите се зададе да няма настройка за адресите (опцията "No Link and IP Setup"), то всяко задаване и промяна на адресите ще се прави с командата "ip", като не трябва да се рестартира мрежата със systemctl (или service) скрипта и ifdown/ifup командите, защото интерфейсите ще останат без адреси, докато пак не се изпълни "ip" командата с нужните настройки. За споменатия по-нагоре демон Wicked-nanny, който се грижи да зададе адрес, когато се вкара кабел, забравяме - в никой от сегашните варианти не е нужен, а дори в някои случаи може да зададе излишен допълнителен (втори, трети...) адрес на някой интерфейс. Трябва да се има предвид и, че ако изпълнението на "ip" командата се сложи в /etc/init.d/boot.local, за да се изпълнява при зареждане на системата, то преди командата трябва да се добави ред със sleep от някакви секунди, иначе, заради асинхронността на systemd, командата ще се изпълни, преди Wicked да е вдигнал съответния интерфейс и адресът няма да се зададе. Вместо това командата "ip" може да се добави в /etc/wicked/extensions/firewall (скрипт на Wicked, който рестартира защитната стена при рестарт на мрежата; може и в отделен скрипт, но трябва да се опише после в XML-ите на Wicked), с което не само ще се спести нуждата от sleep преди "ip" командата, но и ще се задават нужните настройки при рестарт на мрежата със systemctl, service или if-down-ifup, когато на Wicked е казано да не задава адреси. Ако обаче се планират такива рестарти на мрежата, а човек има dhcpd на системата, то в допълнение ще трябва да направи всички гимнастики, които описах в началото на темата (с изключение на Wicked-nanny), за да го запази работоспособен след това. Подобни неща ще са нужни и за други услуги, които, подобно на dhcpd, много зависят от това какво се случва с интерфейсите, с които работят.

Извинявам се за поредното обширно обяснение, но някой ден на някого (включително и на мен, като го позабравя) може да му спести доста глупави главоболия :)
« Последна редакция: Feb 14, 2015, 03:39 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

BRADATA

  • Напреднали
  • *****
  • Публикации: 833
  • Distribution: Slackware/Mint/CentOS
  • Window Manager: console/KDE/LXDE
    • Профил
    • WWW
...
Извинявам се за поредното обширно обяснение, но някой ден на някого (включително и на мен, като го позабравя) може да му спести доста глупави главоболия :)
Няма за какво да се извиняваш :) Ний трябва да ти благодарим :) Поне сега знаем, какво не трябва да ползваме, ако искаме да си свършим работа. И четейки тази тема без да искам се връщам върху темата за системд.... Накъде отива линукс?
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
SLES WhiteBox
Живота, вселената и някакви други глупости
BudaNET 1 1704 Последна публикация Oct 26, 2004, 18:28
от ohubohu
Проблеми с инсталацията на SLES
Сървъри
shtraker 2 2458 Последна публикация Dec 17, 2009, 14:54
от shtraker
NFSEN верху SLES 11 sp2
Настройка на програми
mitko_to 3 1700 Последна публикация Dec 03, 2012, 21:43
от dark_elf