2016年7月29日金曜日

QWERTY キーボードの楽器の入力デバイスとしての有用性って

DTMの始め方とか探ってみたり。 お金をかけるのは極力なしの方向で。

DTMを始めるとき、まずシーケンサーやらDAWやらシンセサイザーやらVSTとかMIDIやらシンセ用語がよくわからないってのがひとつのハードルになってると思うのですが、ぼんやり3割くらい理解できるようになってきた。 

最低限必要なのは

  • vst host
  • 音源(VST Instrumentというやつ)


で、まあこれだけで音を作って鳴らすことができる。 ただ、コンピューターが楽器と呼べるレベルになるかというとそうでもなくて、qwertyキーボードで音を鳴らすのは結構キツいものがある。

これを楽器を扱う感覚で鳴らすにはMIDI鍵盤などを追加する必要がある。

が、ここでMIDI鍵盤を追加するのはちょっと本末転倒なんじゃないかと思ったり。

どういうことかというとPCの中に音楽制作環境を作ろうとしているのに外部パーツを安易に増やしていいんだろうかってことで。

果たしてjp106QWERTYキーボードを楽器レベルに昇華することはできないのか。

確かに普通の鍵盤と比べるとキーボードは横幅もないし、ハード的にベロシティの入力ができないなど不利な面もあるのだけど、考えようによっては、面白い特徴もある。

まずキーの数は結構多い。アルファベットだけで26キーあるし数字やファンクションキーテンキーを合わせると50は軽くある。奥行きがあるぶん、直線に並べた時より、直感的ではないが、うまく使えば演奏時の手の移動距離は小さくできそうだし、より多くのキーを押さえることも可能かもしれない。

そして、鍵盤と違ってカスタマイズが容易という利点もある。

で、QWERTYキーボードを純粋に楽器の入力装置として使えないか、調べてみると、freepianoというソフトを見つけた。
VirtualMIDIケーブルを使えば、MIDIデバイスであるかのように使用することもできる。MIDI Yokeというソフトを使う。また、freepiano はVSTi を直接インポートできたりするので、VSTHostが無くてもちょっと音源単体を鳴らしてみたい時にもつかえてなんかいい。音質はよくわからない。

このソフトを使えば入力は可能になったが、♯や♭を鳴らす時に難があって、キーマップをいじる必要があるみたい。だが、カスタマイズはフルスクリプトではないもののある程度の事はできそうだった。Key UP Downによって定義済みの変数を変更したり 複数の NOTE ON を送ったりはできるようだ。

おもしろそうだ。キーボードを擬似鍵盤として定義するとやっぱり劣化鍵盤としての位置にならざるを得ないけど、全く新しい入力装置としてゼロから再定義するならばどういう形になるだろうかと考えたり。 例えばドは必ずしもレの左側に配置する必要もないのではないかってこと。せっかくキーボードには奥行きがあるのだからそれを活かすインプットメソッドを模索できる余地がありそうかなあと思いながら、楽器も弾けない癖にポップコーンをはじいてみたり、和音を押してみたりしてみたり。

すると、なんか致命的な欠点を発見した。自分のQWERTYキーボードには同時に押せないキーがある。logicool の K360というやつだがKとWとRを同時に押したとき、どうやってもそのうち二つまでしか認識しなかった。ハード的にそういうモノらしい。

やっぱりQWERTYキーボード奏者になる事は叶わなかった。ま、モノシンセだったら問題ないっちゃないけど。

ただ、希望が無いわけでも無い。
確かにQWERTYキーボードはキーを押せない。しかしゲーミングキーボードはどうだろう?
ゲーミングキーボードは同時押しの制限があまりないようだ。だとすればこれを買えばもう少し遊べたかもネ。

でもそうなってくると、グダグダやってないであきらめてMIDI鍵盤買えよってハナシになるので微妙なところなんですけど、知りたいだけで、楽器やDTM使いになりたいってわけでもないし、みんながやったことが無い事をやるという意味ではゲーミングキーボードを買うのもありかも。

2016年7月21日木曜日

Strongswanはどうなったか

なんかわからんがIKEv2 公開鍵認証方式でAUTH_FAILが返ってくる。

きいては見たが、rightid の設定らしい。

証明書には alternertive dn だかを設定する方法があるらしく
それとIPなりホストが合う場合はすんなりいくようだが、
それが無い場合 Full Subject Name?
を指定してやる必要があるようだということだった。
しかし、ちゃんとSubject name を指定たつもりでも結果は同じだった。
というかちゃんとできてないのかもしれない。しかしそれを確認するパワーが尽きた。

頭の隅にrightid はIPなりホストなりがAlternertive DNに合わない場合は
Public Key 認証方式は面倒くさくなるという事をとどめておいて
また、仕事などでやる機会があればじっくり腰を据えて取り組もうとは思う。
マスタリングTCP/IP IPSec 編がちょっとほしくなった。

まあ、個人使用の場合 OpenVPNで十分だし設定も簡単なので、こっちがうまくいったら
あまりIPSec/L2TPにこだわる必要は無いのかなと思う。

飲み会でAndroid機でWindows10が動くデモを自慢するのに裏でOpenVPNが動いてようが、
IPSec/L2TPが動いてようが、効果に変わりはないと思うのね。

StrongSwan でなければならない状況というのは
ネットワークの関係でOpenVPNが使えないとかClientソフトがインストールできないという場合等があるかな。

