実習 5.Raspberry Pi
サーバとしての利用(1)

内 容


5. Raspberry Pi サーバとしての利用(1)

第5章ではRaspberry Piを サーバとして利用します.

サーバとはクライアントからの要求や指示に応じて動作して,要求される情報やサービスをクライアントに提供するマシン.クライアントはネットワーク上のコンピュータ(またはそのユーザ)で,サーバに対して必要な情報やサービスと要求,指示する.


5-1. SSHサーバを動作させる

すでにSSH(Secure Shell)は利用していると思いますが,SSHはサーバプログラムの1つなのでここで再掲します.SSHを用いてセキュアな(安全な,暗号化された)リモートシェルを利用できます.Linux(UNIX)ではOS本体をカーネル,周りを囲うように存在するユーザインタフェース部分をシェルと呼ぶ習慣があります.そのシェルのうち,遠隔地からも(リモートで)安全に利用できるシェルという意味で,SSH(Secure Shell)があります.

SSHサーバを設定するとこにより,ネットワーク内の(インターネット上の)マシンからターミナルソフトを利用して,RaspberryPiをコマンドで操作できます.

まず,SSHサーバを起動します.

  1. VNC上からまたは,コンソールディスプレイの上部メニューから「ラズベリーマーク」クリック→「設定」→「Raspberry Piの設定」クリック
  2. 「RaspberryPiの設定」で「インターフェース」タグをクリック
  3. 「SSH:」を●「有効」に切り替える
  4. RaspberryPiを再起動したら「TeraTerm」などターミナルソフトで接続を確認する(http://ttssh2.osdn.jp/などより自分の機器にあったものダウンロード)(使い慣れたSSHクライアントソフトがあればTeraTermに限らずそれでよい.)

手始めに,SSHクライアントで基本コマンドをいくつか実行してみよう

  1. whoコマンド 自分のマシンンにログインしているユーザの確認
    $ who ↵
    
    pi@raspberrypi:~ $ who
    pi       :0           2017-10-31 09:17 (:0)
    pi       tty1         2017-10-31 09:17
    pi       pts/0        2017-11-13 19:35 (thursday.mshome.net)
    
  2. arpコマンド 自分のマシンのNICに直接まはスイッチングハブを通してつながっているマシンのIPアドレスを表示する
    $ arp -a ↵
    
    pi@raspberrypi:~ $ arp -a
    ? (192.168.137.1) at b8:6b:23:86:d7:8a [ether] on eth0
    
    eth0インターフェースにつながる192.168.137.1が表示された
    
  3. ifconfigコマンド ネットワーク設定の確認と設置
    $ ifconfig -a ↵
    
    pi@raspberrypi:~ $ ifconfig -a
    eth0      Link encap:イーサネット  ハードウェアアドレス b8:27:eb:6f:49:b2
              inetアドレス:192.168.137.148 ブロードキャスト:192.168.137.255  マスク:255.255.255.0
              inet6アドレス: fe80::2180:23d4:a181:d491/64 範囲:リンク
              UP BROADCAST RUNNING MULTICAST  MTU:1500  メトリック:1
              RXパケット:1789 エラー:0 損失:0 オーバラン:0 フレーム:0
              TXパケット:2237 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
              RXバイト:150563 (147.0 KiB)  TXバイト:1185382 (1.1 MiB)
    
    lo        Link encap:ローカルループバック
              inetアドレス:127.0.0.1 マスク:255.0.0.0
              inet6アドレス: ::1/128 範囲:ホスト
              UP LOOPBACK RUNNING  MTU:65536  メトリック:1
              RXパケット:273 エラー:0 損失:0 オーバラン:0 フレーム:0
              TXパケット:273 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1
              RXバイト:21740 (21.2 KiB)  TXバイト:21740 (21.2 KiB)
    
    wlan0     Link encap:イーサネット  ハードウェアアドレス b8:27:eb:3a:1c:e7
              inet6アドレス: fe80::1a7e:8eab:8740:cf73/64 範囲:リンク
              BROADCAST MULTICAST  MTU:1500  メトリック:1
              RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
              TXパケット:0 エラー:0 損失:0 オーバラン:0 キャリア:0
          衝突(Collisions):0 TXキュー長:1000
              RXバイト:0 (0.0 B)  TXバイト:0 (0.0 B)
    
    
    eth0は192.168.137.148に設定されている
    wlan0は設定されていない
    内部処理用のloは127.0.0.1に固定
    
  4. routeコマンド route(ネットワークの経路)の設定を確認する
    $ route ↵
    
    pi@raspberrypi:~ $ route
    カーネルIP経路テーブル
    受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インタフェース
    default         192.168.137.1   0.0.0.0         UG    202    0        0 eth0
    192.168.137.0   *               255.255.255.0   U     202    0        0 eth0
    
    デフォルトゲートウェイが192.168.137.1設定されていることがわかる
    
  5. pingコマンド コマンドパラメータのIPアドレスを持つマシンと自分のマシンと間がIP(インターネットプロトコル)でつながっているかを確認する
    $ ping IPアドレス ↵  (133.20.160.***など)
    $ ping 名前 ↵  (www.u-tokyo.ac.jpやwww.yahoo.co.jpなど)
    
    自分にpingアドレスはifconfigコマンドのeth0でわかる
    pi@raspberrypi:~ $ ping 192.168.137.148
    PING 192.168.137.148 (192.168.137.148) 56(84) bytes of data.
    64 bytes from 192.168.137.148: icmp_seq=1 ttl=64 time=0.103 ms
    64 bytes from 192.168.137.148: icmp_seq=2 ttl=64 time=0.071 ms
    64 bytes from 192.168.137.148: icmp_seq=3 ttl=64 time=0.081 ms
    64 bytes from 192.168.137.148: icmp_seq=4 ttl=64 time=0.075 ms
    ^C
    --- 192.168.137.148 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 2997ms
    rtt min/avg/max/mdev = 0.071/0.082/0.103/0.015 ms
    
    デフォルトゲートウェイにping アドレスはrouteコマンドでわかる
    pi@raspberrypi:~ $ ping 192.168.137.1
    PING 192.168.137.1 (192.168.137.1) 56(84) bytes of data.
    64 bytes from 192.168.137.1: icmp_seq=1 ttl=128 time=0.452 ms
    64 bytes from 192.168.137.1: icmp_seq=2 ttl=128 time=0.238 ms
    64 bytes from 192.168.137.1: icmp_seq=3 ttl=128 time=0.245 ms
    ^C
    --- 192.168.137.1 ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 1998ms
    rtt min/avg/max/mdev = 0.238/0.311/0.452/0.101 ms
    
    
    次にwww.u-tokyo.ac.jpにpingする
    つながれば,そのRaspberryPiマシンはインターネットに正常につながっていることがわかる.

    www.u-tokyo.ac.jpにpingできない場合で
    210.152.135.178にpingが可能な場合はDNSサーバ設定が不良である.この場合
    $ sudo nano /etc/resolv.conf ↵
    で/etc/resolv.confを編集して
    nameserver 133.20.164.254 を設定

  6. nslookupコマンド 名前とIPアドレスを相互変換して表示する

    本コマンドはデフォルトでは利用できないので以下のコマンドでインストールする
    $ sudo apt-get install dnsutils ↵

    $ nslookup 名前 ↵
    $ nslookup IPアドレス ↵
    
    pi@raspberrypi:~ $ nslookup www.dendai.ac.jp
    Server:         172.20.10.1
    Address:        172.20.10.1#53
    
    Non-authoritative answer:
    Name:   www.dendai.ac.jp
    Address: 133.20.16.175
    
    pi@raspberrypi:~ $ nslookup 133.20.16.175
    Server:         172.20.10.1
    Address:        172.20.10.1#53
    
    Non-authoritative answer:
    175.16.20.133.in-addr.arpa      name = www.dendai.ac.jp.
    
    Authoritative answers can be found from:
    

  7. traceroute コマンド 自分のマシンから目的のマシンまでに経由するマシン(サーバなど)を表示する
    $ traceroute IPアドレス または 名前 ↵ (www.u-tokyo.ac.jpなど)
    
    pi@raspberrypi:~ $ traceroute google.co.jp
    traceroute to google.co.jp (216.58.197.163), 30 hops max, 60 byte packets
     1  * * *
     2  * * *
     3  172.20.10.1 (172.20.10.1)  4.331 ms  4.396 ms  4.502 ms
     4  * * *
     5  202.231.208.34 (202.231.208.34)  45.476 ms  50.812 ms  50.875 ms
     6  202.231.208.42 (202.231.208.42)  57.423 ms  53.577 ms  53.711 ms
    11  210.173.176.243 (210.173.176.243)  38.397 ms  34.214 ms  29.478 ms
    12  * 108.170.242.97 (108.170.242.97)  54.035 ms  47.177 ms
    13  216.239.62.29 (216.239.62.29)  47.378 ms 216.239.62.27 (216.239.62.27)  53.444 ms  53.439 ms
    14  nrt12s02-in-f163.1e100.net (216.58.197.163)  51.657 ms  30.674 ms  30.669 ms
    

5-2. Webサーバ

Webサーバ(nginx)の設定手順を以下に示します

  1. インストールコマンドを実行
    $ sudo apt install nginx ↵

  2. nginx起動
    $ sudo /etc/init.d/nginx start ↵

  3. nginx終了
    $ sudo /etc/init.d/nginx stop ↵

  4. パソコンからアクセスして「Welcome to nginx on Debian!」を表示させる
    ブラウザを開きアドレスに192.168.137.***を入力する
    ウェルカムページが表示される

    図1. nginxウエルカムページ



  5. 各自のWebページを作成する
    $ sudo nano /var/www/html/index.html ↵
  6. 
    
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>My Test Page!</title>
    </head>
    
    <body>
    <h1>My Test Page!</h1>
    <p>My Test Page!</p>
    <p>テストページです.</p>
    </body>
    </html>
    
    
    
    

足立工科大学情報通信工学科 2017年11月14日(火)