Raspberry Pi (Linux)

アップグレード保留

アップグレード完了したのは良いが・・・
このブログのPHPスクリプトの一部機能がphp7.3では動作しなかった他、やはりBusterはクリーンインストールで再構築したくなりstretchに戻すことに。

サポート終了日(LTS)の2022年6月まではstretchのままになりそう。

さて、どうなることやら(笑)

アップグレード完了

aptでBusterにアップグレード完了。

メールもWebもそのままでは動作せず、以下を追加で実施した。

・phpが7.0~7.3になり、a2enmod php7.3 の実行が必要。
・メールサーバー用SSL似非証明書の再発行
・dovcotが1:2.2.27-3+deb9u4から1:2.3.4.1-5 になり、DHパラメータの設定が必要になった。 

しかし・・・

Pi4対応で、/bootが68%まで圧迫されている・・・
/dev/root も25%が34%に・・・

アップグレード毎に肥大化するのは毎度の事だが。

ファイルシス 1K-ブロック 使用 使用可 使用% マウント位置
/dev/root 7511124 2370256 4805760 34% /
devtmpfs 469544 0 469544 0% /dev
tmpfs 474152 0 474152 0% /dev/shm
tmpfs 474152 31248 442904 7% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 474152 0 474152 0% /sys/fs/cgroup
tmpfs 474152 0 474152 0% /tmp
tmpfs 474152 8148 466004 2% /fsprotect
overlay 474152 8148 466004 2% /usr
overlay 474152 8148 466004 2% /etc
overlay 474152 8148 466004 2% /home
overlay 474152 8148 466004 2% /root
overlay 474152 8148 466004 2% /var
tmpfs 474152 3168 470984 1% /var/log
/dev/mmcblk0p1 61384 41280 20104 68% /boot
/dev/sda1 15043032 7791496 6480720 55% /mnt/data
/dev/sdb1 1921802520 114573996 1709536464 7% /mnt/media
tmpfs 94828 0 94828 0% /run/user/1000

DovecotのIMAP追加

これまで、ラズパイサーバー上のメール受信サーバー機能はDovecotのPOP3Sのみだったのだが、電源ブチ切り対策でRAM上での運用の為メインテナンスで再起動するとUIDLに矛盾が生じてしまい、毎回クライアント側でリセットする必要が有った。

それに、スマホでの受信はPOPサーバーを読みに行かない限り通知もされず、緊急性がゼロな状態だった。

AndroidのメールクライアントはK-9 Mailを使用しており、IMAPのプッシュ通知に対応しているという事で、今さらながらDovecotのIMAP機能を生かすことにした。

aptでdovecot-imapdをコマンド一つで追加し、/etc/dovecot/dovecot.conf にてプロトコルを追加するだけ。(protocols = imap pop3)
SSLの似非証明書やパスワードはPOP3Sと共用の為一切変更なしでOK。

最後に、ラズパイルーターのDNATにimaps(PORT 993)を追加して完了。

結果、凄く快適になった。

もっと早くすればよかったのだが(笑)

暇なのかな

先週辺りから第一オクテット 151. のIPアドレスから執拗に迷惑なHTTPアクセスしてくる。

151.はRIPE NCC(ヨーロッパ、中東、中央アジア)に割り付けられており、国内ではない。

ラズパイルーターでDNATのFORWARDINGにDROP追加。

-A FORWARD -s 151.0.0.0/8 -j DROP

ほんの2,3日でこんなに・・・

pkts bytes target prot opt in out source destination
1681 87620 DROP all -- any any 151.0.0.0/8 anywhere

---------------12/29追記--------------------
151.をDROPすると、楽天市場がまともに使えなくなると判明。
当初、サイト側の調子が悪いのかと思っていたが、ラズパイルーターを経由しない場合はスムーズなんで判った(笑)

早起きで暇だからラズパイルーターのパケット解析ツール(iftop)でモニターしてみたら、楽天市場にアクセスすると 151.101.230.2 から膨大なパケットを受信していることが判明。
高負荷下でもサイトの表示が遅くならないよう、Fastly社のCDNサービスを利用して配信している模様。

以下、Fastly社の日本法人サイト。
https://www.fastly.jp/

そりゃ海外だからといって下手にブロックすると弊害が出るわな(笑)

なにせ巨大なAkamaiなんかがネットを支配してる訳だから・・・

USBハードディスクの検出・マウント及びHDDモーター停止スクリプトの改良

去年の2月から使用していた「USBハードディスクの検出及びHDDモーター停止 スクリプト」を改良。

以前はfstabにディスクラベル,マウントオプション,マウントポイントを登録する必要があったが、重複項目があり無駄であるし管理も面倒なので、スクリプトの引数に条件を加えfatabへの登録を不要とした。

rc.localで以下のように実行し常駐させる。

/usr/local/bin/usbhdd_spindown.sh “ディスクラベル” “ファイルシステム” “マウントポイント” “スピンダウンまでの時間(秒)” 2>&1 | logger -t usbhdd_spindown.sh &

例: /usr/local/bin/usbhdd_spindown.sh MEDIA1 ext4 /mnt/media 900 2>&1 | logger -t usbhdd_spindown.sh &

新しいスクリプトは以下 (テキストファイル 1.4 KB)
usbhdd_spindown.sh

海外拒否

昨日のこと、megaindex クローラーのアクセスが突然襲ってきたので拒否したところ、ロシア,ウクライナ,ルーマニア,ドイツ,チリなど、どうみても踏み台経由の迷惑行為と思われるアクセスが急増してしまった・・・

