第5章ではRaspberry Piを サーバとして利用します.
サーバとはクライアントからの要求や指示に応じて動作して,要求される情報やサービスをクライアントに提供するマシン.クライアントはネットワーク上のコンピュータ(またはそのユーザ)で,サーバに対して必要な情報やサービスと要求,指示する.
すでにSSH(Secure Shell)は利用していると思いますが,SSHはサーバプログラムの1つなのでここで再掲します.SSHを用いてセキュアな(安全な,暗号化された)リモートシェルを利用できます.Linux(UNIX)ではOS本体をカーネル,周りを囲うように存在するユーザインタフェース部分をシェルと呼ぶ習慣があります.そのシェルのうち,遠隔地からも(リモートで)安全に利用できるシェルという意味で,SSH(Secure Shell)があります.
SSHサーバを設定するとこにより,ネットワーク内の(インターネット上の)マシンからターミナルソフトを利用して,RaspberryPiをコマンドで操作できます.
まず,SSHサーバを起動します.
手始めに,SSHクライアントで基本コマンドをいくつか実行してみよう
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)
pi@raspberrypi:~ $ arp -a
? (192.168.137.1) at b8:6b:23:86:d7:8a [ether] on eth0
eth0インターフェースにつながる192.168.137.1が表示された
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に固定
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設定されていることがわかる
自分に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する
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:
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
Webサーバ(nginx)の設定手順を以下に示します
図1. nginxウエルカムページ
<!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>