Имеется машинка с линуксом (виртуальная, но это не существенно). Внезапно меня перестали туда пускать по ssh, соединение отваливается по таймауту. Попробовал зайти из другой подсети - пустили. Полез смотреть в местный файрвол, iptables-save выдаёт такое:
...
*filter
:INPUT DROP [1720:331297]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [65205216:16171997601]
Дальше идёт пачка правил для цепочки INPUT, у ВСЕХ -j ACCEPT, то есть запрещено только то, что не разрешено. И среди них есть правила, разрешающие полный доступ из обеих подсетей, из которых я пробовал туда заходить:
-A INPUT -s 192.168.103.0/255.255.255.0 -j ACCEPT
-A INPUT -s 192.168.12.0/255.255.255.0 -m comment --comment "subnet 1" -j ACCEPT
Никаких дополнительных таблиц нет, всё только в filter. И вот первое правило работает, из той подсети зайти можно. А второе - нет, даже на пинги ответов нет.
Запустил tcpdump, входящие пакеты вижу, то есть, проблема явно не во внешних файрволах. Но ответов нет. Получается, что пакеты с моего хоста сразу по приходу дропаются, не доходя до sshd.
Попробовал добавить в начало таблицы правила для полного доступа со своего IP, а также на 22 порт TCP отовсюду. Никакого эффекта, на 22 порт всё равно не пускают, и на пинги ответов нет.
hosts.allow и hosts.deny пустые.
Куда копать??
Upd: проблема оказалась в криво настроенной маршрутизации.