Raspberry Piを買いに行く

久しぶりの平日休みで秋葉原へ行ってきた。
どれ位ぶりだろ?1、2年ぶりくらい?
昔は特に用も無いのに週末行ってたけど、最近は全然だった。

秋葉原に着いたが、おっさん過ぎて疲れたので喫茶店で休む。
この日秋葉原に来た目的は、 Raspberry Pi 3 Model B+ を買うため。
前の世代のRaspberry Piは持ってるけど、それには無線LANがついていない。
Raspberry Pi 3 Model B+ には、無線LANとBLEに対応しているので今回購入を決意。
ではなんで新しいRaspberry Piを買おうと思ったかというと、これにセンサーをつけて、ズグロン(ズグロシロハラインコ)の観察・健康管理をする装置を作ろうと思ったため。
これから夏に向かってどんどん暑くなっていくし、日中外に出ているとまあいろいろ心配だよね。

茶店で買うものに大体検討をつけたら、お店へGO。
秋月電子通商 秋葉原店にやってきた。

最初にお目当ての Raspberry Pi 3 Model B+ を手に取ったけど、これ単体ではあんまり出来ないのでいろいろ周辺部品も探す。
ブレッドボードやら、ジャンパワイヤー、電子部品類など、個々に揃えるのは面倒だし、最初は何が必要かあんまりわかっていないので、キット的なものはないかとお店をブラブラ。

そしたら、ラズパイマガジン 2019年2月4月号の部品セットを発見。
https://www.amazon.co.jp/dp/4296101862/ref=cm_sw_r_tw_dp_U_x_ccj6Cb9CBWJ5H
いろんなセンサー部品、抵抗、LED、ジャンパーワイヤー、ブレッドボード一式入ってる。
これ、ええやん。
センサーは、使いたかった温度センサー、温湿度センサーが入ってる!
雑誌はKindle版があったので、あとでポチることにした。

さて、一式買ったものは下記。

f:id:Aqutam:20190716221959j:plain

金額はこんな感じ。

品目 単価 数量 合計
Raspberry Pi 3 Model B+ ¥5,600 1 ¥5,600
Raspberry Pi B+用ヒートシンクセット ¥120 1 ¥120
ラズパイマガジン 2019年2月4月号 部品セット ¥5,200 1 ¥5,200
小型クリップ付きコード 5色 45cm 10本入り ¥350 1 ¥350
TOSHIBA microSDHC EXCERIA 16GB 100MB/s ¥1,150 1 ¥1,150
バッファロー microSD→SD変換アダプター ¥267 1 ¥267
合計 ¥12,687

さて、開封

f:id:Aqutam:20190716221959j:plain f:id:Aqutam:20190716222345j:plain

そのまんま入っているのね。

f:id:Aqutam:20190716222420j:plain f:id:Aqutam:20190716222504j:plain

今日は一旦ここまで。
直近、次やることはこれかな。

  • Raspberry PiにRaspbianをインストールする。
  • 部品セットを開封し、各部品を確認する。
  • とりあえずブレッドボードにLEDをぶっ刺して、Raspberry Piから点灯させてみる。

構内LANを挟む2つネットワークをIPsec拠点間接続し、片側からインターネットへ接続するネットワークの構築

f:id:Aqutam:20190922113133p:plain

図のようにネットワークがあるとする。ネットワークAは、LinuxルータAから構内LANへ接続されている。ネットワークBは、LinuxルータBから構内LANへ接続され、ルータ[192.168.20.1]によってインターネットに接続できる。ネットワークAからインターネットへ接続したい場合、LinuxルータA→LinuxルータB→ルータ→インターネットという経路をたどる。構内LANから直接ネットワークA、ネットワークBへの接続を許可していないとする。この場合、通常のルーティングの設定をしただけでは、Linuxルータ間のパケットはそのまま転送され、構内LANから通信内容を覗く事ができてしまう。そのため、構内LANに流れるLinuxルータ間の通信内容を暗号化する必要がある。そこで、IPsecによって拠点間接続VPNを構築する。

LinuxルータAにはDHCPサーバとDNSサーバの機能を加える。DNSサーバはネットワークBのルータへフォワーディングする。デフォルトゲートウェイは、LinuxルータBのLAN側[192.168.20.2]に設定する。
LinuxルータBは、デフォルトゲートウェイをルータ [192.168.20.1]に設定する。ネットワークBではルータでDHCPサーバとDNSサーバが稼働しているので、LinuxルータBでこれらのサービスを構築する必要はない。

LinuxルータのディストリビューションCentOS 5.4。

ネットワークインターフェイスの設定

LinuxルータA

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:00:00:00:00:00
ONBOOT=yes
BROADCAST=192.168.100.255
IPADDR=192.168.100.1
NETMASK=255.255.255.0
NETWORK=192.168.100.0
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
HWADDR=00:00:00:00:00:00
ONBOOT=yes
BROADCAST=192.168.10.255
IPADDR=192.168.10.1
NETMASK=255.255.255.0
NETWORK=192.168.10.0

LinuxルータB

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:00:00:00:00:00
ONBOOT=yes
BROADCAST=192.168.100.255
IPADDR=192.168.100.2
NETMASK=255.255.255.0
NETWORK=192.168.100.0
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=static
HWADDR=00:00:00:00:00:00
ONBOOT=yes
BROADCAST=192.168.20.255
IPADDR=192.168.20.2
NETMASK=255.255.255.0
NETWORK=192.168.20.0

IPsec toolsのインストールと設定

