Ipset
ipset は Linux のファイアウォールである iptables の補助アプリケーションです。素早く簡単にルールを設定して IP アドレスをブロックしたりすることができます。
インストール
公式リポジトリから ipset をインストールしてください。
設定
IP アドレスのブロック
まず新しいネットワークアドレスの "set" を作成します。以下のコマンドは "myset" という名前で "net" ネットワークアドレスの "hash" セットを新しく作成します:
# ipset create myset hash:net
そしてブロックしたい IP アドレスをセットに追加します:
# ipset add myset 14.144.0.0/12 # ipset add myset 27.8.0.0/13 # ipset add myset 58.16.0.0/15
最後に、セット内のアドレスをブロックするように iptables を設定します。以下のコマンドは "INPUT" チェインの一番上にルールを追加して、"src" パケットや "DROP" の場合 "-m" で ipset の "myset" という名前のセットとマッチ (--match-set) して、ブロックを行います。
# iptables -I INPUT -m set --match-set myset src -j DROP
ipset を永続的に設定
作成した ipset はメモリに保存されるため再起動すると消失してしまいます。ipset を永続化させるには以下を行って下さい:
まず ipset を /etc/ipset.conf
に保存:
# ipset save > /etc/ipset.conf
そして ipset.service
を有効化します。iptables.service
による iptables のルールの設定と同じように動作します。
PeerGuardian や他のブロックリストでブロック
maeyanie.com の作者による pg2ipsetAUR[リンク切れ: package not found] ツールには ipset-update.sh スクリプトが付属しており、cron によって自動的に様々なブロックリストを更新します。現在、デフォルトで、国別のブロックや tor 末端ノードのブロック、Bluetack の pg2 リストのブロックが実装されています。
他のコマンド
セットを確認するには:
# ipset list
"myset" という名前のセットを削除するには:
# ipset destroy myset
全てのセットを削除するには:
# ipset destroy
他の情報は ipset の man ページを見て下さい。