Windowsでルーティングによりアクセスを制御する方法:雑記
Windowsのお話
発端は8.8.8.8への通信
Twitterを適当に眺めてたら勝手に8.8.8.8に通信しているやつがいるというのを見ました。
勝手に通信してるのはあまりうれしくないので制御しようと試みました。
そこでトラブルっていうか仕様なんだろうと思うけどめんどくさいことに遭遇したのでメモとして残しておきます。
ルーティングの試行錯誤
WindowsではCMDやPowerShellでルートを制御するコマンドがある(管理者権限が必要)のでそれでやってしまおうと思いました。
コマンドは以下ですね。
route add 8.8.8.8 mask 255.255.255.255 127.0.0.1 -p
詳細は省きますが、8.8.8.8への通信は127.0.0.1に投げるということをさせてます。
127.0.0.1は特別なPCのアドレスのため通信ができなくなるというものです。
が、コマンドは問題なく通るのにルートが追加されません・・・。
※route print でアクティブルートに乗らないが固定ルートには乗っている
pingでも8.8.8.8には通信できるし、tracertでもデフォゲに飛ばしていました。
127.0.0.1がだめなんではということで、VMwareが使ってるIFのアドレス(192.168.186.X)に飛ばしてみたら問題なく追加できました。
ただ、これだけのためにVMwareを入れるのはめんどくさいので、いろいろとつぶやいてみた結果、フォロワーさんにアダプタを追加してみては?と言われたので実施することにしました。
ルーティングでの成功方法
・デバイスマネージャーからネットワークアダプタを追加します。
・レガシーネットワークの追加から順番に選択していき、Microsoftの「KM-TEST Loopback Adapter」を選択していきます。
・ネットワーク接続で先ほど作ったアダプタが存在することを確認し、IFにIPアドレスを割り振ります。(問題ない適当なアドレス(169.254.1.1など)を選択します。)
・route print のアクティブにルートに169.254.1.1が存在していることを確認します。
・route add 8.8.8.8 mask 255.255.255.255 169.254.1.1 -p をCMD or Powershellに入力します。
・route print のアクティブルートのネットワーク宛先に8.8.8.8があることを確認します。
・ping に8.8.8.8にとばないことを確認する。
これで問題なく8.8.8.8に通信することができなくなるので、不要な通信はできなくなります。
ホスツファイルでの成功方法
IPアドレスで直接通信する場合は上記でいいのですが、ドメインで制御したい場合はどうしたらいいのでしょうか。
こっちは簡単で以下の場所にある hosts を修正すればいいのです。
(example.comへの制御の場合)
C:\Windows\System32\drivers\etc
確認方法は ping example.comでできます。
応答が127.0.0.1になっているはずです。
総評
アクセスさせたくないサイトやIPアドレスが分かっている場合、Windowsを個々で制御したい場合などはこういう方法でできることを知っておけばバッチファイルなどで簡単にアクセス制限できます。
ウイルス対策ソフトやURLフィルターなどは似たような方法でやってますね。
需要があるかどうかはわかりませんが応用はいくらでも聞くと思いますのでやってみてください!