中国内からグレートファイウォール越えのときとかOpenVPNだけ封じられる危険性もないわけではないし。やっぱりStrongSwanの重要さは高いのだろうけど、ふつうの日本のふつうのケーブルテレビネットワークにつないでいる人間にはどちらかひとつ使えるようにしてしまえば、そこまでの情熱は沸かないというのが本音だなあ。

vpngate のページを見ても IPSec なサーバ数は多くないようだった。

2016年7月15日金曜日

Vpnの方は動くようになった

openvpn はまあまあ快調である。
ただ wake on lan はやっぱり効かない。lanには接続できているブロードキャストが届かない。
スイッチングハブかコンバーターかvirtualbox ブリッジのどれかの時点で学習してブロードキャストをブロードキャストせず知らんという奴がいてそう。
ノートPCのポートに到着してなさそう。
スイッチングハブはそもそもipアドレス面倒みないのでarpを削除してしまえば、こいつが犯人では無いと思う。
bridgeも然り。またrpi に送ってもらっても届かないので経路地図的に可能性は低い。プラネックスが怪しい。コンバーターも本来いらんことをしないがプラネックスのmf300nは信用ならない。なんかこいつがいらんことしてそう。でも確証はない。しかしこいつには前科がある。

Wake On LANが効かない事があるのは、スタンバイに入ってしまうとWake On LAN が効かなくなるのが原因だった。自分でも意識しないうちにスタンバイに入ってしまうパスがあったらしい。

ハード的にはスタンバイでもWake On LANにする方法はありそうな気もするのだけど、そこまでわからんので、スタンバイや省電力モードの設定をことごとく見直し、電源オフ、ログアウト、再起動以外を選択できないように調整した。

結果、Wake On LANが効かなくなる状況は発生しなくなった。

OpenVPNはすこぶる快調。

リモートデスクトップの方は回線の質によってパフォーマンスにだいぶ差が出る印象。

クライアントのCPUはちょっと前のATOM程度の能力があれば実用に耐えそう。

同じ有線LANネットワークでは音飛びが主な不具合だが、
無線LANになると、JPEGのようなもや付きが少し気になるようになり、
インターネット回線1Mbps くらいになってしまうと間引かれたコマのせいでだいぶカクカクする。
艦これでいうと、何回かの攻撃エフェクトがとんでいつの間にか大破してるくらいの感じ。
それでも艦これはネイティブ版よりリモートデスクトップの方が早い気もしないでもない。
オフィス関係であれば、ここまでしんどくないだろう。

通信量はかなり大きく、やっては見たが、通信量の壁をサクッと超えてしまう勢いなので、
Wifi フリースポットの無いところでは飲み会での小ネタで見せびらかす以外に使い道はなさそうな感じ。dock操作だけでたぶんパンクする。

OpenVPNも試してみる

ちょっと煮詰まったので、strongswan の方は人に訊くことにして
OpenVPNで遊ぶ。OpenVPNの方はOpenWRTでやる場合は特に簡単。
OpenWRTのHOWTOの完成度が高く、ほぼコピペでいける。

無事 Android から通信の秘密を守りながら軍事機密の多い提督業を遂行できたが、
外から接続したときは提督業は遂行できなかった。

正確に言うと外から外へはアクセスできる。外から中はできない。

中国に機密情報を漏らしながら、提督業などとあり得ないハナシだ。
チャイナの赤盾回避には使えそう。

だが、あえて敵の懐に潜り込んだまま、機密通信で指令を出したい時もあるではないか。
時には外からもLANにアクセスしたいのである。

それはOpenVPNがRouterモードで起動していてやっぱり自己の名乗るIPは外のままだから弾かれているようだ。これを回避するには2通りあるかなと思った。一個はブリッジモードでOpenVPNを使うかもう一つはOpenVPNで作ったトンネルデバイス毎にNATを設定してやる事かな。

~~~~

(7/21 追記)
これはpush route add 198.168.1.1/24
みたいなのを設定ファイルに書く事で実現できるので↓の思考は無駄であった。
push route add openwrt で検索。

~~~

Googleで調べたら、こんなのが出てきた。

OpenVPNクライアントをゲートウェイとして、LAN内の別クライアントがVPN先のマシンにアクセスする

こいつは素晴らしい。
でもdefaultに設定されてないトンネルデバイスはNATの対象にならないため、サーバ側と逆のハナシになるみたいでちょっと違うな。

デフォルトゲートウェイはあってるが、割り当てたtunインターフェイスについてNATしてほしい。

2016年7月14日木曜日

Windows 10 でWifiが起動直後だけつながらない場合の対処法

Windows 10 が起動直後だけネットにつながらないマシンがあった。

ルータのOpenWRTとバッファローのWHR-300HPの組み合わせはド安定しているからルータの責任ではない。
1日2回再起動していたのがウソのようで何週間もほったらかしで再起動の必要もない状態。

ちなみに電源OFFのあとの起動は繋がらないが、リブート直後はつながる。

VISTAではちゃんと動いていたので、たぶん高速起動が原因っぽい。

高速起動OFFにして様子見。

今のところ問題無さそう。

たぶん治るだろう。

ところでバッファローのルーターは完璧ではないけどなかなか好きだな。
また買うかもしれない。遊べるルーターなので。

安定度でいうと?なのだけど、使えないほどではないし、使用者も多いので前評判を得やすい。さらにOpenWRT等のフリーのファームが対応している確率が高く、完全に使えないゴミクズにはなりにくい。elecom とは違うのである。

フリーのファームウェアOpenWRTはうまく動けばかなり安定性が高い。

300HPの方は標準ファームウェアではルータとしての機能、安定性では一流メーカーには及ばないだろうが値段が倍以上するのであまり比べてあげるのはかわいそう。

