ConoHa を使っていて友達はいないが

注目

CohoHa には「このとも」という友達紹介制度が存在します。

ですが、私には紹介するような友達が居ません。

と言うわけで、以下に「このとも」経由で ConoHa に申し込めるリンクを張っております。上記「このとも」の内容に問題が無くて、ConoHa を始めるような方がいらっしゃれば、クリック頂ければ嬉しいです。

「このとも」経由で ConoHa サイトへ

iPhone XS に機種変更しました

価格も激高で、散々悩んだのですが、Apple Online Store で iPhone XS を注文し、発売日の翌々日に無事納品されました。ちなみに、iPhone 6s からの機種変更で、2018/09/15 予約、2018/09/23 納品でした。

MVNO を利用しているので購入先は Apple Online Store 一択です。

■データなどの移行

iTunes にバックアップしてあった、iPhone 6s のバックアップデータを iPhone XS に復元してあげるだけで、簡単に移行できました。なお、今回からクイックスタートも併用しています。(クイックスタートで初期設定した上で、iTunes から復元)

一部銀行系利用を除き、復元先の iPhone XS で、二要素認証系のソフトウェアがそのままデータも引き継がれて利用できたのは意外でした。てっきり再度設定する必要があるのかと思っていました。

■注意すべき点

私の環境のみかも知れませんが、MVNO の APN プロファイルがインストールされている環境で取得したバックアップから iOS 12.0 端末へ復元した場合、以下のような現象が発生しました。

・iOS 12.0 の端末のバックアップを iPhone XS (iOS 12.0) に復元した場合
iPhone XS 上で、APN プロファイルを追加する際に、正常に完了します。

・iOS 11.4.1 の端末のバックアップを iPhone 6s (iOS 12.0) に復元した場合
iPhone 6s 上で、APN プロファイルを追加しようとしても、エラーで追加できません。(iOS 上では、APN 変更の情報が反映されたままのようで (APN プロファイルをインストールしなくても、MVNO の SIM カードで通信できてしまう) 、困った事態になります)

よって、iOS 12 未満のバックアップから iOS 12.0 端末への復元は、事前に iOS 11.x のバックアップで APN プロファイルを削除してバックアップしたものを復元するか、バックアップする端末の iOS のバージョンを 12.0 に上げてからバックアップしたものを復元すると良いのかもしれません。

■電話会社側の手続き

MVNO を利用しているので、そんなものはありません。(笑) 単に、SIM カードを差し替えるだけです。

■実際に iPhone XS を使用してみた感じ

  • 液晶がとにかく綺麗。もう元に戻れないです。今までの液晶はどうしても色ムラとかで気になる点があったりしたのですが、iPhone XS の OLED 液晶はバックライトがないので色ムラとおさらばできているのでしょう。
  • Face ID が意外に早くて Touch ID の時のようにロックを解除するという操作を意識しなくても良いのは楽。ただし、意図的にロックを解除したくないときでも iPhone を見つめてしまうと解除されるのでそのあたりは、便利さとトレードオフかと思います。
  • iPhone 6s からの機種変更なので、Suica とか iPhone に格納できて便利です。財布の中から 1 枚カードが減りました。その代わりなくしたりしたら大変です。
  • iPhone XS の Apple Care+ for iPhone が目茶苦茶高いです。あまりの高さに、当初は加入しないつもりでしたが、電子決済機能も利用するので万一端末故障した場合影響が大きいこと、若干重量が増えて落としそうなのと、iPhone 6s の時も故障やリコールやらで、エクスプレス交換などで結構便利に使ったので、安心料の意味合いで加入しました。
    Apple Care + for iPhone の加入は、端末購入と同時以外に、購入後 30 日以内であれば出来るので、考える猶予があるのは良いですね。

と言うことで、新しい iPhone XS を楽しみたいと思います。

eo 光ネットの IPv6 接続を専用ルータ無しに利用する

eo 光ネットの「IPv6インターネット接続の標準提供開始のお知らせ」の通り、2018/08/30 より、PPPoE による IPv6 接続サービスが実施されています。

