NIC1つのWindowsマシンでルータ+OpenVPNサーバ
前口上+PC構成
OpenVPNでリモートから自宅にアクセスできるようにしていたのだけど、
いちいちメインPCをwolで起こすのが無駄に感じたので、2ヶ月ぐらい前にサーバ用PCを自作してみました。
ついでに古いルータも置き換えちゃおうって軽い気持ちで思ってました。
構成はこんな感じ
24時間動かすもんだから省電力がいいと言うことで調べたところ、
5350+AM1Iが良いと言う評判だったので買ってみました。
AMDの自作はやったことがなくて興味があったってのもあるけど。
ACアダプタも効率が良いらしいと言うことで。
でかい立派なケースも要らないので、1000円ぐらいのケースを
糸鋸+千枚通しで加工してケースにしました。
あと、Gigabitハブも買ってきました。
やりたいこと
設定するに当たっての条件は次の通り。
いろいろやってみた
で、ルータ兼サーバなんて簡単に設定できるだろうと思ってたんですが、
いろいろ不都合が出てきてずいぶん大変でした。
2ヶ月ぐらいやってました。
結果だけ知りたい人はすっ飛ばしてください。
とりあえずOpenVPNとPPPOE
とりあえずルーティングは後回しにして、
windows8.1にOpenVPN(tap)を入れてPPPOEでインターネットにつないで見ました。
そしたら、
見事にBSOD(IRQL_NOT_LESS_OR_EQUAL)…
tapのOpenVPNサーバを構成するにはブリッジ接続が必要で、
ブリッジ接続とPPPOE接続を同時にするとBSODが出るようでした。
…じゃあルータとOpenVPNサーバを同時に動かすのは無理なのか?
しょうがないから仮想マシン上でいろいろ動かそう。
VMWare上にルータを構成してみる
仮想マシンでルータとOpenVPNサーバを動かせばいけるか?ということでやってみました。
OSは以前のルータで使ってたdd-wrtと本格的なルータOSのvyOS。
どっちも一応ルーティングができるところまで設定してみたけど、
パフォーマンスがいまいち(50Mbpsぐらいしか出なそう)だったので却下。
Win8.1単独で頑張ってみる
ルーティングに関してはNAT32とかいうルータ化ソフトがあるらしい。
OpenVPNはtunならブリッジしないし何とかなるんじゃないか?
と言うことで仮想マシンを入れないで頑張ってみました。
結果
- NAT32
遅すぎて話にならない。
あと使い方もよく分からないなあ。
ずいぶん昔に作られたソフトっぽいし。
- tun
サーバマシンとリモートの通信はできました。
しかし、ルーティングして自宅の別マシンとリモートで通信しようとすると上手くいきませんでした。
どうやら、tunで別マシンとリモート間の通信をするにはNICをプロミスキャスモードと言うモードにしなければいけないけれど、Windowsだとそのプロミスキャスモードにできないらしいです。
Windowsだめじゃん…
Windows server2012を入れてみる
WindowsにはサーバOSがあります。
サーバOSならルーティングとかいろいろできるのでは?という
淡い希望を持って入れてみました。
無料で使えるご身分だったので。
結果
ルーティング設定とかいろいろいじってみましたが、
NIC1つでルーティングを可能にする方法は見つかりませんでした。
しかも、Athlon5350+AM1IのマシンではWindows serverにおいてグラボがちゃんと動かず画面が真っ暗(リモートデスクトップでしか操作できない)
という問題もあり、サーバOSは諦めました。
インターネット接続の共有
いろいろ調べているうちに、Windows(クライアントOS含む)にはインターネット接続の共有(ICS)という機能があることを見つけました。
一見ライトユーザ向けの糞機能に見えるこの機能は意外と使えるもので、
ちゃんとルータとして動いてポートフォワーディングも使えます。
設定すると勝手にIPアドレスとサブネットを決められてしまいますが、後から変えられます。
他のマシンもサブネット内の固定アドレスを設定すればちゃんと動きます。
VMwareでOpenVPNを動かす
後はOpenVPN(tap)ですが、今までやったように直接Windows8.1上では動かなそうなので、
VMware上のubuntuに入れてみました。
http://www.slsmk.com/getting-started-with-openvpn/installing-openvpn-on-ubuntu-server-12-04-or-14-04-using-tap/
の通りやると、すんなり設定できました。
いやーLinuxってWindowsと違って素晴らしいですね。
しかし、仮想マシンにpingを送ると4倍ぐらいに増殖した応答が返ってくるという謎の現象が起こってしまいました。
これのせいでOpenVPNも異常なパケットが来たと認識してちゃんとつながりません。
どうやら、ルーティング機能を有効にしているとパケットが増殖してしまうようです。
じゃあ仮想化ソフト変えようか。