腐ってもアクセスポイントとしての安定度は素晴らしいので有線ルータで安定性の高いものと組み合わせればそれなりに使えて、ダメージ無いのがいい。

2016年7月13日水曜日

CA Cert はふつうの認証ファイルではないとかぐだぐだぐだ

L2TP/IPSecを諦めて Public key によるサイト認証の設定してる。
L2TP諦めたけど、なんだか、もうちょっと頑張るべきだったか。

サーバ側のログの見方が少しわかってきたので、もう少し頑張るネタあったかもと思ったり。

ipsec.conf の

config setup セクションに

charondebug="ike 2, knl 2, cfg 2, net 2"

を書き込んだ後で、ipsec restart をする。

↑に書いてある。他にも出力を制限したり増やしたりできるオプションはある。

出力に設定したログは
openwrt では cat や tail -f で見る感じではない。
ふつう/var/log/messageとかかと思ってたけどそんなファイルない。

logread というコマンドを打てば読める仕組み。

ストレージが小さいからそうしたのかも。

さて、サーバー認証をやっているが、なかなかこれもうまくいかない。

仕組みが難しい。

openssl を勉強する。

http://d.hatena.ne.jp/ozuma/20130511/1368284304
等をみてカギ、認証要求、証明書等用語の意味と作り方はだいたいわかってきたのだけど、
ただ、CA 認証ファイルはふつうの認証ファイルとして作成してはいけないようなので完全に正確ではないようだ。

ソフトによってはbasic constraints に引っかかって無視される。
strongswan もbasic constraints に従わない証明書は受け付けないみたい。

なので

strongswan でも通るCA証明書を作るには別の方法が要りそうだ。
http://int128.hatenablog.com/entry/20090117/1232124815
これかなあ。

ざっと見た感じ、CA.sh で作って見てそれでもおかしくなるのであれば、別の方法考える。

ちなみに cygwin 32bit の openssl の場合、CA.sh がどこだか分らなかったので、
find . | grep CA.sh
してみたところ
/usr/ssl/misc以下みたいで

openssl 関係のファイルは
/usr/ssl以下を探ればいいということらしい。

あと、32bitのPCで使ってる方のVirtualBoxがどうしてもVMにUSBデバイスを割り当てできない。
64bit の Intel CPUのほうは全く問題なくデバイスの割り当てができるが、
AMD のC60のほうではまるでダメ。
たぶんVirtualboxが動く最低スペックなので文句が言える立場でもない気がする。

で、Cygwinで出力した認証ファイルをopenwrtに持ち込むのに難儀した。

wget でやり取りするとか
もっとトリッキーにiso ファイルでやり取りするとか。

iso でやり取りする場合は

cygwinにmkisofs をインストールして

mkisofs -r -o cert.iso ./path_to_cer_folder
したのち cert.iso ファイルを GuestAdditions.iso みたいな感覚でマウントしてあげればよい。
-r オプションが無いとファイル名が短くなって使いづらい。

openwrt には fstab が無いのでマウント時は全部オプション指定しないと文句言われる。

mount /dev/sr0 /mnt -t iso9660

cd /mnt

このあたりのコマンドは最近のLinuxは打つ必要がないので久しぶりな感じ。

raspberrypi に nfs とか入れてみたいけどなー。

認証局の管理ツール。

http://www.openvpn.jp/vpnux-pki/

これ良さそうだ。

2016年7月12日火曜日

L2TP/IPSecなサーバを立てたい(迷走メモ) Vol.4

作業記録。めちゃくちゃな走り書き。VOL4

★★★ Step 10 L2TP は諦める ★★★

13:11:41.633586 IP 192.168.1.156.56747 > 192.168.1.32.1701:  l2tp:[TLS](0/0)Ns=0,Nr=0 
*MSGTYPE(SCCRQ) *PROTO_VER(1.0) *HOST_NAME(anonymous) *FRAMING_CAP(AS) *ASSND_TUN_ID(31946) 
*RECV_WIN_SIZE(1)
13:11:41.633688 IP 192.168.1.32 > 192.168.1.156: 
ICMP 192.168.1.32 udp port 1701 unreachable, length 105
13:11:41.634490 IP 192.168.1.156.56747 > 192.168.1.32.1701:  l2tp:[TLS](0/0)Ns=1,Nr=0 
*MSGTYPE(StopCCN) *ASSND_TUN_ID(31946) *RESULT_CODE(6)
13:11:41.634542 IP 192.168.1.32 > 192.168.1.156: ICMP 192.168.1.32 udp port 1701 unreachable, length 72

どんなに設定を見直しても OpenWRT 側 Firewall で1701のポートが閉じているなどという事は無いように思う。port unreachable で見直すのはたぶんfirewall だけではないのではないか?もしfirewall を適切に設定していたとしても、port unreachable が発生するパスがあるような気がするのだけど、全く確証もない。なんにせよ、Android から要求があった時点でポート1701の準備ができてないのは間違いないようで、それ以上何もヒントがなくなってしまった。

Android の期待するシーケンスと、strongswan の期待するシーケンスが違うのではないかって気がするのだが、確証はない。
設定によって避けれるのかどうかもよくわからなかった。strongswan と違ってandroid の方は特にエラーメッセージも吐かないし。

L2TP/IPSec はもうちょっとデファクトスタンダードな、これを選べば間違いないものが決まってきたらいいんだろうけど、そういうのが無い。IKE のバージョンやら plute charon やら NAT Traversalやら認証方式も暗号化や、使えるソフトも多すぎてよくわからない。

