Raspbianをbuster化したら、iptablesでちょっとだけハマる

ちょっとしたお仕事用に、Paspberry Pi3 をルータ代わりに使っていたりしてるんですけど、stretch ベースのものにアップデート重ねて使い続けていたのを、最近になって buster ベースのイメージに入れ直し。
そんなこともあって、環境作り直しの一環で iptabes の設定をやり直そうとしていたら、

pi@blackbox:~ $ sudo iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -j MASQUARADE
iptables/1.8.2 Failed to initialize nft: Protocol not supported

上のような、エラーメセージが出て、設定ができない。

調べてみたところ、 Debian buster から、 iptables から nftables への置き換えがあったことが影響していたらしい…。

NOTE: iptables is being replaced by nftables starting with Debian Buster

[From iptables - Debian Wiki]

置き換えられたと言っても、iptables パッケージ自体がなくなったわけではないので、素の Debian のほうでは、特に iptables 絡みでのトラブルがなかったので気づいていなかった(sid とか stretch → buster にバージョンアップしたとかだと、 nftables パッケージが依存関係の解決のために自動的にインストールされてた)のですよ。

update-alternatives コマンド使って、旧来の iptables と nftables 対応のもののどちらにするのかを選択する事ができるので、そこで旧来の iptables を使うようにしてもいいのですが、いずれ iptables パッケージ自体が廃止されることなるのでしょうから、 nftables を有効にしつつ、 iptables コマンドで設定する、という方式で行くことにします。
ちなみに、 Raspbian buster では、以下のような設定がデフォルトのようです。

pi@blackbox:~ $ sudo update-alternatives --display iptables
iptables - 自動モード
最適なリンクのバージョンは '/usr/sbin/iptables-nft' です
リンクは現在 /usr/sbin/iptables-nft を指しています
リンク iptables は /usr/sbin/iptables です
スレーブ iptables-restore は /usr/sbin/iptables-restore です
スレーブ iptables-save は /usr/sbin/iptables-save です
/usr/sbin/iptables-legacy - 優先度 10
スレーブ iptables-restore: /usr/sbin/iptables-legacy-restore
スレーブ iptables-save: /usr/sbin/iptables-legacy-save
/usr/sbin/iptables-nft - 優先度 20
スレーブ iptables-restore: /usr/sbin/iptables-nft-restore
スレーブ iptables-save: /usr/sbin/iptables-nft-save

実際のコマンドがどうなっているのか調べてみると、 iptables コマンドを実行すると最終的には xtables-nft-multi が実行されるように設定されていました。

pi@blackbox:~ $ sudo ls -l `which iptables`
lrwxrwxrwx 1 root root 26 7月 10 09:06 /usr/sbin/iptables -> /etc/alternatives/iptables
pi@blackbox:~ $ ls -l /etc/alternatives/iptables
lrwxrwxrwx 1 root root 22 7月 10 09:06 /etc/alternatives/iptables -> /usr/sbin/iptables-nft
pi@blackbox:~ $ ls -l /usr/sbin/iptables-nft
lrwxrwxrwx 1 root root 17 3月 1 21:28 /usr/sbin/iptables-nft -> xtables-nft-multi

PIXEL for PC and Mac を HDD からブートさせてみた

PIXEL for PC and Mac を動かしてみました。
そもそもRaspbian 自体が Debian ベースなんで、x86 対応は技術的には難しことではなかったわけですから、 PIXEL for PC and Mac の登場はある意味自然な流れなのかな、という感じ。 Linux のディストリビューションの一つとしてみると、初学者向けのプログラミング学習に重点を置いたもの、という見方もできるかな、と。

同団体創設者のエベン・アプトンCEOは、PIXELを使ってもらうためにRaspberry Piを買ってもらわなくても、既に手元にあるx86マシンにインストールしてもらえばいいと思いつき、3カ月かけてx86版を開発したと語る。

[From Raspberry Piの「PIXEL」が旧型PCやMacで稼働可能に - ITmedia ニュース]

And bringing PIXEL to the PC and Mac keeps us honest. We don’t just want to create the best desktop environment for the Raspberry Pi: we want to create the best desktop environment, period. We know we’re not there yet, but by running PIXEL alongside Windows, Mac OS, and the established desktop GNU/Linux distros, we can more easily see where our weak points are, and work to fix them.

[From PIXEL for PC and Mac - Raspberry Pi]

累計出荷数が 1,000 万台越えたとはいえ、買わないと使うことの出来ない Raspberry Pi と同等なデスクトップ環境を、 PC でも気軽に試せるようになったというのは、良い話ではないかと思います。利用者が増えれば PIXEL の改良に役立つフィードバックが得られやすくなりますし、いわゆる「パソコン」としての利用を考えれば、 Raspberry Pi よりも PC プラットフォームの方がパフォーマンス的には優位性ありますしね。

