Иногда возникает ситуация, что система перестает отвечать. Система зависла. По ssh до не добраться, но сетевая подсистема жива. (В силу устройства ядра linux) На помощь нам приходят
http://en.wikipedia.org/wiki/Magic_SysRq_key . Это "интерфейс" прямого общения с ядром. Даже если система зависла.. можно попытаться вывести её из этого состояния с помощью
Magic_SysRq_key или минимизировать возможный ущерб. Мы можем сделать это
удаленно. Для этого нужно будет собрать xtables-addons -
http://xtables-addons.sourceforge.net/ . Это модули к сетевому фильтру ядра. Нам не нужно пересобирать ядро и патчить iptables. Интересующий нас модуль
SYSRQ.
из man xtables-addons:
The SYSRQ target allows to remotely trigger sysrq on the local machine over the network. This can be useful when vital parts of the machine hang, for example an oops ina filesystem causing locks to be not released and processes to get stuck as a result — if still possible, use /proc/sysrq-trigger. Even when processes are stuck, inter‐rupts are likely to be still processed, and as such, sysrq can be triggered through incoming network packets.
Создаем правило на оживляемой машине:
iptables -A INPUT -s 10.10.25.1 -m mac --mac-source aa
cc:dd:ee:ff -d 10.10.25.7 -p udp --dport 9 -j SYSRQ
оно принимается udp пакет на пор 9 с определенного адреса на определённый + включена дополнительная проверка по мак адресу отправителя, надо заметить, что модуль sysrq допускает и более серьёзную проверку отправителя и исключение подмены (вклинивания) (man xtables-addons).
добавляем пароль для доступа:
echo -n "password" >/sys/module/xt_SYSRQ/parameters/password
Создаём скрипт для оживления системы:
#!/bin/bash/
sysrq_key="s" # the SysRq key(s)
password="password"
seqno="$(date +%s)"
salt="$(dd bs=12 count=1 if=/dev/urandom 2>/dev/null | openssl enc -base64)"
req="$sysrq_key,$seqno,$salt"
req="$req,$(echo -n "$req,$password" | sha1sum | cut -c1-40)"
echo "$req" | netcat -uw1 10.10.25.7 9
где sysrq_key это один из Magic_SysRq_key, а passwd это пароль доступа заданный
на оживляемой машине.
[Ответ]