みんなが使うであろう一番簡単なオプションを選択しているつもりでもわずかに違うものを選択するだけで動かなくなる可能性がある。バージョンアップなどで動かなくなるリスクもかなり高い。メールサーバ以上に設定が疲れる。
とりあえずL2TPを使う事はいったん忘れることにする。

いつかまたやるかも。

L2TP/IPSecなサーバを立てたい(迷走メモ) Vol.3

作業記録。めちゃくちゃな走り書き。VOL3

★★★ Step.9 fresh install again 5回目★★★

設定がごちゃついてきたのでまたVirtualBox に OpenWRTインストール。

5回目。寝ていてもできそうだ。

IPSec の設定が難しいというのはやっぱりステップバイステップで動作確認しながら設定するのが難しいからだと思う。もし、仮想PCのソフトが無い時代だったらほんとに吐きそうになっただろうな。

ハードディスクの初期化だけじゃなくて配線とかもしないといけないわけだし。

今日はAndroid との接続を試してみているがどうにもつながらない。

今日のダメ記録
13:11:41.633586 IP 192.168.1.156.56747 > 192.168.1.32.1701:  l2tp:[TLS](0/0)Ns=0,Nr=0 
*MSGTYPE(SCCRQ) *PROTO_VER(1.0) *HOST_NAME(anonymous) *FRAMING_CAP(AS) *ASSND_TUN_ID(31946) 
*RECV_WIN_SIZE(1)
13:11:41.633688 IP 192.168.1.32 > 192.168.1.156: 
ICMP 192.168.1.32 udp port 1701 unreachable, length 105
13:11:41.634490 IP 192.168.1.156.56747 > 192.168.1.32.1701:  l2tp:[TLS](0/0)Ns=1,Nr=0 
*MSGTYPE(StopCCN) *ASSND_TUN_ID(31946) *RESULT_CODE(6)
13:11:41.634542 IP 192.168.1.32 > 192.168.1.156: ICMP 192.168.1.32 udp port 1701 unreachable, length 72

156の方がアンドロイドマシン で.32の方がxl2tpd + strongswan の方
android が繋ごうぜって言ってる気がするのだが
サーバの方が、さっきのパケットは届かなかったみたいな返答してじゃあやめる
ってなってる気がするんだよね。

ただ、ファイヤーウォールとか1701INPUT ACCEPT 設定にしてるんだけどなんで弾くのか。
即答で着かないってくそー。オレのPCヤギが棲んでるな。

L2TP/IPSecなサーバを立てたい(迷走メモ) Vol.2

作業記録。めちゃくちゃな走り書き。VOL2

★★★ Step.6 StrongSwan以外に必要そうなヤツいれる ★★★

vpn.ipsec.basics 

strongswan のインストール時がちょっと変だったが
vpn.ipsec.basics にも strongswan ではなく strongswan-defaultと書かれているので
strongswan-defaultのインストールが成功し、
strongswan パッケージのインストールが失敗したけどまあいいか。

(後記:strongswan パッケージは無視して、strongswan-full をインストールすべし、strongswanパッケージは-fullを入れれば勝手に入る。入れないとコンフィギャ失敗する)

StrongSwan以外にip、iptables-mod-nat-extra、djbdns-toolsが要るようだ
 
