2021年5月20日木曜日
GROM で公道を限界まで攻める
2021年5月2日日曜日
GW のこうさく: ユニクロのライダースパンツを作る
2021年4月25日日曜日
安全すぎるのも困りもの
GROM に装着した車両接近警報装置,歩行者や自転車の方にも,遠くからこちらの存在に気づいて道路脇に避けていただいたりと,双方にとって非常に安全性が高くなったw しかしながら,お巡りさんにも気を使っていただくと大変恐縮なので,少々安全性を下げようと思った.
数値上,高回転側でパワーが減っているが,多分自分では気づかないレベルなんじゃないかな.街乗りで常用する回転域では全く差がなし.ということで,音量を絞る設定で常用することにした.
これで下品な音量がちょっとはマシになる.あー早いことマフラーまともなのに変えたいw
2021年4月21日水曜日
JOG 3KJ スターターモーター分解清掃
足車であるところの JOG 3KJ,ボアアップして以来スターターモーターがエンジンの抵抗に負けてセルスターターが効かなくなっていた.バッテリーがヘタったのかと思い電圧を測ってみたら正常.こりゃ強化スターターモーターに交換するしかないのか? と思ったが,モーターの分解清掃をするといいらしいのでやってみた.
2021年4月2日金曜日
GROM 社外 LED ウインカー取り付け
2021年3月27日土曜日
GROM 転倒修理
2021年1月9日土曜日
OpenWRT PPTP サーバで LAN リソースにアクセス
外出先から家 LAN にアクセスできるよう,OpenWRT で PPTP サーバを立ち上げた.
手順はここに載ってる通りで,Android -> OpenWRT -> WAN という経路はあっさり繋がったけど,家の LAN にぶら下がってる機器には一切アクセスできない.こんなんみんな困ってるはずと思ってググってみたけど,困ってる書き込みはあったものの解決策の書込みがなさげ.なので拙いネットワーク知識をフル動員して自力で解決してみる.
まず Android から OpenWRT の PPTP サーバに繋ぐ前の,ルータのネットワークはこんな感じ.
WAN ---(nat)-----[OpenWRT]----- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8) (192.168.0.1) (192.168.0.0/24)
Android から OpenWRT の PPTP サーバに繋ぐと,ppp1 が現れて以下のようになる.
WAN ---(nat)-----[OpenWRT]--+-- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8) | (192.168.0.1) (192.168.0.0/24)
+-- ppp1 ----------- android
(192.168.0.31) (192.168.0.32)
この状態で Android で発生したパケットは ppp1 に投げられて WAN には出るものの,br-lan には伝わらない.
●作戦1
上の状態で br-lan のブリッジに ppp1 を含めたら行けるはずと思ったけど,ppp1 は PPTP サーバに接続・切断するたびに生成・消滅するので,OpenWRT ブート時に bridge することができない.PPTP サーバに接続・切断する度に bridge 構築する何かコマンドを実行できればいいんだけど,設定を眺める限りそういう機能もなさげ?
ということで失敗.
●作戦2
WAN ---(nat)-----[OpenWRT]--+-- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8) | (192.168.0.1) (192.168.0.0/24)
+-- ppp1 ----------- android
(192.168.1.1) (192.168.1.2)
ppp1 のサブネットを LAN と違うものにする.
LAN / ppp1 それぞれ自サブネットでない宛先パケットは一旦 OpenWRT に投げられて,OpenWRT はすべてのサブネットのルーティングを知っているはずだから,LAN <--> ppp1 のルーティングを適切に行なってくれるはず,と予想.
実際は,LAN --> android の ping は通ったが,android --> LAN の ping が通らなかった.
br-lan まではパケットが流れていそうなことは見えたが,br-lan 配下の PC まで何故かパケットが届いていない.
頑張れば行けそう感があるものの,解析が難航したので諦めた.
●作戦3
WAN --- LAN が NAT を介して接続しているように,LAN --- ppp1 を NAT を介して繋げばいいのでは,と以下のようにしてみた.
WAN ---(nat)-----[OpenWRT]--+-- br-lan --------- LAN 配下の PC 等
(10.0.0.0/8) | (192.168.0.1) (192.168.0.0/24)
+---(nat)--- ppp1 ----------- android
(192.168.1.1) (192.168.1.2)
これがビンゴ! 無事 android から LAN 機器が見えるようになった.
でこれを実現するために iptables で nat テーブルの POSTROUTING チェインに -j MASQUERADE を追加すれば良い.OpenWRT ではカスタムルールを追加するために postrouting_rule チェインが用意されているので,これに追加することにする.
OpenWRT の Network→Firewall→Custom Rules に図のようなコマンドを入力することで実現できる.
2020年12月27日日曜日
SMTPs / POPs ゲートウェイを立てる
ウチの HDD 録画機であるところの VARDIA RD-S1004K,ネット録画予約するにはメールを介してやり取りするが,古い機種なので SMTP-AUTH / SMTP over SSL / POP over SSL にことごとく対応していない.
プロバイダが提供するメールサーバはこれらが必須になったので,ローカルでメールサーバを立てようかと思ったけど,メールサーバは非常に管理がめんどくさい.
なので素の SMTP / POP を SMTP-AUTH over SSL (SMTPs) / POP over SSL (POPs) に変換するゲートウェイを立ててメール処理自体は gmail のメールサーバに丸投げすることにした.
で,* over SSL の部分は,stone で以下のようにすれば実現できる.
stone smtp.gmail.com:465/ssl 10025 -- pop.gmail.com:995/ssl 110これで少なくとも POPs に関しては,stone を実行しているマシンのポート 110 で POP アクセスできる.次に SMTP を SMTP AUTH に変換する簡単なゲートウェイプログラムを作った.→GitHub
SMTP AUTH のプロトコルはググれば色々出てくる.
これを上記 stone と同じサーバに仕掛けて以下のような経路を作ると,
port25 → [SMTP AUTH GW] → port10025 → [stone] → gmail smtp (port993)port 25 で受けた素の SMTP プロトコルを SMTPs に変換して gmail smtp サーバに転送する.試しに telnet で手動でメール投げてみた.
[yoshi@rafale ~]# telnet ag300h 25
Trying 192.168.0.254...
Connected to ag300h.
Escape character is '^]'.
220 smtp.gmail.com ESMTP y23sm35522980pfc.178 - gsmtp
* EHLO hoge.com
250-smtp.gmail.com at your service, [xx.xx.xx.xx]
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
* MAIL FROM: <yyyy@gmail.com>
250 2.1.0 OK y23sm35522980pfc.178 - gsmtp
* RCPT TO: <xxxx@gmail.com>
250 2.1.5 OK y23sm35522980pfc.178 - gsmtp
* DATA
354 Go ahead y23sm35522980pfc.178 - gsmtp
* From: yyyy@gmail.com
* To: xxxx@gmail.com
* Subject: TEST
*
* test mail
* .
250 2.0.0 OK 1609073620 y23sm35522980pfc.178 - gsmtp
* QUIT
221 2.0.0 closing connection y23sm35522980pfc.178 - gsmtp
Connection closed by foreign host.
[yoshi@rafale ~]#
2020年12月26日土曜日
OpenWRT で stone-ssl を動かす (2020年版)
で stone をクロスコンパイルしてこれで動かしてみる.
下記修正を行ったものを GitHub で公開しているので,欲しい人はどうぞ. https://github.com/yoshinrt/stone
の branch: ag300h
ハード: Buffalo WZR-HP-AG300H
OpenWRT: 19.07.5 r11257-5090152ae3 / LuCI openwrt-19.07 branch git-20.341.57626-51f55b5
stone: 2.3e
https://openwrt.org/docs/guide-developer/quickstart-build-images
export OPENWRT_DIR=~/openwrt
export PATH=$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/bin:$PATH
export STAGING_DIR=$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl
●openssl のビルドOpenWRT の toolchain でビルドされる openssh は 1.1.1i で stone の想定と合っていないので,旧 ver. をビルドして static link するのが楽.
1.0.2u なら無理なく通せそうなので,これ持ってきて configure, make.
./Configure linux-mips32 --prefix=/usr --libdir=lib \
--openssldir=/etc/ssl --cross-compile-prefix="mips-openwrt-linux-musl-" \
-I$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/usr/include \
-I$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/include/fortify \
-I$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/include \
-L$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/usr/lib \
-L$OPENWRT_DIR/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/lib \
-znow -zrelro -Wl,--gc-sections shared enable-weak-ssl-ciphers \
enable-ssl enable-ssl2 enable-ssl2-method enable-ssl3 enable-ssl3-method \
-DOPENSSL_PREFER_CHACHA_OVER_GCM -DOPENSSL_SMALL_FOOTPRINT
make
キモは SSLv2, SSLv3 あたりを有効にしないと,stone リンク時に SSLv2_server_method(), SSLv3_server_method() が無いと怒られる.TOOLDIR_AG300H = $(OPENWRT_DIR)/staging_dir/target-mips_24kc_musl
ag300h:
$(MAKE) CC="mips-openwrt-linux-musl-gcc" CFLAGS="$(CFLAGS) -D_GNU_SOURCE \
-I$(TOOLDIR_AG300H)/usr/include -L$(TOOLDIR_AG300H)/usr/lib" \
FLAGS="-O -Wall -DPTHREAD -DUNIX_DAEMON -DPRCTL $(FLAGS)" LIBS="-lpthread $(LIBS)" stone
mips-openwrt-linux-musl-strip stone
ag300h-pop:
$(MAKE) CC="mips-openwrt-linux-musl-gcc" TARGET=ag300h pop_stone
ag300h-ssl:
$(MAKE) CC="mips-openwrt-linux-musl-gcc" CFLAGS="-static -I./openssl/include -L./openssl" \
SSL_LIBS="-lssl -lcrypto" TARGET=ag300h ssl_stone
基本的に fon あたりをコピーして修正するのが楽.SSLv2, SSLv3 もちゃんと組み込まれている.
root@ag300h:~# stone -h ssl
Dec 26 17:33:25.671984 6325176 stone 2.3e http://www.gcd.org/sengoku/stone/
Dec 26 17:33:25.673056 6325176 Copyright(C)2007 by Hiroaki Sengoku
Dec 26 17:33:25.675053 6325176 using OpenSSL 1.0.2u 20 Dec 2019 http://www.openssl.org/
opt: -q ; SSL client option
-z ; SSL server option
SSL: default ; reset to default
(略)
tls1 ; just use TLSv1
ssl3 ; just use SSLv3
ssl2 ; just use SSLv2
no_tls1 ; turn off TLSv1
no_ssl3 ; turn off SSLv3
no_ssl2 ; turn off SSLv2
(略)
2020年12月18日金曜日
古い Android 端末を Linux サーバとして復活させる
ちょっとしたサーバを立ち上げる必要が出てきたので,余ってて使いみちがない GalaxyNote SC-05D で Linux 環境を構築することにした.そういうことをするための UserLAnd というアプリがあるが,SC-05D は Android 4.1 と古く UserLAnd が入らないので,それの昔のバージョンである GNURoot を入れる.
あとは sshd を立ち上げてしまえばあとはなんとでもなるが,GNURoot のメンテはもう終わってるらしく,色々環境を修正しないといけない.
(1) apt 環境修正
apt-get update が 404 になるので,/etc/apt/sources.list を修正
root@localhost:~# cat /etc/apt/sources.list
deb http://archive.debian.org/debian/ wheezy main contrib non-free
deb-src http://archive.debian.org/debian/ wheezy main contrib non-free
root@localhost:~# apt-get update
root@localhost:~# apt-get upgrade
(2) sshd インストール,環境修正
root@localhost:~# apt-get install openssh-server
root@localhost:~# passwd ← root パスワード変更
/etc/ssh/sshd_config の以下を修正
Port 10022
UsePrivilegeSeparation no
PermitRootLogin yes
root@localhost:~# service ssh restart ← sshd 起動
で PC から WinSCP を使って GNote にファイル転送したところ,大きいファイルが GNURoot 環境で読めない & 消せないファイルが出来上がって困ったが,WinSCP の設定を図のとおりにすることで改善した.ちょっと使ってみたところ限りなく普通の Linux に近い.なんと言っても apt でビルド済みのパッケージがインストールできるので,非常に使い勝手が良い.
余ってる Android 端末の活用方法としてはありなんじゃないだろうか.



























