中国からのアクセスを遮断 (iptables編)
🌐 はじめに 😊
DNSサーバーを公開していると…
- 広告目的っぽいリクエストが増える
- 特定のURLばかり指定される
- 特に中国からのアクセスはマナーが良くないことが多くて😓
- ログがどんどん埋まっちゃうんだよね💦
そこで、中国IPをサクッと遮断すると…
- ログがスッキリ!✨
- サーバー負荷も軽減👍
- とっても気持ちいいからオススメだよ🎉
📘 参考IPリスト
- IPv4:https://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone
- IPv6:https://www.ipdeny.com/ipv6/ipaddresses/aggregated/cn-aggregated.zone
注意 firewalledと競合する可能性があるので併用不可です。
sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo dnf remove -y firewalld
🔥 方法:CentOS 9+iptables/ipsetで中国IPをブロック
以下は CentOS 9 環境に対応した、安全&軽量なブロック手順だよ👍
① 必要パッケージをインストール
sudo dnf install -y ipset curl
② 自動更新スクリプトを作成
sudo vi /usr/local/bin/update-china-block.sh
#!/bin/bash
# === 設定 ===
IPV4_URL="https://www.ipdeny.com/ipblocks/data/aggregated/cn-aggregated.zone"
IPV6_URL="https://www.ipdeny.com/ipv6/ipaddresses/aggregated/cn-aggregated.zone"
SET4="china-ipv4"
SET6="china-ipv6"
# === ipset作成(存在しないときだけ)===
ipset list $SET4 >/dev/null 2>&1 || ipset create $SET4 hash:net
ipset list $SET6 >/dev/null 2>&1 || ipset create $SET6 hash:net family inet6
# === ipsetクリア ===
ipset flush $SET4
ipset flush $SET6
# === 新しいIPリストを取得して追加 ===
curl -s $IPV4_URL | xargs -n1 ipset add $SET4
curl -s $IPV6_URL | xargs -n1 ipset add $SET6
# === iptablesルールがなければ追加 ===
iptables -C INPUT -m set --match-set $SET4 src -j DROP 2>/dev/null || \
iptables -I INPUT -m set --match-set $SET4 src -j DROP
ip6tables -C INPUT -m set --match-set $SET6 src -j DROP 2>/dev/null || \
ip6tables -I INPUT -m set --match-set $SET6 src -j DROP
保存後に実行権限を付けるよ👇
sudo chmod +x /usr/local/bin/update-china-block.sh
③ cronに登録(毎朝3時に自動更新)
sudo crontab -e
以下を追加:
0 3 * * * /usr/local/bin/update-china-block.sh >/dev/null 2>&1
✅ 初回実行(テスト)
sudo /usr/local/bin/update-china-block.sh
🔁 再起動対策(ipsetは揮発性のため)
再起動時にも自動で読み込ませる設定を追加👇
sudo sh -c 'echo "/usr/local/bin/update-china-block.sh" >> /etc/rc.d/rc.local'
sudo chmod +x /etc/rc.d/rc.local
🎉 おつかれさま!
これで毎日03:00に最新の中国IPリストを取得して自動ブロックできるよ👌
再起動しても大丈夫だから、ログもサーバーもスッキリ快適に!
ぜひ試してみてね~😊✨
コメント
コメントを投稿