集合住宅LANの内側にサーバーを置いた話

楓です。しれっと固定ページが増えていますが、まあそういうことです。

実は今の住居、回線が共有回線なんですよ。

 

余談ですがア〇マ〇シ〇ッ〇(自主規制)で物件探すとインターネット無料(=共有回線)ばかりヒットしますが、やっぱりライトで無知な消費者はインターネット回線なんてわりとどうでもいいんでしょう。

楓が住んでいるのはA社じゃないですけどね!

 

話が逸れましたが、共有回線だと困ることがあるんです。

一般ユーザーには関係のない話ですが、サーバーが立てられないんですよ。

サーバーを立てよう!

サーバーを立てるために最低限必要なものは

  1. グローバルIPアドレス
  2. (自分で管理できる)ルーター
  3. サーバーマシン
  4. やる気

これだけです。

で、共有回線で問題になるのが1のグローバルIPですね。

マンションの共有回線はオーナーがまず一本だけ光回線を契約してきます。

その後、ルーターを設定して各部屋にプライベートIPを割り当てることで住人がインターネットにアクセスできるようにしています。

 

通常のブラウジングとかならこれで問題ありません。

しかし、サーバーを設置し外部に公開するときに問題になります。

 

インターネット上の通信は中継を無視した場合、サーバーとクライアント間のやり取りです。

サーバーの位置はグローバルIPで検知し、その先にあるルーターがどのマシン宛てかを判断して通信をやり取りしています。

ところが共有回線だと、グローバルIPの先にあるルーターが自分の家にあるマシンに通信を通してくれないんですよね。

そのルーターを自分でいじくれれば問題ないんですが、管理人に頼もうがどうしようがほぼ100%不可能です。

楓が外部にサーバーを公開するまで

これはサーバーを公開できないのだと諦めていましたが、ふとあるサイトを発見。

https://qiita.com/yoh2/items/8e44c47f091b860016a6

このサイトではVPSにVPNを立てて自宅のルーターを繋げる事でサーバーを公開しています。

楓はこの通りにはしていませんが、手法の応用によってサーバー公開にこぎつけることに成功しました。

具体的な相違点
  • ルーターではなくサーバーマシンのみをVPNに接続
    • 他のマシンは外部からアクセスする必要がないため
  • 利用したVPSは一台のみ
  • ルーターは自作ではなくBuffaloの市販品
  • さくらのVPSではない

手順覚書

さて、最初の状態を図示しました。グローバルIPがない状態です。

サーバーマシンと楓のパソコンが自宅LANを構成しています。

集合住宅の青ルーターが殆どの外部からの通信を棄却しているため、赤ルーターを設定してもサーバーは外部に公開されません。

 

そこでVPSを借りてきます。

VPSサーバーにはCent OS 7がインストールされており、OpenVPNサーバーのインストールが可能です。

自宅のサーバーとVPSをOpenVPNでつなぐことで仮想的なLANを構築することができました。

物理的な通信はVPS→青ルーター→赤ルーター→サーバーの順に通信を行っていますが、VPNの設置により内部の通信がトンネル化され、青ルーターには棄却すべき通信として扱われません。

結果、仮想的には自宅サーバーとVPS間の直接通信が成り立つわけです。

 

後はVPSをルーターにしてVPS宛に来た通信をそのまま自宅内のサーバーに横流しするよう設定することで接続ができます。(紫の経路)

Cent OS 7ではiptablesからfirewallに変わったけれども上手くいかなかったので結局iptablesを入れ直した。

ポートフォワーディングなんてそんなに難しくないのにFirewallだとゾーンがどうとかでよく分からなかった。

 

後はVPSにドメインを割り振ってやればWebサイトでもメールでもゲームでも自由に公開できるようになる。

よくわからない人向け

ここまでの説明を聞いて理解できる人はおそらく自作ルーターを運用したことがある人か、システムアドミニストレータで働いている人だと思います。

(少々パソコンに詳しい人も含め)大半の人は???となってると思います。

