ラズパイに限ったことではないが、MacとLANケーブルで直接繋いだPCがインターネットに繋がりたい場合の話
まぁ、落ち着いて考えたらLANケーブルで直接、繋がってようがハブ経由で繋がっていようが関係なく、自分をゲートウェイにしたいと思ったら、Macの場合はインターネット共有
を使うってことですよね。。。
それに気づくまでの奮戦記をメモとして残しておきます。
スマホのAP作戦はうまくいった。しかし…
前回の記事でラズパイとスマホのWifi-AP経由で接続できましたが、スマホをアクセスポイントにするってことは、スマホのモバイル回線からインターネットに繋ぐ、と言うことで…モバイル回線のデータ量=電話代が増えちゃうじゃないか!そしてapt update && apt upgrade -y
するとちょいちょい固まるし…なんだか遅いし不安定なんだよね。。。
(実際、apt upgrade
してみたところ、多分モバイル回線ではとんでもないことになります。Ubuntuでの初回のapt update && apt upgrade
を思い出してください。)
と言うわけで急遽、USBのLANアダプタとLANケーブルを調達してまいりました!
LANケーブルで直で繋ぐ
まずは前回の手順でスマホAP経由でssh接続をしておきます。そして、このスマホのAP経由のSSH接続を保持したまま、LANケーブルを直で差して相手のIPアドレスを ip address show
してみました。
eth0
に 169.254.xx.xx
のようなIPアドレスが設定されていたので、別のターミナルを開いて、ssh pi@169.254.xx.xx
で接続いたしました。
もちろん、ログインできます。
すっかり、Mac経由で名前解決できるしインターネットにつながるだろうと思い込んでいた私はここでスマホのテザリングを切りました。
最初の ssh はもちろん切断しておきます。LANケーブル経由のsshで問題なくやり取りはできています。
念の為、curl http://www.google.com
とやると…
$ curl http://www.google.com
curl: (6) Could not resolve host: www.google.com
と出て、ホスト名が解決できない、とあります。。。
"ま、まぁアレだよね。急に経路が変わってびっくりしたよね?!"と、意味不明な言い訳を考えて、ラズパイを再起動いたしました。
$ sudo shutdown -r now
Connection to 169.254.xxx.xxx closed by remote host.
Connection to 169.254.xxx.xxx closed.
で…しばらく待ちます。しかしいくら経っても先ほどのIPアドレスでは繋がらないのです。(適当なアドレスだからそりゃそうだろう。)
仕方なくスマホのテザリングをオンにします。
数秒でテザリングには繋がってきます。(ホントこの反応はかなり早いです。)
再び、最初のスマホ経由のIPアドレスにて、ssh pi@192.168.1.xxx
で接続し、IPアドレスを取得します。
もちろん、先ほどとは違うアドレスとなっております。別ターミナルを開き、ssh pi@169.254.xxx.xxx
で接続いたします。
接続はできましたがさて、ここで curl
をやっても先ほどと同じです。ゲートウェイをMac側に強制的に向けるか…? う〜ん。。。
しかしMacのネットワーク設定の画面を見てふと思います。
自己割り当てIPアドレスが設定されているためインターネットに接続できません。
いや、そうなんですよね。Macにゲートウェイ向けたところでこのUSBのネットワークアダプタのネットワークは外には出れないのですよ。と言うか…あれ?なんかそういう**ブリッジ的な機能
なかったっけ?**
インターネット共有の有効化!
はい、今更のおさらいですが異なる経路でもWAN側に出れる=インターネットに繋がるようにブリッジしてくれる機能がインターネット共有
ですよね〜!
今回は以下のように設定いたしました。
ラズパイが繋がっているUSBアダプタのネットワークを、MacのWifi経由してインターネットに繋ぎます。
これで無事にラズパイからインターネットに繋がる〜!とcurl
してみようとしたら…
ターミナルから応答がない。。。
えっと、もしかして、インターネット共有入れたらIPアドレス変わった?
…
再び、スマホのテザリングをオンにします。数秒でラズパイは繋がってきます。
MacもWifiのインターネット共有をオンにしたまま、一旦、スマホのWifiに接続します。
sshで、無事にログインできたら先ほどと同様、ip address show
でIPアドレスを調べます。
めでたく、192.168.2.xxx
という新しいアドレスが割り当てられておりました。。。
別のターミナルを開き、ssh pi@192.168.2.xxx
でログインし、MacのWifiを切り替え、スマホのテザリングをオフにして、curl
してみます。
$ curl http://www.google.com
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="ja"><head><meta content="世界中のあらゆる情報を検索するためのツールを...
おホォ〜。。。やっとMacのWifi経由で外に出れたようです。。。(一気に疲れが…)
正しい手順としては?
結局のところ、どうやるのが正しい手順だったのでしょうか?以下にまとめたいと思います。
- LANケーブルでラズパイとMacを接続。まだラズパイの電源は入れちゃダメ。
- インタネット共有を有効化。
USBアダプタ
から接続してWifi
を共有する。 - スマホのテザリングをオンにする。
- ラズパイの電源を入れる
- Macの Wifi をスマホのAPにつなぐ。
- スマホのテザリングしたIPアドレスでssh接続。
-
ip address show
でeth0
のIPアドレスを調べる - 別ターミナルで
eth0
のIPアドレスに ssh で接続 - 元のスマホAP経由のsshは
exit
して切断 - Macの Wifiをインターネットにつながるネットワークにつなぎ変える
- スマホのテザリングをOFF
これでLANケーブルで繋がったラズパイが無事に外に出れます。
インターネット共有をあらかじめ仕掛けてからラズパイの電源を入れてIPアドレスが変わらないようにする、と言うのが肝心なポイントですね。
ふぅ〜!それでは早速、apt update
してみたいと思います!
今回は以上です!
(なぜ、こんなめんどくさい事をするかって?ここがスタバだからなのだよ!)