ludwig125のブログ

頑張りすぎずに頑張る父

VMのUbuntuにWebサーバを立てる

概要

  • 色々苦戦したのでメモ
  • やったこと

  • 1.VM上のubuntupythonで簡易的にweb serverを立ち上げる ポート8181

  • 2.VM内のブラウザで localhost:8181 → 当然見られる
  • 3.ホストPCのWindowsのブラウザで、VMのプライベートIPアドレスを指定して192.168.19.137:8181を見る → これも見られる
  • 4.しかしiphoneからはアクセスできない
  • 5.ルータのネットワーク外からポート8181のアクセスが来た時に、VMのWebサーバに行くようにポートフォワード(ポート開放)する
  • 6.ルータがポートフォワードできるIPアドレスの範囲がVMIPアドレスと違うー
  • 7.なので、VMIPアドレスをポートフォワードできるものに変更
  • 8.ファイアウォールの設定も変更しよう ⇒ ufwで8181のポートをallowに
  • 9.まだつながらない → 面倒だから 自宅ルータから直接VMをブリッジで接続しよう
  • 10.出来た iphoneやノートPCのブラウザからUbuntu内のファイルの情報が見られた
  • 11.グローバルIPアドレスを設定して見られないか確認

ここまで2,3日

手順

1.VM上のubuntupythonで簡易的にweb serverを立ち上げる ポート8181

python3の入っている環境で以下の通り、Webサーバ立ち上げる

ポートは8181

$ python3 -m http.server --cgi 8181
Serving HTTP on 0.0.0.0 port 8181 (http://0.0.0.0:8181/) ...

2.VM内のブラウザで localhost:8181 → 当然見られる

f:id:ludwig125:20171028223645p:plain

3.ホストPCのWindowsのブラウザで、VMのプライベートIPアドレスを指定して192.168.19.137:8181を見る → これも見られる

Windows側のブラウザでは上のlocalhostの部分をVMIPアドレスにしたものを表示 - VMIPアドレスはifconfigで取得した(IPV4のもの)

4.しかしiphoneからはアクセスできない

みられない

会社PCからも見られない

pingもtracerouteもVMのアドレスに対してやってもtimeoutする(ホストPCであるWindowsIPアドレスに対しては問題なし)

$ ping 192.168.19.137
PING 192.168.19.137 (192.168.19.137): 56 data bytes
ping: sendto: Host is down
ping: sendto: Host is down
Request timeout for icmp_seq 0
ping: sendto: Host is down
Request timeout for icmp_seq 1
ping: sendto: Host is down
Request timeout for icmp_seq 2

$ traceroute -v 192.168.19.137
traceroute to 192.168.19.137 (192.168.19.137), 64 hops max, 52 byte packets
 1  * *^C

なぜつながらないのか?

あとからもう少しわかることだったが、ここで繋がらなかった理由はこの時点のVMのネットワークの設定がNATになっていて、ホストPC側の設定が正しくなかったからかもしれない

5.ルータのネットワーク外からポート8181のアクセスが来た時に、VMのWebサーバに行くようにポートフォワード(ポート開放)する

家のルータはソフトバンク光の 光BBユニット(EWMTA2.3)だった

そうしたら以下のように言われた

f:id:ludwig125:20171028224431p:plain

転送先IPアドレスに誤りがあります。IPアドレスの範囲内で半角数字で入力してください

6.ルータがポートフォワードできるIPアドレスの範囲がVMIPアドレスと違うー

以下によると、転送先のIPアドレスの範囲が限られているらしく、VMのアドレスと異なるので転送できない・・・

f:id:ludwig125:20171103222942p:plain

7.なので、VMIPアドレスをポートフォワードできるものに変更

以下の方法でVMIPアドレスを、ポート開放できる範囲に変える

実践初級ITブログ VMwareのUbuntuを固定IPにする

もともとのUbuntu
IPアドレス 192.168.19.137
ブロードキャストアドレス 192.168.19.255
サブネットマスク 255.255.255.0
デフォルトルート 192.168.19.2
第一DNS 192.168.19.2


VMのUbuntuのIPを以下に変更
192.168.3.11

変える前

f:id:ludwig125:20190306044115p:plain

変えた後

f:id:ludwig125:20190306044131p:plain

f:id:ludwig125:20171103224244p:plain

ifconfigなどでIPアドレスが変わっていることを確認 再度ポート転送を設定すると成功

f:id:ludwig125:20171103224629p:plain f:id:ludwig125:20171028225748p:plain

8.ファイアウォールの設定も変更しよう ⇒ ufwで8181のポートをallowに

utfいじる

  • ここでallowにしたポート以外はファイアウォールが有効なので、ホストOSからは接続できない

第76回 Ubuntuのソフトウェアファイアウォール:UFWの利用(1):Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

 $ sudo ufw status    
状態: 非アクティブ
 $ sudo ufw enable
ファイアウォールはアクティブかつシステムの起動時に有効化されます。
 $ sudo ufw status    
状態: アクティブ
 $
$ sudo ufw default DENY
デフォルトの incoming ポリシーは 'deny' に変更しました
(適用したい内容に基づいて必ずルールを更新してください)

$ sudo ufw allow 8181
ルールを追加しました
ルールを追加しました (v6)


$ sudo ufw status    
状態: アクティブ

To                         Action      From
--                         ------      ----
8181                       ALLOW       Anywhere
8181 (v6)                  ALLOW       Anywhere (v6)

 $  sudo ufw allow http
ルールを追加しました
ルールを追加しました (v6)

9.まだつながらない → 面倒だから 自宅ルータから直接VMをブリッジで接続しよう

以下の方法でブリッジに変更した - VMware上のLinux Webサーバに外部からアクセスできるようにする | あみだがみねのもろもろ備忘録

最初はNATに設定されていた f:id:ludwig125:20171028231018p:plain

ブリッジに変更 f:id:ludwig125:20171028230950p:plain

よくよく考えると、VMのネットワークをブリッジ接続にしたので、ゲートウェイDNS サーバーのIPアドレスはルータのIPアドレスが正しいはず なのに、それらがVMIPアドレスを変える前のままになっている 以下は間違い

f:id:ludwig125:20171103224244p:plain

以下が正しい

f:id:ludwig125:20171103224539p:plain

10.出来た ! iphoneやノートPCのブラウザからUbuntu内のファイルの情報が見られた

f:id:ludwig125:20171103224731p:plain

11.グローバルIPアドレスを設定して見られないか確認

上の接続はあくまで同一ネットワーク内からVMのプライベートIPアドレス 192.168.3.11 に繋いだだけだった

自分のグローバルIPアドレスが何か? - ルータの設定が書かれた以下のWAN側IPアドレスでも見られる - http://172.16.255.254/settei.html

LAN外のネットワークからルータのグローバルIPアドレスを設定して、 グローバルIP:8181で外からも接続できるか確認

  • Ubuntu側でWebサーバを立てる
$python3 -m http.server --cgi 8181 (git)-[master]
Serving HTTP on 0.0.0.0 port 8181 (http://0.0.0.0:8181/) ...
  • ネットワーク外からアクセスする

    • 注意点として、スマホからアクセスする場合はWifiを外して無線LAN外からアクセスする必要がある
    • ネットワーク内からグローバルIPに対してアクセスすることはできない
  • Wifiを切ったスマホから「グローバルIP:8181」でアクセスして、同様の画面が見られることが確認できた

図で書くとこんな感じだと思う(間違っていないはず・・)

f:id:ludwig125:20171103232200p:plain