専用ルーターが必要との表記はありますが、市販されていた手持ちの YAMAHA RTX810 で IPv6 接続できたので、設定方法を備忘録代わりに記載します。

なお、当然ながら、非公式であり、完全に自己責任での内容となりますので、ご注意下さい。また、ルーターのログを見ている限り、プロバイダ側での着信方向フィルタリングは存在しないようですので、ルーター側の設定を間違えると、うっかり自 LAN 内の端末がグローバルからアクセス可能となることもあり得ます。十分注意が必要です。

前提としては、eo 光ネットに IPv4 での PPPoE 接続設定が LAN2 を利用して PP 1 として出来ている状態です。
VLAN を切っているため、IPv6 が当たるインタフェースは vlan3 にしていますが、適宜読み替えて下さい。

以下、追加するコマンドです。

pp select 1 
 ppp ipv6cp use on
 ipv6 pp rip send off
 ipv6 pp secure filter in 300011 300012 300013 300014 300015 300016 310011 310012 310013 319998 319999
 ipv6 pp secure filter out 300011 300012 300013 300014 300015 300016 329998 329999 dynamic 320011 320012 320013 320014 320015 329998 329999
 ipv6 pp dhcp service client
pp enable 1
ipv6 filter 300011 reject-nolog * * udp,tcp 135 *
ipv6 filter 300012 reject-nolog * * udp,tcp * 135
ipv6 filter 300013 reject-nolog * * udp,tcp netbios_ns-netbios_ssn *
ipv6 filter 300014 reject-nolog * * udp,tcp * netbios_ns-netbios_ssn
ipv6 filter 300015 reject-nolog * * udp,tcp 445 *
ipv6 filter 300016 reject-nolog * * udp,tcp * 445
ipv6 filter 310011 pass * * icmp6
ipv6 filter 310012 pass fe80::/10 * udp 546 547
ipv6 filter 310013 pass fe80::/10 * udp 547 546
ipv6 filter 319998 pass * * established
ipv6 filter 319999 reject-nolog * * * * *
ipv6 filter 329998 pass * * * * *
ipv6 filter 329999 reject-nolog * * * * *
ipv6 filter dynamic 320011 * * ftp
ipv6 filter dynamic 320012 * * domain
ipv6 filter dynamic 320013 * * www
ipv6 filter dynamic 320014 * * smtp
ipv6 filter dynamic 320015 * * pop3
ipv6 filter dynamic 329998 * * tcp
ipv6 filter dynamic 329999 * * udp
ipv6 prefix 3 dhcp-prefix@pp1::/64
ipv6 vlan3 address dhcp-prefix@pp1::1/64
ipv6 vlan3 dhcp service server
ipv6 vlan3 rtadv send 3 o_flag=on
ipv6 route default gateway pp 1

と言うわけで、専用ルータでなくとも、YAMAHA のルータでも IPv6 で接続できました。

なお、うちのルータですが、vlan1 に既に固定 IPv6 アドレスが当たっているので、恒常的には設定していません。
IPv6 でも、フィルタ型ルーティングの様なことが出来れば良いのですけれど。

・追記

IPv6 での外へのアクセスを eo 光の IPv6 にしてみました。IPv6 はインタフェースに複数の IPv6 アドレスを付けられるので、この部分は凄く便利ですね。

Echo Spot を買ってしまった

正直言って、スマートスピーカーって事実上、合意を持ってサービス提供者からの盗聴を許している様なものなので、全く興味が無かったのだけれど、スクリーンが付いただけでなぜか抵抗感がなくなって買ってしまった。

おそらく、ディスプレイが付くことで端末の動作が視覚化されるので、Echo Spot にはカメラも付いているにもかかわらず抵抗感が減るのではと思う。

セットアップ自体は簡単で、Echo Spot 本体でできる。しかし、ディスプレイのない Echo の場合は、スマートフォンのアプリから設定するのだが、Echo Spot の場合はこれが出来ない。Echo Spot でも同様に出来ると楽なのにと感じた。

