Я только начинаю с iptables и наткнулся на то, чего я не очень понимаю.
К вашему сведению, я следовал инструкциям IptablesHowTo вики-сайта Ubuntu .
Таблицы nat и mangle пусты, сейчас я работаю только с таблицей фильтров.
Проблема
Если я добавлю следующие правила iptables:
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
... тогда у меня все еще есть доступ к моей машине через ssh, однако для выполнения всех команд iptables требуется около минуты или двух. Это не проблема DNS, -n
не меняет ее.
Решение
Если я очищу таблицу и добавлю эти три правила, все будет работать нормально:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
Может кто-нибудь объяснить мне, почему первое правило оказывает такое большое влияние на iptables? Я понимаю, что он позволяет установленным сеансам получать трафик, но зачем он мне, если открыт ssh?
sudo strace …
(из корневой оболочки), чтобы увидеть, что он блокирует.
sudo
выполняет поиск DNS и, если они заблокированы, команда будет медленной. Все ли другие вашиiptables
команды имеют префиксsudo
?