私はiptablesを使い始めたばかりで、よくわからないものに出会いました。
ちなみに、私はUbuntu wikiのIptablesHowToの指示に従いました。
natテーブルとmangleテーブルは空です。現在、フィルターテーブルのみを使用しています。
問題
次のiptablesルールを追加すると、
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
iptables -A INPUT -j DROP
...その後も引き続きssh経由で自分のマシンにアクセスできますが、すべてのiptablesコマンドの実行には1〜2分かかります。これはDNSの問題で-n
はなく、変更されません。
ソリューション
テーブルをフラッシュし、代わりにこれらの3つのルールを追加すると、すべてが正常に機能します。
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
?