BEIKE blog

備忘録です

LANケーブルだけでraspberry pi 3のセットアップ(ubuntu編)

概要

local network(?)でsshを行うやり方を知ったのでまとめる。(友達からオススメされた)

構成図

こんな感じ(モニターとかキャプチャーカードとかいらないです。)

https://i.gyazo.com/07b5fc0d8a52beae5d90682ef926c425.png

やり方

①事前に基本的な作業を済ましておく

SDカードにイメージを焼いておくなどです。


②インターネット共有設定を行う

以下のコマンドで設定windowを開きます。

~$ nm-connection-editor

こんなやつが出てきます。

https://i.gyazo.com/ac29b8f4d49efd32639d4d80d7f5bf3c.png

IPv4タグにある設定を以下のように変更 https://i.gyazo.com/c9e9232a7b191b7bd7a3f4d2a9dfb498.png

IPv6タグにある設定を以下のように変更 https://i.gyazo.com/486946e09f2eaae6255eaea1cb76b174.png

あとは、有線接続をONにする https://i.gyazo.com/9455247785a280553834c5a5bd3a35b5.png


③PC側にarp-scanをインストール

arp-scanは、同一Network内で使用されているIP/MACアドレスの一覧を取得するコマンド。

~$ sudo apt-get install arp-scan

arp-scanを使って検索

arp-scanを使用する前にNIC(ネットワーク・インターフェイス)を調べる必要が有ります。

https://i.gyazo.com/1ce64f81d918d5b220cfd551bb875018.png

ikebe@ikebe:~$ sudo arp-scan -l -I enp0s31f6
Interface: enp1s31f6, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
10.43.4.390 b1:22:eb:42:3d:14   Raspberry Pi Foundation

⑤検索したIPを使ってssh

検索して得られた10.43.4.390を使用します。(sudo sshではなくてsshで良い)

https://i.gyazo.com/3478d49a682fb406b184935bb638c045.png

⑥Host PC経由のネットを使って、git clone & sudo apt

raspi側でgit coloneapt以外の時にネットを使用しない場合、Host PC経由で ネット使えるようにしたいですよね。

しかし、git cloneでは、何もしないと以下のようなエラーが出てきます。

~$ server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

対策方法として以下のコマンドを実行します。 そうするとgit cloneできるようになります。

~$ export GIT_SSL_NO_VERIFY=1

また、aptでは時刻の関連の以下のようなエラーが出てきます。

E: Release file for http://ports.ubuntu.com/ubuntu-ports/dists/bionic-updates/InRelease is not valid yet (invalid for another 298d 7h 47min 4s). Updates for this repository will not be applied.
E: Release file for http://ports.ubuntu.com/ubuntu-ports/dists/bionic-backports/InRelease is not valid yet (invalid for another 298d 7h 48min 6s). Updates for this repository will not be applied.
E: Release file for http://ports.ubuntu.com/ubuntu-ports/dists/bionic-security/InRelease is not valid yet (invalid for another 298d 7h 46min 14s). Updates for this repository will not be applied.

なので、時間を日本の現在時間にそろえる必要があります。 そうすると、sudo aptの実行が可能になります。

~$ sudo timedatectl set-timezone Asia/Tokyo
~$ date -s "1/1 00:00 2021"    ←1分以内の誤差内で各自調整。

sudo apt update後、インターネット時刻を使用してしっかり時刻を設定。

まとめ

革命だ!(LANケーブル最高!)


番外編

問題発生

現在以上の操作をwlan0などの設定がされているときに行った場合、sudo apt-get updateができないなどの 問題が起こっている。DNS周りの設定に問題が生じているとみて捜査を進めている。

問題解決

以下問題だったエラー文

Err:1 http://ports.ubuntu.com/ubuntu-ports xenial InRelease
  Temporary failure resolving 'proxy-server'
Err:2 http://ports.ubuntu.com/ubuntu-ports xenial-updates InRelease
  Temporary failure resolving 'proxy-server'
Err:3 http://packages.ros.org/ros/ubuntu xenial InRelease
  Temporary failure resolving 'proxy-server'
Err:4 http://ports.ubuntu.com/ubuntu-ports xenial-backports InRelease
  Temporary failure resolving 'proxy-server'
Err:5 http://ports.ubuntu.com/ubuntu-ports xenial-security InRelease
  Temporary failure resolving 'proxy-server'
Reading package lists... Done
W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/xenial/InRelease  Temporary failure resolving 'proxy-server'
W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/xenial-updates/InRelease  Temporary failure resolving 'proxy-server'
W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/xenial-backports/InRelease  Temporary failure resolving 'proxy-server'
W: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/dists/xenial-security/InRelease  Temporary failure resolving 'proxy-server'
W: Failed to fetch http://packages.ros.org/ros/ubuntu/dists/xenial/InRelease  Temporary failure resolving 'proxy-server'
W: Some index files failed to download. They have been ignored, or old ones used instead.

https://i.gyazo.com/d62e599103d0dfcefd2d66d44e8556c3.png

図で表すと、こんな感じ

日本語怪しいかもしれませんが、、、。

別々SSIDでeth0とwlan0を使用していて、かつそれぞれに優先順位が割り振られてない状態で パケットのやり取りを行うと、どっちからもらうの?問題が発生する。(多分)

同じSSID内であれば、問題ない。(多分)


今回はエラーの中で名前解決できないとか言われていたのでDNSの何かと思い設定をいじり

またはproxy-serverが解決しないとか言われてproxyの設定をしなければならないのかと

色々やったが、ルーティングテーブルというものをいじることで解決した。(色々やったな、、、)

とりあえず、上記のエラーが出た場合の対処法を書く。(合っているかは知らない、、、。)

①proxyの設定がどこかに書かれていないかを探す(あるとproxyのことばかり考えるらしいので)

以下のコマンドで確認

~$ printenv http_proxy https_proxy

後は.bashrcに書かれていないか見る

最後にproxyの設定があるか/etc/apt/apt.confを見る(あったら削除)

~$ sudo cat /etc/apt/apt.conf

あと/etc/environmentも見る

~$ sudo cat /etc/environment

なければOK

②routeコマンドでルーティングテーブルの表示

~$ route

routeが使えない場合はnetstat -r

~$ cat /proc/net/route

で、metricの確認が可能(常に書き込みが発生しているファイルである、なので書き換えてもすぐに変わる)

③ipコマンドでルーティングテーブルの修正

以下のコマンドで、問題になってそうなやつを削除

~$ sudo ip r delete 192.168.22.0/255.255.255.0

削除したやつをいい感じに再設定しなおす

~$ sudo ip r add 192.168.22.0/255.255.255.0 metric 100 via 0.0.0.0 dev wlan0

なんかできるようになった、、、。(また戦うことになるぞ、、、、)