単にネットに繋ぐだけなら非常に簡単でよく考えられているとは思うけれど、MAC アドレスフィルタしている Wi-Fi AP に接続する場合はちょっと面倒くさい。

と言うのも、自分が確認した範囲では、Echo Spot の設定が完了していないと、自身の MAC アドレスを知る方法がなかったためである。

と言うことで、一旦 MAC アドレスフィルタのかかっていない AP を設定して、そこに設定してからセットアップし、スマートフォンのアプリから Echo Spot の MAC アドレスを確認し、こちらを AP に登録という手順を踏んで接続という若干面倒な設定となった。これは初期画面に MAC アドレスを表示しても良いのではとは思う。

セットアップ後の動作は問題なく、音声もかなりの精度で認識してくれる。初めてスマートスピーカーを使ってみたのだけれど、音声で指示が出来るのは、ちょっとスター・トレック感があって面白い。

機能の拡張も、スキルを導入することで可能で、これがクラウド側で完結しているのもよく出来ていると思った。色々なスキルを試してみて、ちょっと遊んでみようと思う。

Soundflower で音声を出力しつつ録音する

Soundflower のページに記載されているが、macOS High Sierra において、Soundflower でシステム音声を録音する際に、通常の音声出力にも出力する方法の備忘録。

  1. 「Audio MIDI 設定」を起動して、「オーディオ装置」ウィンドウより、「+」ボタンをクリックし、「複数出力装置を作成をクリック」。
  2. 「複数出力装置」を選択し、右ペインより「内蔵出力」と「Soundflower (2ch)」の「使用」と「音ずれ補正」をチェックする。
  3. 「システム環境設定」を起動し、「サウンド」を選択。
  4. 「出力」を選択し、「サウンドを出力する装置を選択:」より「複数出力装置」を選択する。
  5. 録音するソフトウェア側で「Soundflower (2ch)」を選択する。

Linux: dbus の部分で起動に目茶苦茶時間がかかって、止まったかと思った件

私、sysvinit で Linux を運用していたのだけど、パッケージシステムでうっかり systemd が入ってしまい、再起動したところ dbus のところで起動しなくなった。(ように見えた)

目茶苦茶焦ったのだが、しばらく考え込んでいたところ、どうやらタイムアウトして起動してくれた。(ホッ)

ログを見てみたら、

dbus-daemon[xxxx]: [system] Failed to activate service 'org.freedesktop.systemd1': timed out (service_start_timeout=25000ms)

とのことで、/etc/nsswitch.conf の

passwd: compat systemd
group: compat systemd

passwd: compat
group: compat

に修正し、再起動で対応完了。

国道 157 号線で、岐阜県から福井県へ

岐阜県と福井県を結ぶ道路と言えば、国道 158 号線が最も使いやすいのではとは思うのですが、それとは別に、

があります。

今回、6 月 20 日頃に、福井県側の通行止めが解除されたので、国道 157 号線を用いて、岐阜県から福井県へ抜けてみました。

岐阜県側のゲートです。写真には写ってはいませんが、この場所にあの「落ちたら死ぬ」の看板もあります。

続きを読む

Let’s Encrypt でワイルドカード 証明書を得る (nsd4 利用)

Let’s Encrypt でワイルドカード証明書を得るためには DNS-01 で認証を得る必要があります。

nsd4 と dehydrated の組み合わせで一応出来たので、備忘録として記載します。なお、マスターサーバ上で実装、bind9 付属の named-checkzone を利用しているので注意して下さい。

・/etc/nsd/zones/example.com (ゾーンファイルの修正)

nsd4 では、動的にゾーンのレコードを追加したり削除したり出来ないので、実際のゾーンファイルを直接書き換えます。

関係ないところを書き換えないためにも、シリアル値を「;SERIAL_START」から「;SERIAL_END」の範囲で、DNS-01 で使う「_acme-challenge」については「;LE_DNS-01_START」から「;LE_DNS-01_END」の範囲でくくります。