IPsecを実装するには、IPsec接続を行う全てのLinuxルータにIPsec toolsのインストールが必要である。
IPsec toolsをインストールすることによって、setkeyとracoonがインストールされる。
setkeyは、カーネル内のIPsecセキュリティポリシーデータベース(SPD)エントリの追加、設定を行う。racoonは、IKEキー管理デーモンで、自動鍵設定によるIPsec接続を行える。
IPsecの設定はIPsec設定ファイルを編集して行い、ネットワークインターフェイス起動時に自動的に接続が行われる。

# wget http://downloads.sourceforge.net/project/ipsec-tools/snapshots/0.8-alpha20090422/ipsec-tools-0.8-alpha20090422.tar.bz2?use_mirror=jaist

※最新版はココから

# tar xjvf ipsec-tools-0.8-alpha20090422.tar.bz2
# cd ipsec-tools-0.8-alpha20090422
# ./configure
# make
# make install

LinuxルータA

# vi /etc/sysconfig/network-scripts/ifcfg-ipsec0
TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.10.1
DSTGW=192.168.20.2
SRCNET=192.168.10.0/24
DSTNET=0.0.0.0/0
SRC=192.168.100.1
DST=192.168.100.2

LinuxルータB

# vi /etc/sysconfig/network-scripts/ifcfg-ipsec1
TYPE=IPSEC
ONBOOT=yes
IKE_METHOD=PSK
SRCGW=192.168.20.2
DSTGW=192.168.10.1
SRCNET=0.0.0.0/0
DSTNET=192.168.10.0/24
SRC=192.168.100.2
DST=192.168.100.1

実ネットワークインターフェイスのように、IPsec接続用のifcfgファイルを設定する。ここでは、LinuxルータAの識別名をipsec0、LinuxルータBの識別名をipsec1と設定する。
IKE_METHOD=PSKによって事前共有鍵認証方法を使用する。SRCGWは、送信元Linuxルータの内部ネットワーク側IPアドレスを指定する。DSTGWは、宛先Linuxルータの内部ネットワーク側IPアドレスを指定する。SRCNETは、送信元ネットワークを指定する。DSTNETは、宛先ネットワークを指定する。LinuxルータAのDSTNETが0.0.0.0/0となっているのは、ネットワークAから、ネットワークBを経由して、インターネットへ接続するためである。0.0.0.0/0は全てのネットワークへという意味であり、インターネット向けの宛先IPアドレス不定であるため、このように記述する。ここでもし、LinuxルータAのDSTNETを192.168.20.0/24と書いた場合、ネットワークAからネットワークBに接続できるが、インターネットには接続できない。これは、セキュリティポリシーデータベースには、「送信元が192.168.10.0/24で、宛先が192.168.20.0/24に一致するパケット」として登録されるからである。インターネット向けパケットは宛先IPアドレスが192.168.20.0/24に一致せず不定で、セキュリティポリシーデータベースには不定IPアドレスに対するルールが存在しないため、IPsecカプセル化が適用されない。SRCは、送信元Linuxルータの外部ネットワーク側IPアドレスを指定する。DSTは、宛先LINUXルータの外部ネットワーク側IPアドレスを指定する。

事前共有鍵ファイルを設定する。IPsec接続する2つのLinuxルータでこのファイ ルの内容は同一でなければならない。また、このファイルは読み取り、書き込みができるユーザをrootだけにする必要がある。

# vi /etc/sysconfig/network-scripts/keys-ipsec* 
IKE_PSK=testIKEPreSharedKey

*:IPsec識別名

# chmod 600 /etc/sysconfig/network-scripts/keys-ipsec* 

Linuxルータのインターフェイス間をIPsecパケットが行来できるよう、IPフォワーディングをカーネルで有効にする必要がある。

# vi /etc/sysctl.conf
net.ipv4.ip_forward = 0
↓
net.ipv4.ip_forward = 1
# sysctl -p /etc/sysctl.conf

IKEフェーズ1にて、メインモードのみ使用する場合は以下を全てのLinuxルータに設定する。

# vi /etc/sysconfig/network-script/ifup-ipsec
exchange_mode aggressive, main;
↓
exchange_mode main;

ルータにネットワークAの経路を追加

ルータのルーティングテーブルに192.168.10.0のネットワークへの経路を追加する必要がある。LinuxルータBをネクストホップとして追加する。この設定をしないと、インターネットから帰ってきたネットワークA宛のパケットをルータは転送することができず、ネットワークA上のクライアントは正常な通信を行うことができない。

IPsec接続の開始

IPsec接続を開始するには、Linuxルータを再起動するか、ifupコマンドでipsecバイスを起動させるか、ネットワークをリスタートする。

ifupコマンド

# /sbin/ifup ipsec*

ネットワークリスタート

# /etc/rc.d/init.d/network restart

下記はまだ書きかけ。
iptablesの設定とかまだあるんだよな…。
あとAHとESPの有効化とか。
DNS,DHCP

参考サイト

またレーザでいろいろと…。

また実家に帰ってきたので、レーザ加工機でいろいろ遊んでみた。

f:id:Aqutam:20190922112251p:plain f:id:Aqutam:20190922112325p:plain

ミクを妹に描いてもらいました。かわいいw
あとこんなのもできるのねぇ

f:id:Aqutam:20190922112424p:plain f:id:Aqutam:20190922112449p:plain

桜の木でハンコをほってみた。

もう、ハンコ屋さんに頼まなくてもハンコ作れてしまう。。 。

あとこんなのも。

f:id:Aqutam:20190922112524p:plain f:id:Aqutam:20190922112545p:plain

レーザの出力を弱くしてシール用紙の片層だけ剥ぐということもできちゃう。

まだまだレーザの可能性はありますな。