ansible のお試しがてら、 Raspberry に Python MPI 環境を作ってみる

サーバを同一用途で複数台用意してある環境って、仕事関係ではフツーにある環境なわけですが、それらの設定変更となると、同じ手順を台数分だけ繰り返し。なるべく作業者のレベルに左右されないような手順を用意したとしても、稀に手順ミスってトラブルなんてことも起きちゃうわけですよ。
作業者しても、出来る限り楽したいですし、定型化可能な作業だったら、コマンド一発で対象全台に設定適用したり、必要なファイルを配布したり出来れば、余計な手順やミス発生のリスクも減らせて、万々歳。

というわけで、オープンソース界隈でも「構成管理ツール」と言われるものが、いくつか開発されているんですが、その中でも ansible が、最近はお薦めらしので、ちょっといじってみようかと思った次第。

Ansible seamlessly unites workflow orchestration with configuration management, provisioning, and application deployment in one easy-to-use and deploy platform.

[From Ansible Use Cases]

Ansible(アンシブル)は、レッドハットが開発するオープンソースの構成管理ツールである。構成管理に加え、オーケストレーションやソフトウェアデプロイメントの機能を持つ。

[From Ansible (ソフトウェア) - Wikipedia]

同じようなツールだと、 Chef や Puppet と言うものもあるようですが、

  • エージェントレスで、管理したい側へは ssh 接続出来れば良い

と、利用するまでの敷居が低い、というのもお薦めのポイントになっているようです。

とりあえず、ラズパイ Cluster (モドキ)を構成してみる準備

まずは構成

今のところ、Raspberry Pi3 は1台しかないので、それを管理対象に。それと別に管理サーバとして Debian sid を仮想マシンで準備して、ここに ansible をインストール、という非常にミニマムな構成です。

ansibleのテスト環境

図にも書いてある通り、ホントは何台も並べて、クラスタリングしたいんですけどね…。

これに関してはどっちかというと、親である自分のほうが複数台並べて Rasp Pi クラスタ組んでみたいという気持ちのほうが大きかったりしますけど、息子もプログラミング自体には興味があるようなので、作ったクラスタで一緒に遊ぶってのも出来るなぁ、とかとか。

