超ざっくり日本国内だけ通信許可するさくらのVPSのパケットフィルター

ネットマスクをいい感じにいじって(もうらうようにAIにお願いして)日本国内(国外もそれなりに混じる)からのアクセスだけ許可するよう設定しました
kanata4日前に追加

経緯

10年前(2015)に ざっくり日本国内だけ通信許可するiptables というブログを書いたんですが、当時は

  • アメリカとか中国とか色んな国から、なんか悪いことを目的としたアクセスが頻繁にくる
  • よって、httpとhttps以外のポートは全て閉じたいが、自分的に不便
  • そうだ、日本国内だけ許可したらいいじゃない
  • ところが、SeversMan@VPSのCentOSのiptablesは、登録できるエントリー上限が256の模様 なんとか256個の制限内に収めたい

で、日本で使われているIPアドレスの第一オクテッド(つまり、aaa.bbb.ccc.ddd のaaa)だけを見て、日本かどうか判断するというのをやっていました(それなりに効果はあったと思う)

それで10年たった今、似たような状況がまた発生したんですね

  • アメリカとか中国とか色んな国から、なんか悪いことを目的としたアクセスが頻繁にくる( 10年前よりひどい
  • よって、httpとhttps以外のポートは全て閉じたいが、自分的に不便
  • そうだ、日本国内だけ許可したらいいじゃない
  • ただCPUもメモリも少ないVPSを使っているのでiptablesに大量に登録したくない
  • さくらのVPSのパッケットフィルター(無料!)で防げばいいじゃない
  • ところが登録できるルールの上限が20の模様 なんとか20ルールの制限内に収めたい

…10年前より制限きついやんけ、、とうわけでチャレンジしました

さくらのVPSのパッケットフィルターとは

  • さくらのVPSを使っている人のみが使えし無料のファイアウォール
  • 登録ルールは20が上限、ただ許可する送信元IPアドレスをCIDRで設定できる。なので やりようによっては許可するIPアドレスをおおきくまとめることができる
  • 使っているVPSとは別の装置でフィルタリングしてくれているので、VPSがパケットフィルタリングのリソースを割かなくてもよい(うれしい!)

日本国内で使っているIPアドレスをいい感じにまとめる

国外のIPアドレスが混じっちゃってもかまわない(妥協)ので、いい感じにまとめてくれとAIくんにお願いしました
最初は、渋って20以上のルールとか回答してきたAIくんですが、「 頑張れ頑張れできるできる絶対出来る頑張れもっとやれるって!やれる気持ちの問題だ頑張れ頑張れそこだ!そこで諦めんな絶対に頑張れ積極的にポジティブに頑張る頑張る!iptablesだって頑張ってるんだから! 」と修造ばりに熱く語りかけることで、いい感じの回答が得られました

AIのしごと

厳密に検証していません、が、おおむねカバーできてそう。5ルールで。でかした!
これならまだ15ルール分余裕があるので、細かく制御したい分はルール追加すればいいんじゃ
以下、AIの回答

サマリ

日本の全 IPv4 アドレス(約1.99億アドレス)はすべて APNIC(アジア太平洋地域インターネットレジストリ)の管轄下にある複数の /8 ブロックで割り当てられています。これらを効果的に 5 つの大きな CIDR(/4, /4, /3, /3, /2)にまとめることで、国内 IP をすべてカバーしつつ、海外 IP の一部混在も許容したまま、パケットフィルターのルール数を大幅に削減できます

日本の IP 割り当て概要

  • 総割り当て:日本国内には約199,092,992 個の IPv4 アドレスが割り当てられています(約2億)- APNIC 管轄:これらはすべて JPNIC を通じて APNIC より /8 ブロック単位で配布されています(例:1.0.0.0/8, 14.0.0.0/8, 27.0.0.0/8 … 183.0.0.0/8)
  • 海外 IP の混在:上記 APNIC ブロックは日本以外のアジア太平洋地域にも及ぶため、集約時には国内外の混在が避けられませんが、国内カバーを最優先とします

CIDR による大域的集約手法

CIDR(Classless Inter-Domain Routing)では、隣接する /8 ブロックを**より大きなプレフィクス**にまとめることで、ルール数を劇的に削減できます。以下では、日本の割り当て/APNIC ブロックを 5 つのネットワークに圧縮した例を示します。

集約プレフィクス 範囲(第1オクテット) 含む主な APNIC /8 ブロック
1.0.0.0/4 1–15 1.0.0.0/8, 14.0.0.0/8
16.0.0.0/4 16–31 27.0.0.0/8
32.0.0.0/3 32–63 36.0.0.0/8, 39.0.0.0/8, 42.0.0.0/8, 43.0.0.0/8, 49.0.0.0/8,58.0.0.0/8, 59.0.0.0/8, 60.0.0.0/8, 61.0.0.0/8
96.0.0.0/3 96–127 101.0.0.0/8, 103.0.0.0/8, 106.0.0.0/8, 110.0.0.0/8, 111.0.0.0/8,112.0.0.0/8–126.0.0.0/8
128.0.0.0/2 128–191 133.0.0.0/8, 153.0.0.0/8, 175.0.0.0/8, 180.0.0.0/8,182.0.0.0/8, 183.0.0.0/8

参考情報

設定とその後

というわけで設定した!

それなりに機能していて、ある程度の攻撃パケットは防いでくれています(漏れた国外からのアクセスもあるにはあります)
ただ無料なので、やっておいて損はないはず~

20250429_sakuravps_packet_filter.png (42.554 KB) kanata, 2025/04/29 14:59


コメント

クリップボードから画像を追加 (サイズの上限: 100 MB)