Мав нагоду затестити це чудо. Домашній сервак перший тиждень стояв без монітора, а дебажити ядро треба було, бо воно падало.
Хитрість в тому, що приймач повідомлень мав бути в іншій підмережі. Майже всі мануали пишуть, що треба, щоб приймач був у тій самій підмережі, що й сервер із 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, щоб він собі тихенько працював «до востребования».
Залишити відповідь