$TTL 86400
example.com.		IN	SOA	ns.example.com. root.ns.example.com. (
;SERIAL_START
				2018051301	; Serial
;SERIAL_END
				86400		; Refresh 24 Hours
				7200		; Retry 2 Hours
				1209600		; Expire 2 Weeks
				7200		; Negative cache TTL 2 Hours
			)

					IN	NS	ns.example.com.

;LE_DNS-01_START
;_acme-challenge.example.com.	60	IN	TXT	"NOTHING"
;LE_DNS-01_END

NS					IN	A	192.168.1.1

・hook.sh

dehydrated 同梱の hook スクリプトを以下の様にします。

#!/usr/bin/env bash

deploy_challenge() {
    local DOMAIN="${1}" TOKEN_FILENAME="${2}" TOKEN_VALUE="${3}"
    local REGEXDOMAINNAME=`echo ${DOMAIN} | sed -e 's/\./\\\./'`
    local NOWUMASK="`umask`"
    local serial1=`named-checkzone "${DOMAIN}" "/etc/nsd/zones/${DOMAIN}" | awk '/serial/ {print $5}'`
    local serial2=`expr $serial1 + 1`
    
    umask 022
    
    sed -i -e "/;SERIAL_START/,/;SERIAL_END/ s/$serial1/$serial2/" "/etc/nsd/zones/${DOMAIN}"
    sed -i -e "/;LE_DNS-01_START/,/;LE_DNS-01_END/ s/^;_acme-challenge\.${REGEXDOMAINNAME}\..*/_acme-challenge.${DOMAIN}.\t60\tIN\tTXT\t\"${TOKENVALUE}\"/" /etc/nsd/zones/${DOMAIN}
    nsd-control reload
    
    sleep 5
    
    umask ${NOWUMASK}
}

clean_challenge() {
    local DOMAIN="${1}" TOKEN_FILENAME="${2}" TOKEN_VALUE="${3}"
    local REGEXDOMAINNAME=`echo ${DOMAIN} | sed -e 's/\./\\\./'`
    local NOWUMASK="`umask`"
    local serial1=`named-checkzone "${DOMAIN}" "/etc/nsd/zones/${DOMAIN}" | awk '/serial/ {print $5}'`
    local serial2=`expr $serial1 + 1`
    
    umask 022
    
    sed -i -e "/;SERIAL_START/,/;SERIAL_END/ s/$serial1/$serial2/" "/etc/nsd/zones/${DOMAIN}"
    sed -i -e "/;LE_DNS-01_START/,/;LE_DNS-01_END/ s/^_acme-challenge\.${REGEXDOMAINNAME}\..*/;_acme-challenge.${DOMAIN}.\t60\tIN\tTXT\t\"NOTHING\"/" /etc/nsd/zones/${DOMAIN}
    nsd-control reload
    
    sleep 5
    
    umask ${NOWUMASK}
}

deploy_cert() {
}
deploy_ocsp() {
}
unchanged_cert() {
}
invalid_challenge() {
}
request_failure() {
}
generate_csr() {
}
startup_hook() {
}
exit_hook() {
}

HANDLER="$1"; shift
if [[ "${HANDLER}" =~ ^(deploy_challenge|clean_challenge|deploy_cert|deploy_ocsp|unchanged_cert|invalid_challenge|request_failure|generate_csr|startup_hook|exit_hook)$ ]]; then
  "$HANDLER" "$@"
fi

dehydrated の config ファイルの修正

DNS-01 と hook.sh を使う様に指定します。その他は適切に設定して下さい。

CHALLENGETYPE="dns-01"
HOOK=./hook.sh

dehydrated の domains.txt ファイルの修正

以下の様な書式で記載します。

*.example.com > wildcard.exaple.com

証明書発行

後は、いつもどおり証明書を要求すると、DNS-01 で認証され、発行されます。

その他

domains.txt で「example.com *.example.com」の様にすると、example.com に 2 回 DNS-01 認証が発生し、上手くいきませんでした。