お名前.com VPS でHTMLファイルを表示する

 

このブログはお名前.comの共用サーバーを使っているのですが、最近知った「マストドン」というオープンソースのSNSを設置してみたいなぁとか思い、共用サーバーでやろうとしたら、やっぱりユーザー権限とかが少なすぎて色々サーバーいじくるのは無理みたいでした。

そこで、同じくお名前.comが運営しているVPSサービスを試用してみることにしました。

いきなりマストドンの設置するのもアレでしたのでとりあえずブラウザからアクセスしてHTMLを見てみようと鼻くそほじりながら思っていたら、かなり苦労したので書いておこうと思います。

前置きになりますが、僕は普段WEBプログラマーをやっていまして、プログラミングの方は分かるのですが、インフラ周りの知識は素人に毛が生えた程度というものです。

そんな僕でもお名前.comのVPSに登録して、言われるがまま初期サーバーの構築を画面の案内に沿ってポチポチやったら、とりあえずCentOS6.5が入ってるサーバーが手に入りました。

そこからまずはSSHでサーバーに接続し、WEBサーバーとか入っているのか確認しました。

そして以下状態であることがわかりました。

  1. httpdは入っている
  2. rootユーザーしかいない
  3. ipアドレスは「xxx.xxx.xxx.xxx」だ
  4. WEBサーバのドキュメントルート「/var/www/html」は空っぽ

そこで僕は、rootユーザーで「service httpd start」を実行

ブラウザで「xxx.xxx.xxx.xxx」にアクセスしてみました。

タイムアウト……

なんでだろう、とりあえずindex.htmlを作ってみた。

「/var/www/html/index.html(中身はHelloという文字のみ)」

もう一回ブラウザでアクセスしてもタイムアウトしました。

職業プログラマの誇りを胸に、焦らずcurlコマンドでipを叩いてみた。

出るねぇ、内部からのアクセスならOKって事は……ファイアーウォールか!

ファイアーウォールの設定の仕方が分からなかったのでググったらiptablesという物で制御しているらしい。

早速「/etc/sysconfig/iptables」の中身を確認した所、ポート80(http)、443(https)のアクセスが許可されていない事が分かった。

ほーん、楽勝楽勝、これを追加すりゃ良いんだなと以下をiptablesに追加しました。

-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 443 -j ACCEPT

ここからが地獄の始まり、僕は何も考えずにiptablesの一番下に上記を追加しました。

結論から言うと、iptablesの記述が以下になっていたのでブラウザからアクセス出来ていませんでした。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [28:2333]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 443 -j ACCEPT
COMMIT

これの何がいけないかというと、真ん中あたりで出てくる「REJECT」という記述の意味が、「上の通信ルールに該当してなかったら全部エラーにすんべ」という事らしく、僕が追加した80、443の許可ルールはまったく機能していなかったという事です。

下手に素人に毛が生えた知識があったので、調べ方も雑になり、よく理解しないまま設定をしたのがまずかったです。

なので下の記述に直して、iptablesを再起動「service iptables restart」したら無事ブラウザでHelloとでました。

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [28:2333]
-A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state –state NEW -m tcp –dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp –dport 443 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT

iptablesの記述の順番に気づくまでが長く、標準サーバーが何か変な制御を入れている!とか検討違いな予想をしてOSを入れ替えてみたりWEBサーバーが変なんだ!とか言ってhttpdをインストールしなおしてみたり色々遠回りをしてしまいました。

また、お名前.comのお問い合わせから、「ドメインを設定しないIPだけのアクセスって出来ないようになってます?」という赤面する質問も投げてしまいました。まだ回答返ってきてないですけど、もう解決しました。すみません

なにはともあれ、これで色々遊べそうな環境が手に入ったので、今後色々作って遊んで行きたいですね。

以上。