正直楓では上手く説明することは困難です。

重要用語の解説だけしておきますので。興味のある方は勉強してみてくだされ。

VPS

VPSはバーチャル・プライベート・サーバ(仮想専用サーバ、virtual private server)の略です。

インターネット上でレンタルすることができるサーバーマシンです。

お手軽価格で月額1000円未満から借りることが可能ですが、安い分自宅用サーバーマシンには性能で劣ることも。

性能が足りるなら上のようなことをしなくても普通にVPSでサーバー立てたほうが楽。

VPN

VPSと名前が似ていてややこしいが、別物。

バーチャル・プライベート・ネットワーク(Virtual private Network)の略で、遠隔地にあるパソコンを直接つないでいるかのように扱う技術。

これによって本来LAN内でしかできないことを遠隔地から実現できる。

 

大学の成績開示を外部から閲覧したり、学内LANでしかアクセスできない論文ページを閲覧したりするために用意しているのはこれ。

 

まとめ

まあ、素人では全く判らないと思うよ。楓もうまく説明できないから。

いずれにせよ、これでMinecraftのマルチプレイができるようになったってわけ。


コメント

“集合住宅LANの内側にサーバーを置いた話” への7件のフィードバック

  1. すみません質問なんですが自宅サーバとVPSサーバ間のVPN接続はどちらがクライアントになってるんですか?自宅側だと思ってるんですがあってますか?

    1. VPS側にVPNサーバーを立てて、自宅サーバーから接続するので自宅側がクライアントです。
      逆でも機能するはずですが、ポートフォワードの設定がややこしくなるので設定を考えたことはありません。

  2. 大変参考になる記事でした。有難うございます。
    こちらの記事に倣って、マインクラフトとは別のゲームのサーバーを建てようと奮闘していますが、お聞きしたいことがあります。
    PC-VPS間をVPN接続し、PC上でVPSのグローバルIPの取得を確認できたのですが、その後、サーバーを建てようと思ってもUDPポート開放ができていない状況です。
    PC、VPS、ルーター全てにポート開放を行ったつもりですが、疎通確認ソフトを使用しても、どうやら開放したポートにて通信が行われていないようでした。

    知識が乏しく、この後どうしたらよいか見当もつきません。何かとアドバイス頂けると嬉しいです。

    1. コメントありがとうございます
      状況が分かりませんが単にVPNでVPSとPCを接続しただけの場合、VPS側のportfoward設定がされていないはずです。
      iptablesやfirewalldでVPS側に来た通信をPC側に横流しするように設定を行ってみてください。

      また、VPSによってはterminalと別にポートの開放設定が必要なものがあります。そちらもご確認ください。

      1. たつまきのアバター
        たつまき

        返信有難うございます。
        VPS(CentOS7)側ではfirewall-cmdにてポート開放を行っているだけですが、それとは別にPCへのデータ送受信設定が必要ということでしょうか

  3. たつまきのアバター
    たつまき

    先日、質問させて頂いた者です。楓さんのアドバイス通りに、VPS側のポートフォワードをVPN経由でPCに送る設定をしたところ無事鯖建てできました。感無量です。本当に有難うございました。

  4. こんにちは。現在賃貸でグローバルIPが使えない状態になっています。
    どうにかならないかなと思い調べていたところこのサイトを見つけました。
    ネットワークやLinuxは初心者でわからないところがあるので質問させてください。
    webサイト公開していたVPSがドメインも取っていたのでこの記事を参考にVPNを組んでみようと思っていました。
    ですがVPS上のVPNサーバーに接続するところまではうまくいったのですが、そのあとポートフォワードしてクライアント側からインターネット上に出ること、インターネット側からローカル側にフォワードする方法がよくわかりませんでした。iptablesを使ったことがなく設定に躓いてしまっています。
    ポートフォワードの設定等をもう少し詳しくご教授いただけるととてもうれしいです。
    よろしくお願いいたします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です