2019年5月13日月曜日

Raspberry Piを有線LANにつなぐ

 とりあえず、FreeBSD12をRaspberry Piにインストールした。

% uname -a
FreeBSD ほげほげ 12.0-RELEASE FreeBSD 12.0-RELEASE r341666 GENERIC  arm64

 スタンドアローンで触っていてはた、と手が止まる。pkgをいれるにしてもネット環境につながってない。オンボードのwifiが使えない以上、手も足もでない。
 かあさん、ぼくのあの、BUFFALO WLI-UC-GN2はどこへいってしまったんでしょうね……。
 昨今の10BASE-Tはクロスケーブルにしなくても接続可能なので有線でBeelink S1につなぐことはできる。
 そして、Beelink S1はwifiを経由して外の世界とつながっている。
 つまりこういう感じになるわけだけど。

 これでRaspberry Piは外の世界につながった1。そう見えるでしょう?
 そうは問屋がおろさないのが世の常で。
 普通、あいだのBeelink S1がパケットを中継してくれない。
 中継するようにするにはBeelink S1にgateway機能を持たせる必要がある。
 rc.confに

gateway_enable="YES"

 と設定。
 これでBeelink S1はRaspberry PiからきたパケットをWifiへ転送してくれるようになった。
 だからRaspberry Piは外の世界につながった。そう思うでしょう?
 そうは問屋がはおろさないのが世の常で。
 今のままだと、ルーターはBeelink S1の奥にRaspberry Piがあることを知らないので、パケットの返信がとどかない。これにたいする解決策はたぶん次のうちのいずれか。

  1. ルーティングテーブルの設定(ルーター、Beelink S1)
  2. Beelink S1をプロキシサーバにする
  3. Beelink S1をNATサーバにする
  4. Beelink S1にブリッジを設定(ルーティングの設定も必要?)

 rc.confに

firewall_enable="YES"
firewall_type="OPEN"
natd_enable="YES"
natd_interface="wlan0"
natd_flags=""

 と設定してBeelink S1をNATサーバにした2
 これでpkgが使える。

Footnotes:

1

実際、外からBeeLink S1にはいってそこからRaspberry Piにはいることはできる。

2

一日かかったけれど、これは深読みしすぎて嵌ったせいで、ここのとおりやったらあっさりできた。カーネルのリビルドは必要なかった。最近はたいがい、自動でカーネルモジュールを取り込んでくれているらしい。