netconsole

Мав наго­ду зате­сти­ти це чудо. Дома­шній сер­вак пер­ший тиждень сто­яв без моні­то­ра, а деба­жи­ти ядро тре­ба було, бо воно пада­ло.

Хитрість в тому, що при­ймач пові­дом­лень мав бути в іншій під­ме­ре­жі. Май­же всі ману­а­ли пишуть, що тре­ба, щоб при­ймач був у тій самій під­ме­ре­жі, що й сер­вер із netconsole, але це не так.

Тому нехай без­го­ло­вий сер­вер має зов­ні­шню IP-адре­су a.b.c.d на інтер­фей­сі eth0, а при­ймач — x.y.z.t. Пере­да­вач буде над­си­ла­ти логи з пор­та ABCD на порт при­йма­ча XYZT.

На при­йма­чі:

netcat -l -u x.y.z.t XYZT

На без­го­ло­во­му сер­ве­рі:

sudo dmesg -n 7
sudo modprobe netconsole "netconsole=ABCD@a.b.c.d/eth0,XYZT@x.y.z.t/aa:bb:cc:dd:ee:ff"

А тепер нюанс хитро­щів. netconsole вима­гає вка­зу­ва­ти MAC-адре­су при­йма­ча. І якщо він в іншій під­ме­ре­жі, то вка­зу­ва­ти тре­ба MAC-адре­су мар­шру­ти­за­то­ра під­ме­ре­жі без­го­ло­во­го сер­ве­ра. Така собі ручна мар­шру­ти­за­ція.

Щоб дізна­ти­ся адре­су сво­го мар­шру­ти­за­то­ра, доста­тньо вико­на­ти таку коман­ду:

sudo arp -a | grep "($(ip r | grep eth0 | grep default | awk '{print($3)}'))" | awk '{print($4)}'

Вона якраз і видасть MAC-адре­су мар­шру­ти­за­то­ра для під­ме­ре­жі, до якої під­клю­че­ний без­го­ло­вий сер­вак сво­їм інтер­фей­сом eth0.

Після modprobe на при­йма­чі поси­пля­ться пові­дом­ле­н­ня від ядра без­го­ло­во­го сер­ве­ра. netcat можна запхну­ти в сесію tmux, щоб він собі тихень­ко пра­цю­вав «до востре­бо­ва­ния».

Мітки: ,

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.