そこで .htaccess に以下を追記し、海外からのアクセスをシャットアウト!

SetEnvIf User-Agent “Googlebot” allowbot
SetEnvIf User-Agent “msnbot” allowbot
SetEnvIf User-Agent “bingbot” allowbot
SetEnvIf User-Agent “Slurp” allowbot

order deny,allow
deny from all

検索エンジンからのアクセスを許可

allow from env=allowbot

LAN内からのアクセスを許可

allow from 192.168.1.0/24

以下国内IPアドレスを許可(4193行にわたる・・・)

allow from 1.0.16.0/20
allow from 1.0.64.0/18
--------
-------- 
allow from 223.252.64.0/19
allow from 223.252.112.0/20

とりあえず良い感じになった。

しかし、最近はスマホ等でのアクセスがデフォルトで海外のプロクシ経由になる様なことが多くなったので課題が残る・・・

Raspberry Pi によるWi-Fi AP付PPPoEルーター

自宅で連続稼動しているルーターの構成です。

SoftEther VPNも載せていますが、ここでは省略しています。
また、TP-Link TL-WN823N のドライバ(8192eu.ko)を GitHub 等から入手してインストールする必要があります。

ブロードバンドルーターの構築(pdfファイル 456 kバイト) の内容に基き、一部更新すると共に具体的な設定内容を記載します。

1.ハードウエア構成

・メインボード:Raspberry Pi 2 Model B
・eth1    :Anker A7611011 (RTL8153)
・wlan0   :TP-Link TL-WN823N (RTL8192EU)

*eth0(オンボードNIC)をWAN側、eth1をLAN側に割り当て。
*wlan0はhostapdによりeth1と共にbr0にブリッジ接続とし、cronにて時間帯指定で起動・停止。

*その他条件
・ルーターのホスト名は"gw"とする。
・LAN側ネットワークを192.168.1.0/24 ルーターのIPアドレスを192.168.1.254とする。
・Raspbian Buster Liteをベースとする。(実際は、Raspbian Wheezy Liteを順次アップデートした。)

2.システム設定

★ /etc/hostname

gw

★ /etc/hosts

127.0.0.1 localhost
192.168.1.254 gw.seasky.blue gw
192.168.1.1 seasky.blue

seasky.blue は本サイトのドメイン名で、本サイトのURLにもなっておりDNATにてWebサーバー(192.168.1.1)を公開している。

LAN内からはグローバルIPアドレスでWebサーバーにアクセスできない為、ここでローカルIPアドレスにて登録。

dnsmasqへのDNS問い合わせ応答は、/etc/hostsが優先されるのでLAN内からホスト名でアクセス可能となる。

★ /etc/resolv.conf

nameserver 8.8.8.8

パブリックDNS等を仮に入れておく。 ppp接続後はpppdによりプロバイダのDNSサーバーに置き換えられる。

dnsmasへのDNS問い合わせ応答は/etc/hosts /etc/resolv.confの順に参照された結果となる。

★ /etc/sysctl.conf

net.ipv4.ip_forward=1  # IPフォワードをON

★ /etc/network/interfaces

Netfilter

現状、ラズパイルーターのNetfilterは、たったこれだけ。

uptime 9days

-----FILTER-----

Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4845K 1888M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
44645 3000K ACCEPT all -- br0 * 192.168.1.0/24 192.168.1.254
302 137K ACCEPT udp -- br0 * 0.0.0.0/0 0.0.0.0/0 udp spts:67:68 dpts:67:68
17 5248 ACCEPT udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:500
5 700 ACCEPT udp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:4500
417 21184 ACCEPT tcp -- ppp0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 flags:0x17/0x02 state NEW
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
76000 6607K LOGGING all -- * * 0.0.0.0/0 0.0.0.0/0

やはり消費電力が・・・

先週届いたPi3B+を早速試したが、やはり消費電力が高過ぎ・・・

Pi2Bのルーターと同じ条件、CPU温度50℃でリミットすると起動後間もなくCPU温度が50℃に達してしまう為、CPUクロックが300MHzの下限で張り付き、パケット転送性能がPi2Bルーターの半分以下に落ちてしまう・・・

これでは常時オンラインのルーター用途では使い物にならない・・・少なくともファンレスでは無理。

現状Pi2Bで使用している電源ケーブルだと、ブート時にunder voltage warningも出ていた。

そこで、アンダークロックを試した。

arm_freq=900
arm_freq_min=300
gpu_freq=200
sdram_freq=400
temp_limit=50

この内容のアンダークロックだと、ブート時のunder voltage warningは出なくなった。
しかし、Pi3B+で期待していた上下同時通信速度の向上は得られず、ルーターとしての性能はPi2Bと全く変わらない。

この条件での消費電力は負荷が軽い時で5.2V/0.53A、スループット測定中で5.2V/0.75A程度。

同じアンダークロック条件で、Pi2Bだと負荷が軽い時で5.2V/0.3A、スループット測定中で5.2V/0.5A程度。

はやり、Pi3B+は明らかに消費電力が大きく、負荷が軽い状態でPi2Bだと1.56W、Pi3B+だと2.76Wと約1.76倍の開きがある。

結局、ラズパイルーターはこれまで通りPi2Bで行くことにした・・・

Pi3に続き、Pi3B+もお蔵入り(笑)
高い実験費用となった。

というか、Pi3B+は使用温度範囲0~50℃を明言し、電源管理も見直されて信頼性は高くなっている筈なので、もっと有効な用途を考えるべきだ(笑)