Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ロボットシステム学2015年第8回

5,054 views

Published on

Raspberry Piネットワークのネットワークの設定等

Published in: Technology
  • Be the first to comment

ロボットシステム学2015年第8回

  1. 1. ロボットシステム学 第8回 上田隆一
  2. 2. Raspberry Pi, 他UNIXシステムと通信 • デスクトップ用途でない場合、普通は別の PCの端末エミュレータからログインして使用 • 理由 – 複数人で使う(第5回の資料参照) – 自分のキーボードで、自分の座席で – Raspberry Piを組み込んだロボットからHDMI等の線を 出したくない • ssh接続する・よく接続に失敗する – よく分からないとストレス Oct. 7, 2015 ロボットシステム学 2
  3. 3. ロボットと通信 • 自律分散系には必須ですね – そうですよね? • 使いますよね – リモート監視・操作等 – 環境に埋め込んだセンサやアクチュエータの操作 • 必須 Oct. 7, 2015 ロボットシステム学 3
  4. 4. 本日の内容 • ネットワーク – 設定方法を一通りおさえる – 理屈はどこかでやっているはずなので、 作業手順を重視 – イーサネット・TCP/IP • IPアドレス・ポート • ソケット通信については前期やったそうなので割愛 – ssh Oct. 7, 2015 ロボットシステム学 4
  5. 5. IPアドレスの設定 • 有線(Raspberry Piの場合) – 最初からDHCPに設定されている – 通常はこのままDHCPで使う • 別の環境に行くと使えなくなる – IPアドレスはルータのウェブページ等で確認可能 – DHCPでもルータ等で固定できる Oct. 7, 2015 ロボットシステム学 5
  6. 6. 固定IPの設定 • /etc/network/interfacesに設定を書く – 上図: デフォルトの設定 (loとeh0のDHCP設定) – 下図: 固定にする例 • dhcpの設定は#で コメントアウトを • 設定後はreboot するのが素直 • したくない時は Oct. 7, 2015 ロボットシステム学 6 pi@raspberrypi ~ $ cat /etc/network/interfaces auto lo iface lo inet loopback iface eth0 inet dhcp pi@raspberrypi ~ $ cat /etc/network/interfaces auto lo iface lo inet loopback #iface eth0 inet dhcp auto eth0 iface eth0 inet static address 192.168.1.200 netmask 255.255.255.0 gateway 192.168.1.1$ sudo service networking restart
  7. 7. 無線LAN(WiFi)の設定 • 手順 – USBのWiFiアンテナを差す – lsusb(1)でドライバが動いているか確認 Oct. 7, 2015 ロボットシステム学 7 pi@raspberrypi ~ $ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070]
  8. 8. – 接続したいアクセスポイントのSSID(ESSID)とパスフレーズを wpa_passphrase(1)に指定して設定ファイル (wpa_supplicant.conf)を作る – /etc/network/interfacesに必要事項を書く • ホットプラグ • wpa_supplicant.confの場所 – 再起動(あるいはsudo ifup wlan0, sudo service networking restart) Oct. 7, 2015 ロボットシステム学 8 $ sudo -s # wpa_passphrase SSID パスフレーズ > /etc/wpa_supplicant/wpa_supplicant.conf pi@raspberrypi ~ $ sudo cat /etc/network/interfaces (略 lo, eth0の設定) auto wlan0 allow-hotplug wlan0 iface wlan0 inet dhcp wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  9. 9. ポート • ポート= port、港 • 計算機が外とつながっている「玄関」 – 玄関と言っても65536*2個ある – TCP(Transmission Control Protocol)0 番~65,535 番 – UDP(User Datagram Protocol)0 番~65,535 番 • インターネット上のサービスを利用するときは IPアドレスとプロトコル、ポート番号を指定している – IP アドレス: 住所 – ポート: 玄関 • 玄関の後ろにサービスがいる Oct. 7, 2015 ロボットシステム学 9
  10. 10. /etc/services • よく使われるポート番号を表にしたもの – 大抵のLinuxには入っている – 端末からless(1)等で読んでみましょう • (1)というのはマニュアルの章番号です • 以下でマニュアルが読める – $ man 1 less – $ man less • 英語が苦手な人はネットでman lessを検索すると 日本語のマニュアルが出てきます (Raspberry Piだとmanの日本語化はややこしいので割愛) Oct. 7, 2015 ロボットシステム学 10
  11. 11. ネットワークの調査 • ip(1) – ネットワークカードが使っているIPアドレス等の調査 – ifconfig(1)はもう使ってはいけないそうです Oct. 7, 2015 ロボットシステム学 11 pi@raspberrypi ~ $ ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether b8:27:eb:f9:c2:17 brd ff:ff:ff:ff:ff:ff inet 192.168.1.32/24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever
  12. 12. • route(1) – ルーティングテーブルの調査と設定 – 例: ルーティングテーブルの表示 – 例: デフォルトゲートウェイの設定 Oct. 7, 2015 ロボットシステム学 12 pi@raspberrypi ~ $ route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default CG-WGR1200 0.0.0.0 UG 0 0 0 eth0 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0 pi@raspberrypi ~ $ sudo route remove default gateway 192.168.1.100
  13. 13. • netstat(1) – 使っているポート等の調査 – 通信待ちをしているポートの確認 (123を/etc/servicesで調べてみましょう) Oct. 7, 2015 ロボットシステム学 13 pi@raspberrypi ~ $ netstat -t Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 152 192.168.1.32:ssh 192.168.1.24:52264 ESTABLISHED pi@raspberrypi ~ $ netstat -antu Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 168 192.168.1.32:22 192.168.1.24:52360 ESTABLISHED udp 0 0 0.0.0.0:68 0.0.0.0:* udp 0 0 192.168.1.32:123 0.0.0.0:* udp 0 0 127.0.0.1:123 0.0.0.0:* udp 0 0 0.0.0.0:123 0.0.0.0:* udp 0 0 0.0.0.0:45542 0.0.0.0:*
  14. 14. • telnet(1) – いろんなIP、いろんなポートと人力で対話 – 例: test.usptomo.comのWebサーバと対話 – ソケット通信のデバッグ等に使う Oct. 7, 2015 ロボットシステム学 14 pi@raspberrypi ~ $ telnet test.usptomo.com 80 Trying 133.242.187.106... Connected to test.usptomo.com. Escape character is '^]'. GET / HTTP1.1 <- 入力 Host: test.usptomo.com <- 入力 だーっとHTMLが表示される
  15. 15. • nmap(1) – ポートスキャナ – 例: 自機で開いているポートを探す – 注意: 人のサーバに仕掛けると最悪犯罪になります Oct. 7, 2015 ロボットシステム学 15 pi@raspberrypi ~ $ sudo nmap -sT -P0 -p 1-65535 127.0.0.1 Starting Nmap 6.00 ( http://nmap.org ) at 2015-11-12 04:29 UTC Nmap scan report for localhost (127.0.0.1) Host is up (0.0013s latency). Not shown: 65534 closed ports PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 7.83 seconds
  16. 16. • ncat(1), nc(1) – ネットワーク越しのcatコマンド(+a) – 例 1. ラズパイのeth0(192.168.1.32)の1000番ポートで データを待つ 2. 別のマシンからラズパイの1000番ポートに字を送る 3. ラズパイの端末に送った字が表示される Oct. 7, 2015 ロボットシステム学 16 pi@raspberrypi ~ $ sudo ncat -l 192.168.1.32 1000 $ echo aaaa | nc 192.168.1.32 1000 pi@raspberrypi ~ $ sudo ncat -l 192.168.1.32 1000 aaaa
  17. 17. • /dev/tcp – bashの機能 – ファイルに字を書くと字が送信される – 例 • 某Webサーバに字を投げる • サーバのログに投げた字が記録される Oct. 7, 2015 ロボットシステム学 17 pi@raspberrypi ~ $ echo aaaaa > /dev/tcp/test.usptomo.com/80 ueda@remote:~$ tail -n 1 /var/log/bashcms/access.log 106.168.148.172 - - [12/Nov/2015:13:53:39 +0900] "aaaaa" 200 5066 "-" "-"
  18. 18. 名前解決 • IPアドレスとホスト名はどう変換されているか? – DNSサーバ • ネットワーク上にあり、IPアドレスとホストを管理している (さすがに本講義では扱わない) – /etc/hosts • 静的にIPアドレスとホストを対応付けたい時はここに書く Oct. 7, 2015 ロボットシステム学 18 pi@raspberrypi ~ $ cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 127.0.1.1 raspberrypi
  19. 19. • /etc/resolv.conf – 使いたいDNSサーバを列挙しておく Oct. 7, 2015 ロボットシステム学 19 pi@raspberrypi ~ $ cat /etc/resolv.conf nameserver 192.168.1.1
  20. 20. セキュアシェル(SSH) • セキュアシェル(SSH): 遠隔の計算機と 暗号通信をするためのプロトコル – コマンドのssh(1) はセキュアシェルを使って 遠隔の計算機と通信するためのもの Oct. 7, 2015 ロボットシステム学 20
  21. 21. サーバへのssh 接続の大まかな流れ (パスワードを使う場合) 1. パスワードを送る前にサーバからクライアントへ 公開鍵というものが送られる 2. クライアントは以下をサーバに送信 – もらった公開鍵で通信用の共通鍵を暗号化したもの – パスワードを共通鍵で暗号化したもの 3. サーバは自身の秘密鍵でもらった共通鍵と パスワードを復元 4. 共通鍵で通信開始 Oct. 7, 2015 ロボットシステム学 21 鍵って何?
  22. 22. 共通鍵暗号方式 • 基本的にはパスワードの延長線上にあるもの • データを鍵で暗号化し、同じ鍵で復号 • 送信者と受信者が同じ鍵を持つ • 通信の時の問題 – 問題: どうやって鍵を交換するか? Oct. 7, 2015 ロボットシステム学 22
  23. 23. 公開鍵暗号方式 • 二つの鍵を使う – 「公開鍵」と「秘密鍵」 • 公開鍵 – 暗号化に用いる。人に見せても良い • 秘密鍵 – 複号に用いる。人に見せてはいけない • 誰でもデータを暗号化できるが、復号できるのは 秘密鍵の所有者のみ Oct. 7, 2015 ロボットシステム学 23
  24. 24. SSHの鍵認証 • パスワードの代わりに公開鍵を使う • 方法 1. クライアント側 (自分のノートPC等) で秘密鍵と公開鍵を作る 1. 自分の公開鍵をサーバ側 (Raspberry Pi等) のauthorized_keysに登録 Oct. 7, 2015 ロボットシステム学 24 $ mkdir .ssh $ chmod 700 .ssh/ $ cd .ssh/ $ ssh-keygen ###いろいろ聞かれるが基本returnで (一度はちゃんと読みましょう)### ### サーバのIPアドレスにscp### $ scp ~/.ssh/id_rsa.pub pi@192.168.1.3:~/ $ ssh pi@192.168.1.3 $ cat id_rsa.pub >> .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys

×