[From 子供に PC を渡そうと思ってるんですけどね - Soukaku's HENA-CHOKO Blog]

ま、 ansible に慣れることが目的なので、このまま進めます。

Raspberry Wifi Router を試してみたんだけど

試してみる、というか、イメージさえ、ちゃんと MicroSD に書き込めれば、あっさりと使えるようになりますな〜。

This project aims to build a descent Wifi Router out of a Raspberry Pi which is easily configurable via a dynamic web interface designed in HTML/PHP.

[From Raspberry Pi - Wifi Router Project]

Paspberry Pi 3 であれば、 AP モードに対応した Wi-Fi チップが載っているようなので、 ほんとアッサリと立ち上がるのはいいんですけど、ポートフォワーディングやパケットフィルタと言った機能の実装は、これからの予定になっているようなので、本格的に使うにはまたきつい感じですね。

Raspberry WiFi RouterのWeb GUIトップ

中身は、 Raspbian / Debian なので、CUI から設定したり、足りないパッケージがあったらインストールしていけばいいわけですが、それだと「お手軽さ」はなくなっちゃいますもんね。

ネットワークゲートウェイに特化した OpenWrtRapsberry シリーズに対応しているようなので試しているんですが、こちらはまだうまく動かせてなかったりします。
#多分、またイメージ焼くの失敗しているんだと思う…。

#お出かけ用ルータには、ちょうどいいぐらいのサイズなんですけどねぇ…。

案の定、 Raspberry でハマってます

早速、ハマったんで、備忘録的に残しておきます。

ということで、ちょいちょい Raps 関連のエントリーが増えていくと思いますです、ハイ。

[From やっと Raspberry 買いましたねん - Soukaku's HENA-CHOKO Blog]

その1:起動しねぇ!

モノが届いて、喜び勇んでセットアップ始めたのはいいんだけど、一向に起動しないせず、四苦八苦。
電源周りかと思って、USB AC アダプタと 2.4A 充電対応の USB ケーブルを追加で買ってきて、とっかえひっかえ試してみたのだけど、起動しない状況には変化なし。

「初期不良かなぁ…」とも考えたのだけど、知り合いから「MicroSD への Raspbian 、書き込み失敗してるのかも」というアドバイスを貰ったので、イメージの書き込みを改めて( macOS でイメージ書き込みしていたのを Windows で)やってみたものを使ってみたら、あっさりと起動するように。orz

macOS での手順を再チェックしてみたところ、どうも書き込み先となる MicroSD を指定する時のデバイス名を誤っていたのが原因だったようです。 Mac OS 用の手順では、出力先デバイスの指定で、"/dev/disk4" となっているところを "/dev/disk4s1" のようにスライスまで指定してしまっていたのが原因だった模様。
ドキュメントはよく読んで、そのとおりにしないと駄目ですなぁ…。

そんなこんなで、まずは起動させる、というところは、クリア。

やっと Raspberry 買いましたねん

いや〜、やっと買いました〜。

ということで、まずは Raspbian で動かしてみるところからスタートなので、色々と準備しているところ。(予め、 Raspbian ダウンロードしとくんだったよ…。)
とりあえず、今回は Raspberry Pi 3 本体 1 台と、Rasp 用 AC アダプタとケースetc のセットになったものだったんですが、GPIO のところが完全に塞がってしまうケースだったのが、ちょっと誤算だったかな〜、という感じ。電子工作系のことやらなきゃ、気にならないとは思うんだけど、次回はもうチョット考えよう。
#あと、2.5A 対応のUSB ACアダプタ、結構いいお値段するんだよな〜。

ということで、ちょいちょい Rasp 関連のエントリーが増えていくと思いますです、ハイ。

Raspberry Pi で電子工作とかクラスタコンピューティングとか…

息子向けのスティック PC や Raspberry Pi の購入までは至ってませんが、情報収集だけは着々と進めていたり…。
#アレコレ考えているときが、一番楽しかったりするわけですが…。

とりあえず、自分としては電子工作的に Raspberry でやってみたいのが、電波時計の補正を行うというやつ。

そこでRaspberry Pi(ラズパイ)から時刻合わせのための電波を出して、部屋のどこでも受信できるようにしましょう。電波を出すアンテナは安価なビニール線をコイル状にするだけで作れます。

[From ラズパイで電波を送り電波時計を合わせよう:ITpro]

電波式の目覚まし時計を使ってるんですけど、建物の関係もあるのか日本標準電波(40KHz)がうまく受信出来てなくて、なんとかしたいなぁと思っていたんですよね。
回路的には非常に簡単なようですし、取っ掛かりとしては良さげな感じがするので試してみたいなと。

クラスタコンピューティングにも挑戦したいということで…

こちらは、少なくとも 3 台ぐらいは並べないと面白くなさそうなので、すぐには手を付けられそうにないけど、ググってみると色々と事例が見つかりますね〜。

これに関してはどっちかというと、親である自分のほうが複数台並べて Rasp Pi クラスタ組んでみたいという気持ちのほうが大きかったりしますけど、息子もプログラミング自体には興味があるようなので、作ったクラスタで一緒に遊ぶってのも出来るなぁ、とかとか。

[From 子供に PC を渡そうと思ってるんですけどね - Soukaku's HENA-CHOKO Blog]

気をつけいないといけないのは、「クラスタ組んだところで満足」してしまい、その後ほったらかしにしちゃうことでしょうか。w

数値計算を並列処理させる、といったことは自分も勉強しないと出来そうにないですけど、Perl や Python などには分散コンピューティングのための MPI モジュールが用意されてるし、その気になれば結構本格的に取り組めたりするようですね。あとは pound でリバースプロキシさせつつ負荷分散を試してみるとか、ちょっとしたノウハウ習得には使えるんじゃなかろうかと、期待していたり…。

子供に PC を渡そうと思ってるんですけどね

うちの長男、早いもんで今春から中学生です。

そろそろ、自分専用の PC を与えてもいいかな、ということで、いろいろ調べているわけですが、デスクトップは置き場所のことを考えると現状ではパス。だからといってノート PC もなぁ、ということで現時点での最有力候補はスティック PC だったりします。

初心者ほどハイ・スペックを、という話もないわけじゃないけど、与えられた本人も PC 使って何かをやりたいという目標があるようではないみたいだし、だったら当面は CPU パワーを必要とするような使い方もしないだろうし、CPU パワーが必要になるようなことをやりたいとなったら、そん時考えりゃいいかと…。

あとは、Raspberry Pi 渡して電子工作でも、とも思ってますが、これも興味を持つのであれば考えてもいいかなぁ、と…。
これに関してはどっちかというと、親である自分のほうが複数台並べて Rasp Pi クラスタ組んでみたいという気持ちのほうが大きかったりしますけど、息子もプログラミング自体には興味があるようなので、作ったクラスタで一緒に遊ぶってのも出来るなぁ、とかとか。