パケットフィルタリングが思うようにいってなかった理由は、SYN+ACK なパケットまで CUT しちゃってたからでした。ipchains は「! -y」(NOT SYNが立っている)を指定するだけで問題なく動いたように思うんだけど、これは「SYN が立っている == SYN のみ立っている」という意味だったんだろうなー。
復習: TCP におけるコネクション確立の流れ
1) クライアント -----(SYN)-----> サーバ 2) クライアント <---(SYN+ACK)--- サーバ 2) クライアント -----(ACK)-----> サーバ