Я воспроизвел ваш результат (с попыткой соединения SSH, 127.0.0.1
пока мой sshd
слушал). Это правда, что программное обеспечение просто зависает.
Я думаю, что программное обеспечение ожидает ответа или сообщения об ошибке, но сообщение об ошибке попадает в то же правило и отклоняется. Я не знаю, есть ли какая-то цепная реакция сообщений об ошибках или нет - я не исследовал это далеко. Во-первых, я могу ошибаться, поэтому, если у кого-то есть объяснение получше, я буду рад его прочитать.
Вот решение, которое работает в моем Debian:
Вы должны подключиться к 127.0.0.2
( объяснение здесь ) и сделать ваше правило следующим образом:
sudo iptables -I INPUT 1 -p tcp -d 127.0.0.2 -j REJECT --reject-with tcp-reset
Обратите внимание на -I INPUT 1
фрагмент, который гарантирует, что правило будет вставлено в первую позицию, чтобы иметь приоритет над любым ACCEPT
правилом, которое у вас уже может быть в вашем петлевом интерфейсе (как у меня в моем Debian).
Я повторил тест (с попыткой соединения SSH, на этот раз 127.0.0.2
). Сбой сразу
Connection refused
Я думаю, что это работает, как вы хотите, потому что теперь сообщение об ошибке предназначено 127.0.0.1
, таким образом, не будет поймано правилом отклонения и не сможет пройти.