楓です。しれっと固定ページが増えていますが、まあそういうことです。
実は今の住居、回線が共有回線なんですよ。
余談ですがア〇マ〇シ〇ッ〇(自主規制)で物件探すとインターネット無料(=共有回線)ばかりヒットしますが、やっぱりライトで無知な消費者はインターネット回線なんてわりとどうでもいいんでしょう。
楓が住んでいるのはA社じゃないですけどね!
話が逸れましたが、共有回線だと困ることがあるんです。
一般ユーザーには関係のない話ですが、サーバーが立てられないんですよ。
サーバーを立てよう!
サーバーを立てるために最低限必要なものは
- グローバルIPアドレス
- (自分で管理できる)ルーター
- サーバーマシン
- やる気
これだけです。
で、共有回線で問題になるのが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のマルチプレイができるようになったってわけ。
コメントを残す