GlobalなIPを持ってないけど自宅サーバを公開したい!(構成編)
はじめに
ちょっとでもLinuxやApache等に触った人であれば、一度は
「自宅でサーバを運用したい!あわよくば外に公開したい!!」
と思ったことがあると思う。たぶん。
サーバを外部に公開するために最も必要なもの、
それは決して高スペックなPCや高機能なサーバアプリケーションではなく、
グローバルIPアドレスである。
日本の大多数の人たちはフレッツ光やau光などのインターネット回線を契約し、
静的・動的関らずグローバルIPアドレスを借りて日々インターネットしているけど、
世の中にはグローバルIPをもらえない環境の人もいる。
マンション付属の無料インターネットユーザである。
これはマンションに管理者が1本インターネット回線を引き、
DHCPで各部屋にローカルIPアドレスを配ることで回線コストを下げ、
そのマンションに住む人は回線料金を払わずに数十Mbpsのそこそこの速度で
インターネットができる、というもの。(家賃にちょっとは上乗せ?)
以前住んでたレオパレスもこの方式だった。今住んでるアパートもこれ。
この環境だと自部屋にはローカルIPアドレスしか払い出されず、
せっかくの自宅サーバが公開できない!!ということになる。とてもショック。
マンションルータに入って静的NAPT設定できるなら話は別だけど…
そこで自分が考えた方法は、「サーバを外に張り出させる」という作戦。
グローバル環境のVPSとか借りて、そこでリクエストを受け付けて自宅サーバに流せば、
リソースとしては自宅サーバを公開できる!と考えた。
構成
とりあえずさくらVPSの一番安いプランのHDD 100GB、Mem1GBのCentOSを借りて、
そいつをVPNサーバにしつつ、自宅サーバからVPNを張って、
その中にhttpやらcifsやらを流す。
ちなみにさくらの費用は年間11158 円(消費税含)です。
高いか安いかは人それぞれですが、固定IPだしハードは壊れる心配がないし遊べるし、
個人的には満足してます。
VPNはスマホからの接続性も考慮してL2TP/IPSecにしてるけど、
ぶっちゃけ使わないし色々問題もある(また別途書く)ので、
大人しくOpenVPNで良いと思う。
フロントエンドのWebサーバはプロキシ中心だし設定書きやすい、最近流行り(重要)
という観点でNginxにした。Apacheは動かしてない。
バックエンドのEpgTimerSrvはブラウザ経由で録画予約するためのWebサーバ
アプリケーションで、あるURLへのアクセスを
EpgTimerSrvが待ち受けるportの5510へとリバプロする。
各部屋の回線を束ねるマンションルータはうちの場合YAMAHAのNVR500なんだけど、
普通にtelnet出来てshow configとかshow techinfoとか叩ける。いいのかこれ。
今のところの自宅サーバの役割は2つ
①自宅サーバ(実は録画サーバ)のWeb予約
②録画した番組のストリーミング再生(できるけどほとんど使ってない…)
※NASも兼ねてるけど外部には未公開
細かい設定とかも備忘録的に残しておきたいので、別の日にまた書く。
まとめ
・動的でも静的でもグローバルIPアドレスない環境は色々と大変
・だけどVPN使うとそのへんが捗る
・自宅サーバ公開してないじゃん(タイトル詐欺)
以上。
おまけ
自宅サーバのスペック
OS:Windows7 Professional
SSD:Intel520 128GB(OS領域用)
HDD:WD緑2TB×4 RAID10構成(NAS用)
Mem:DDR3-1600 8GB×2 DDR3-1333 4GB×2(24GB)
M/B:ASUS P8H77-M PRO
電源:SST-ST45SF
仮想化もしたいけど2Core4Threadだとオーバーコミットしそう…エンコもしてるし。