O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

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

5.060 visualizações

Publicada em

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

Publicada em: Tecnologia
  • Seja o primeiro a comentar

ロボットシステム学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

×