opkg update
...(略
opkg list ip
opkg install ip


opkg list iptables-mod-nat-extra
opkg install iptables-mod-nat-extra


opkg list djbdns-tools

むむむむ、んなファイル無い。
djbdns-tools は何故必要とされていたんだろうか?

現状このパッケージは無視の方向。

diff を使いたいので

opkg install diffutils

★★★ Step.7 OpenWRTなマシンをもう一つ作る ★★★

ここまで来て気づいたが、IPSecを試験するには単体では無理だ。
VMをクローンする

Oracle VM Virtualbox マネージャ

仮想マシンを選択して クローン(O)
全てのネットワークカードのMACアドレスを再初期化(R)にチェック

シリアルポートの パス/アドレスを変更
\\.\pipe\vbox2

クローン先のネットワークアダプター2はクローン元のアダプター2と独立している必要がある。
Oracle VM Virtualbox マネージャ
ファイル(F)⇒環境設定(P)⇒ネットワーク⇒ホストオンリーネットワーク(H)→+追加
アダプター(A) IPv4 アドレス 192.168.178.2 ネットマスク 255.255.255.0

クローンを起動
/etc/conf/network

config interface 'lan'
        option ifname 'eth1'
#       option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.178.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

ここで構成図を書き直した方がいいんだろうな。
HostOnly1[192.168.254.2]<->[192.168.254.1]OpenWRT1[192.168.1.202]<->[192.168.1.116]OpenWRT2[192.168.178.1]<->[192.168.178.2]HostOnly2

で、ホストからはHostOnly
以外に192.168.1/24にもアクセスできる状態。
この状態でOpenWRT1をネットワーク192.168.254.0/24 へのゲートウェイトしてOpenWRT2からIPSec を試みる。




★★★ Step.8 最低限のIPSec connection★★★

ドキュメントを読んでいるとなんかIPSec = VPN という気がしない。
VPNを達成するのにIPSec を使っているだけであって本来は
Ethernet 接続を セキュアにする目的。
そこが設定が難しいと言われる根源なのではないかという気がしてきた。

ikev1 PSK IPv4

の例を参考にする。
OpenWRT1が moon 的位置づけ
OpenWRT2が carol という事になるんだろうなあ。

まずファイヤーウォールをどげんかせんといかん。
まず、INPUT,FORWARD,OUTPUT DROP,REJECT,ACCEPTの意味もよくわかっとらんので
Linuxで作るファイアウォール[パケットフィルタリング設定編] (1/2)
を読んでみる
おそらくここの設定がOpenWRT の FireWall 設定General Setting のところになるだろうか。
OpenWRT1のWAN->LANは自らサービスを提供するから INPUTはACCEPTにしなければならないだろう。
OUTPUTもACCEPTでいいだろう。FORWARDもACCEPTでいいか。
NAT が要るか要らないか。
現段階では192.168.1.0/24のネットワークだけのハナシで要るようなきがしない。
HostOnlyNetworkにつなぐようになる場合も
適切にStatic Routeを設定さえすれば、いいのではって気がする。
今はとりあえずOFFにしておく。

OpenWRT1は ipsec を誰かに任せるわけではないので今のところPortForwardも設定不要か。

OpenWRT2の方は実際に指定するIPが違うだけでパターンは同じで良さそうだな。

現段階ではかなりのノーガードになってしまうが、こいつがすぐにFirewallになる事もないしDMZに配置されることもないから、遊んでる現状ではこれでいいだろう。
不要なポートの戸締りは実用化段階で検討。

OpenWRT1
/etc/ipsec.conf
config setup
        # strictcrlpolicy=yes
        # uniqueids = no
conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        keyexchange=ikev1
        authby=secret

conn openwrt2
        also=rw
        right=192.168.1.116
        auto=add

/etc/ipsec.secrets
# /etc/ipsec.secrets - strongSwan IPsec secrets file

192.168.1.202 192.168.1.116 : PSK 0sFpZAZqEN6Ti9sqt4ZP5EWcqx

OpenWRT2
/etc/ipsec.conf
# ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
        # strictcrlpolicy=yes
        # uniqueids = no
conn %default
        ikelifetime=60m
        keylife=20m
        rekeymargin=3m
        keyingtries=1
        keyexchange=ikev1
        authby=secret

conn home
        left=192.168.1.116
        leftfirewall=yes
        right=192.168.1.202
        rightsubnet=192.168.254.0/24
        auto=add

/etc/ipsec.secrets
# /etc/ipsec.secrets - strongSwan IPsec secrets file

192.168.1.116 : PSK 0sFpZAZqEN6Ti9sqt4ZP5EWcqx


以降 OpenWRT2から実行

ipsec restart

ipsec up home


なんかつながってはいるようだ。
ただ、暗号化されているかパケットが見えない。
oot@OpenWrt:/etc# ipsec status
no files found matching '/etc/strongswan.d/*.conf'
Security Associations (1 up, 0 connecting):
        home[1]: ESTABLISHED 11 minutes ago, 192.168.1.116[192.168.1.116]...192.168.1.202[192.168.1.202]
        home{1}:  INSTALLED, TUNNEL, reqid 1, ESP SPIs: c326ca0a_i c3dc83fc_o
        home{1}:   192.168.1.116/32 === 192.168.254.0/24
root@OpenWrt:/etc# ping 192.168.254.2
PING 192.168.254.2 (192.168.254.2): 56 data bytes
^C
--- 192.168.254.2 ping statistics ---
15 packets transmitted, 0 packets received, 100% packet loss

うーんPINGが通らない。192.168.254.1へは通るようになったが…。

問題切り分けのためにOpenWRT1からtraceroute をすると traceroute 192.168.254.2 が通らない。
traceroute を試してみたがbusybox の traceroute は -I オプションでもICMPを送らないような設定にできるらしく、OpenWRTのbusybox もビルドオプション見てない
CONFIG_FEATURE_TRACEROUTE_USE_ICMP was set to n っぽい。
busybox は Trace route は UDP ガチガチでICMPと結果は違うものになる。

WindowsファイヤーウォールをOFFにしたら traceroute が通るようになったかも。
まさかと思ったがWindows firewall 仕事してるんだ…。

でもやっぱりOpenwrt2 192.168.1.116から192.168.254.2へはPINGもtracerouteも通らない。

Secure connection は張れてるっぽい。でも接続先のGatewayがFirewallになってしまっている状態。

route の設定をちゃんとしても、ポートの設定をどうやって設定してもそっから先に
Pingが飛ばなかった。

うーんとにかくやたらめったにコマンドを打って様子を観察した。

wiresharkをやろうと思ったが、流石にハードルが高いのでtcpdump で観察したり。

原因の一つはルートをちゃんと設定できてなかったこと。
クライアント側はデフォルトルートをIPSEC接続先に変更するくらいの事をして観察すれば、一応は、IPSec 接続先までは暗号化されており、その先へのパケットも飛んでいることがわかる。
だが、問題は接続先の接続先のLANはICMP echo response を返さない事。

何故ならば接続クライアントはPINGパケットを相変わらず自分のIPを設定して送るようだ。GatewayはちゃんとヨソのLANに投げ直してくれているのだけど、応答する側が無視している。
ubuntu 等を見ていると、インターフェイスと同じネットワーク上の端末からのICMP echo request
にはICMP echo responseを返しているようだが、得体の知れないecho request に対しては全くのだんまりであることがわかった。

そういう事であれば
ikev1 PSK IPv4
の設定というのはそのままではなかなかPINGが通らない。という事になるかもしれない。
返事をしてもらうにはNATが要るのだ。
WANからのパケットのIPをLANのIPに書き換え
WANへのパケットのIPを書き戻す設定が必要なのだ。

NATは無くてもパケットは送れる。でも誰も応答してくれない。

ふつうのブロードバンドルータのNATとは逆の考え方になる。
ふつうは中から外なのが、外から中になるわけだから。

でもやっぱりもっといい方法があるハズだ。根本的な問題は、Roadwarrior が内部LANのメンバーになりきれていないという事で、ヨソモノのIPを使っており総スカンを食らっているのが原因だ。

VirtualIPにせよxl2tpd にせよ ローカルネットワーク用のアドレスを割り当ててもらう機能があるハズだから、とりあえず strongswan の根本的な機能を学習できたし、次に進もうかと思う。

2016年7月10日日曜日

L2TP/IPSecなサーバを立てたい(迷走メモ) Vol.1

作業記録。めちゃくちゃな走り書き。

★★★ Step.1 OpenWRTのディスクイメージから仮想ディスクを作る ★★★

まずはじめにOpenWRTのディスクイメージをVirtualbox仮想ディスクに変換

C:\Program Files\Oracle\VirtualBox>VBoxManage.exe convertfromraw 
   c:\vm\openwrt-15.05.1-x86-generic-combined-ext4.img c:\vm\ow15051.vdi --format VDI
Converting from raw image file="c:\vm\openwrt-15.05.1-x86-generic-combined-ext4.img" 
to file="c:\vm\ow15051.vdi"...
Creating dynamic image with size 55050240 bytes (53MB)...

と。

★★★ Step.2 作った仮想ディスクでVMを作る ★★★

VirtualBoxマネージャ起動⇒新規⇒


次へ(N)⇒メモリーサイズ 256MB⇒ハードディスク すでにある仮想ハードディスクを使用する(U)
⇒一番最初に作成したVDIを使う。ow15051.vdi

~~↑VM作成終わり↑~~

★★★ Step.3 VMをカスタマイズする(シリアルポート編、スキップ可) ★★★

シリアルポート設定。(SSHが死んでもコンソールがバグったりKernelメッセージで洪水になってもシリアルポートが生きていれば安心。安定してきたら、ヘッドレス化も容易になる。
TeraTermで繋ぐことができるのでTextのコピペも簡単で、作業記録を残しやすい設定。
不要ならスキップ。
OpenWRT15.05.1(VPN_TEST_0)を選択⇒設定(S)⇒シリアルポート⇒ポート1
シリアルポートを有効化にチェック。
ポートモードを ホストにパイプに、
存在するパイプ/ソケットに接続(C)のチェックを外す。
パス/アドレスに \\.\pipe\vbox
を入力(Teraterm で TELNETでホストに\\.\pipe\vbox 指定すれば接続できる)
~~↑シリアルポート設定終わり↑~~

★★★ Step.4 VMをカスタマイズする(ネットワーク編) ★★★

ネットワーク設定
アダプタ1 ブリッジアダプター LANカード名を選択。
(ふと思ったがここでホストにwifi dongleしかないとちょっとここの部分は作業記録として実践できない。この作業記録の前提としてVirtualboxのホストマシンが有線LANでルータのNATにつながっていること)

アダプタ2
ネットワークアダプタを有効化(E)にチェック
割り当て⇒内部ネットワーク
(未割当にしようとするとネットワークハングが記録され続けてうっとうしい。ループバックコネクタは無いのかと思った)

この辺でスナップショット取って起動

 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 CHAOS CALMER (15.05.1, r48532)
 -----------------------------------------------------
  * 1 1/2 oz Gin            Shake with a glassful
  * 1/4 oz Triple Sec       of broken ice and pour
  * 3/4 oz Lime Juice       unstrained into a goblet.
  * 1 1/2 oz Orange Juice
  * 1 tsp. Grenadine Syrup
 -----------------------------------------------------
root@OpenWrt:/# ls
bin         init        mnt         rom         sys         var
dev         lib         overlay     root        tmp         www
etc         lost+found  proc        sbin        usr
root@OpenWrt:/# ping www.yahoo.co.jp
ping: bad address 'www.yahoo.co.jp'
root@OpenWrt:/# passwd
Changing password for root
New password:
Bad password: too weak
Retype password:
Password for root changed by root
root@OpenWrt:/#

この辺でスナップショット取って起動。
パスワードを設定。
yahoo.co.jpにPINGを打ってみるもそれいぜんに、DNSが引けてない。

ネットワークの設定をちゃんとやらないといけない。
デフォルトでは家庭内WifiルータのIPアドレスをスタッティックで名乗ってしまう。
VirtualBox Hostとのeth0の接続がNATであれば問題ないのだが、
ブリッジなのでまずい。大急ぎで家庭内WifiルータからIPを割り当ててもらうように設定。
本来であればどこにもつながってないネットワークで先に設定確認してから家庭内LANにつなぐべきであった。まあ、家庭内だからいっか。

root@OpenWrt:/etc/config# cat network

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'wan'
        option ifname 'eth0'
        option proto 'dhcp'

config interface 'lan'
        option ifname 'eth1'
#        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.254.1'
        option netmask '255.255.255.0'
        option ip6assign '60'

config interface 'wan6'
        option ifname 'eth1'
        option proto 'dhcpv6'

config globals 'globals'
        option ula_prefix 'fd2a:82cf:1d52::/48'

yahooにPINGが通るようになる。

root@OpenWrt:/etc/config# ping yahoo.co.jp
PING yahoo.co.jp (■.□.△.○): 56 data bytes
64 bytes from ■.□.△.○: seq=0 ttl=52 time=86.698 ms
64 bytes from ■.□.△.○: seq=1 ttl=52 time=42.318 ms
64 bytes from ■.□.△.○: seq=2 ttl=52 time=87.604 ms
64 bytes from ■.□.△.○: seq=3 ttl=52 time=55.463 ms

ここで VirtualBoxの外につながってるブリッジ上のDHCPからゲストeth0に割り当てられた
 http://192.168.1.202/
にアクセスしてみると、接続できない(拒否される)
これはeth0がWANとして扱われているからfirewall にはじかれてるっぽい。
よく考えると当たり前か。
firewall の設定をするよりりはLAN側にも VirtualBox ホストが接続できるようにする方が正しい。

面倒なので eth1を内部ネットワークではなくホストオンリーネットワークに変更する。
VirtualBox環境設定⇒ネットワーク⇒ホストオンリーネットワーク(H)⇒+追加
ホストオンリーネットワークの詳細 IPアドレスを192.168.254.2に変更

ping 192.168.254.1が通るようになる。
192.168.254.1 からの応答: バイト数 =32 時間 =1ms TTL=64

リブート後
http://192.168.254.1/
へのアクセスも可能に。LUCIが出るようになった。



★★★ Step.5 OpenWRTにStrongSwanを入れてみる ★★★

L2TP/IPSec を実現するにはxl2tpd と strongswan のセットアップが必要っぽい。
ひとつずつやった方が良さそう。strongswan は L2TP/IPSec のうち IPSec 部分を
実現するソフトっぽく、L2TPに手を出す前に StrongSwan単体で行うIPSecというものがどういうモノ
なのか体験しておいた方が良さそう。

「OpenWRT StrongSwan」でググる
 関係のドキュメント漁る。
vpn.ipsec.basics まずはコレだけを押さえとくヤツっぽい
vpn.ipsec.roadwarrior こっちは設定のハナシなので↑先っぽい
strongswan.howto 必要パッケージがこっちの方が多い記述。情報ソースが新しいかどうかAndroidにも使えるハナシなのか。

vpn.ipsec.basicsをまず最初にやるべきのような気がする。

opkg update
...(略



opkg list | grep strongswan

なんかいっぱいあるなあ。



opkg install strongswan
...(略
/etc/rc.common: line 143: ipsec: not found

ぐぬぬ。
既知問題っぽい。
https://dev.openwrt.org/ticket/20336

root@OpenWrt:/# opkg remove strongswan
Removing package strongswan from root...
/etc/rc.common: line 143: ipsec: not found
You can force removal of packages with failed prerm scripts with the option:
        --force-remove
No packages removed.
Collected errors:
 * pkg_run_script: package "strongswan" prerm script returned status 127.
 * opkg_remove_pkg: not removing package "strongswan", prerm script failed

ぐぬぬ。
アンインストールはできない=インストールされているとも言い切れない微妙な状態。
このまま突き進んでさらに謎に遭遇しそうで怖い。
opkg install strongswan-default
root@OpenWrt:~# which ipsec
/usr/sbin/ipsec
root@OpenWrt:~#

なんか依存関係が変なのかな?
strongswan package require --> /usr/sbin/ipsec
but, strongswan does not have the command.
strongswan-default has the command.

strange dependency......

What, which should i install??????????????????????????


(後記:strongswan パッケージは無視して、strongswan-full をインストールすべし、strongswanパッケージは-fullを入れれば勝手に入る。入れないとコンフィギャ失敗する)

2016年7月8日金曜日

L2TP/IPSecなサーバを立てたい Vol.0

OpenWRTが面白いのでVirtualboxにもインストールしてみてみる事にした。

そこで何がしたいかというと最近スマホを使うようになったのでVPN接続がしたい。
ゆくゆくは外からもアクセスしたい。

ただ仕組みがよくわかってない中でWeb上のドキュメントを漁っても情報過多なのでとにかく、最低限の実現を目指す。

まず仕組みを理解してから少しずつ手を広げたいなあと。

AndroidからなのでL2TP/IPSecがいいかな。VPNの最低限からスタートした方がいいだろうけど、最低限って何だろうというところを考えるところからスタートで。


よくわからんけど、たぶんこれがVPNが勉強できる最小構成なのかなあと思いますね。
HostOnly Networkにつないで何がうれしいんだというレベルですがね。

まあね。

2016年7月7日木曜日

NetBSD が VirtualBox で動くようになったようだが実機へのインストールは案外ハードルが高い

久々に NetBSD で遊んでる
昔はVirtualBoxには入れられなかったけど

NetBSD7.0.1をCD-ROMからインストールしたところ問題なくインストールできた。

ま、Virtualboxにインストールできるようになったことは素晴らしい。

でも、遊んでると動作が怪しいところを発見してしまった。

仮想環境じゃなく、実機での動作も怪しいとバグレポートした方がいいのかなと思ったのだが、
実機へのインストールが案外難しく、頓挫してしまった。

どうもNetBSD は USBのCDROMドライブではインストールできないらしい。
USBのCDROMも最近ブート可能だからいけるだろうと思っていたが、

ちゃんと読み込んでインストーラはスタートするのだが途中で CDROM を見失ってしまう。
帰り道も進むべき道も知らないというハードボイルド仕様で、ちょっとどうしようもなかった。
や、ワイルドなのかな。BIOSなんて捨ててやったぜっていう。

で、USB メモリからインストールを試みたがどうやってもWindowsパーティションを破壊する選択肢しかない。

せっかくバグっぽいものは発見したが、ちょっと実機へのインストールがうまくできない現状では
レポートしにくいな。
やっぱり何もしないでおこう。

2016年7月4日月曜日

MZK-MF300Nの挙動

MZK-MF300Nはアクセスポイントにもなるし、ルータにもなるらしいし、コンバータにもなる。

Linuxなんかをインストールする時に、無線のドライバが無かったりする場合重宝する。

Wake on lan は無線には対応してないので、こいつを押し入れから引っ張りだしてきた。

ところが、こいつはちょっとヘンな機械だ。

mf300N下流のネットワークが死亡した。

DNSが解決できないという。

で、調べてみると単なるコンバータとして動いてるのかと思いきや、こいつは何故かDNSを中継しようとしているようで、

ipconfig /all したとき 192.168.1.249 がDNSになっている。
そんなことをしてもメリットは
http://mf.setup/でアクセスできるようになるだけで全く嬉しくない。
MF300NはそれだけのためにDNSを中継したい気持ちがあるのだろうが
状況から考えるとDNSが死んだ理由はどう見てもMF300Nの死亡が疑わしく、コンバータは黙ってEtherとWifiの変換だけやってくれって感じだ。

DHCPはクライアントに設定した。

ところがまだ問題があって、クライアントに設定してもDHCPサーバの設定に従ってくれない
DHCP サーバの返したIPは全く無視して、192.168.1.249に張り付く。

PINGを打っても192.168.1.249 でリプライしてくる。

こいつのコンバータモードは結構やばい地雷仕様だ。
たぶんネットワーク管理者をイライラさせる性質の機械なので仕事では使わない方がいいだろう。
ホテルとか、公衆無線とか迷惑顧みないどうでもいいヤツ用だね

これをコンバータで使う場合DHCPをクライアントに設定したうえでルータ側で
Static Lease として192.168.1.249を設定してあげるしか逃げ道が無さそうである。

まったくでたらめなIPを設定した場合デフォルトゲートウェイがうんたらと文句を言われる。
何故レイヤー3まで踏み込んでくるのだコイツは…

ポンコツノートのリモートデスクトップホスト化

どうも最近ノートPCの調子が悪く、外に持ち歩くのは重いし不安だし使用頻度が落ちている。

調子が悪くなった原因は高いところから落としてしまったからで、症状としては、タッチパッドが効かない。たまに、ドライブエラー(読み込みエラーではなくドライブ未接続状態)、バックライトムラなどが発生しており、売っても二束三文にしかならない。特にドライブエラー動かすと起きやすく、下手に動かすとご臨終してしまわれるのではないかと思うと、持ち運ぶのはためらわれる。キーボードも荒く叩けずストレスが貯まるのだ。

しかし安静に扱う限り何も起きないので、リモートデスクトップのホストとして復活させたい。

復活させるメリットはそれなりにある。
  • core i3 2367mという自分の所有するPCの中では最速のcpu intel−VTが使える
  • 腐っても64ビットOS搭載
  • ライセンスされたちゃんとしたMS OFFICE
  • androidで艦これ
など。

で、やってみた。
ms製リモートデスクトップアプリはすこぶる気持ちよく動いてくれる。
ちょっとは迷ったりしたが、目標は達成できた。

艦これはandroid専用アプリは当選しないから、タブレットで気分を味わうにはよかろう。

問題はサクサク動きすぎて、いざあたった時やる気がなくなるかも。

実はドルフィンブラウザならネイティブandroidでも動くが、不安定で猫が出まくる。

横道にそれたがリモートデスクトップ快適である。

ウェイクオンランも設定したので家庭内からだとちょっとポチるだけで、スイッチを入れに行く必要もない。

ハマったのはwindows10の高速起動をoffにしないとwolがうまく機能しないところくらいだろうか。

実はルーターをいじって外部からもwolさせようとしたのだがこれはうまくいかなかった。openwrtはブロードキャストアドレスでポートフォワード設定をしてもうまくできない。セキュリティ上の問題などがあるのかも。

立ち上がってもないマシンにはipアドレスもないだからブロードキャストで投げるしかない。外からの接続をブロードキャストで投げるのはどうなのよっていう。メビウスリング的などうしようもなさ。

openwrt12以降にはip command を使ったワークアラウンドが掲示板に出ていた。無効なipにブロードキャスト※MAC※アドレスを設定するようなコマンドを起動時に叩くように設定し、そのアドレスにフォワードするように見受けられたが、古いルータでopenwrt10.03.1のためipコマンドがなかった。

外から艦これの夢は少し遠のいたがまあそこは今はいいかな。
どこかに穴が開けれたらwake on lan は可能なのだが。vpnをrpi に入れてそこにフォワードすれば全部解決するんだが。

2016年7月2日土曜日

ボロwifi ルーターアップタイム1週間超え

ルータ環境入れ替えてから家庭内wifiの安定度は飛躍的に向上した。

バッファローWHR−300HPは初期ファームではルータモードでは安定しない。しかしブリッジモードでのアクセスポイントとしては全く問題ない安定感だ。最新ファームに入れ替えたせいもあるかもしれないが、安定しない場合はブリッジモードで使用するのがおすすめできる。

その場合wanポートを別のルータに接続しなくてはならない。

自分の場合ルータにはopenwrt化した型落ちジャンクのWHR−G54Sを使用した。ただアマゾンで捨て値で売られている、yamahaのリース落ちVPNにもなるルータとかopenwrt化したゴミノートパソコンやRPIを使うとかでも安定しそうな気がするな。x86系とかRPIであればファームのサポート切れとかは無いしそういうのが好きな人であればいっかも。

ま、出費無しでとりあえず1週間ノートラブルでリブートなし。一件落着。