H2O Wirelessの月額プランは自動応答の電話で変更可能

H2O Wirelessの月額プランを契約しているとRechargeには今の月額プランのしか選択肢に出てこない。なので、増減させたいときに困る。実際困った。
なので、とりあえずチャットで訊いてみたら、800.643.4926に電話しろとのこと。
ドキドキしながら電話したら、すべて自動応答で済んでとても助かった。
電話で月額プランを変更したら、ウェブページのRechargeのとこ行くと、変更後の金額が選択肢に出てきてる。
それでRechargeすればOK.

アメリカ入国から運転免許取得までの時系列

2014年1月現在はこんな流れで進みますよ、というのを記録しておきます。わりと滞りなく進んで2週間半という感じ。

時系列

前提としては、Union bankで銀行口座は作成済。アパートは決めてあったので到着した日からアパートへ。

  • 1/3 シアトル到着
  • 1/6 Social Security Administrationへ行って、ソーシャルセキュリティーナンバーを申請
    • 窓口のイタリア系のおっちゃんがスムースに手続きしてくれて、なぜか日本語で少し雑談
  • 1/10 L-2の奥さんのSSNが先に届いた
  • 1/13 L-1の自分のSSNが届いた
  • 1/16 運転免許のためのKnowledge testをパス
  • 1/17 運転免許のためのDriving skill testをパス
    • バックマニューバーと縦列駐車がよくなかったけど、パスできてよかった
  • 1/17 Comcastにインターネットとケーブルテレビの申し込み
  • 1/21 Driver Licensing Officeで免許の申請と紙の免許証を受理

ソーシャルセキュリティーナンバーの申請について

アメリカ内での情報共有に時間がかかるので、SSNの申請まで2週間くらい待ったほうがいいという情報をよく見たけど、I-94が電子化されたのでもっと早く申請してよかろうと考えて、入国から2営業日目で申請に行った。結果としてこれは正解。

行った場所はベルビュー。

持っていったのは

  • 日本のパスポート
  • ビザ
  • I-94を印刷したもの
    • けっきょく見せなくてよかった
  • 婚姻証明

婚姻証明を持っていけば、L-2の奥さんのSSNもスムースに発行してくれる。もちろん、労働許可取得可能なものが。

僕らのケースでは、日本の戸籍謄本を自分で翻訳して公証役場で公証してもらったものを持参。
翻訳書類のフォーマットはアメリカ大使館のサイトで公開している以下のものを使用。

翻訳後に公証役場で公証をしてもらったけど、費用は13000円くらいでけっこう高い。有効な戸籍謄本を持っていけば、シアトル総領事館で15ドルで婚姻証明の英訳を郵送してくれる http://www.seattle.us.emb-japan.go.jp/japanese/info/shoumei_04.htm ので、そちらのほうが良さそうだ。

ちなみに、日本の公証がアメリカで有効なのは、日米ともにハーグ条約に加盟しており、アポスティーユという付箋による証明で、駐日領事の認証があるものと同等のものとみなしてくれるかららしい。

運転免許について

ライセンシングオフィスで試験を受けられることに気づかずに、ドライビングスクールのほうで試験を受けた。なので、余計にナレッジテストで20ドル、スキルテストで40ドルかかってしまった。けど、ライセンシングオフィスだと怖いインストラクターが多いというのをみてたけど、スクールだとすごく和やかにやってくれて助かった。 オフィスで試験をするだけなら、申請費用35ドルと発行費用45ドルの合わせて80ドルだけで済むようだ。

ライセンシングオフィスで日本のパスポートと運転免許証の提示を求められたので、ホントはSSNカードとか持っていったほうがいいのかもしれない。

運転免許の試験について

ワシントン州では外国の免許を持ってるひとも知識テスト、実技テストが必要。 ドライビングガイドは日本語がある http://www.dol.wa.gov/driverslicense/guide.html のでそれを読んで理解して、知識テストはオンラインの模試を7〜8回やったら問題の傾向と答えがつかめるはず。

試験の際は、Pre-applyしてそのときの番号を持ってくのと、パスポートと運転免許証でOK。

スキルテストは普通の街なかの運転と、バックマニューバーと縦列駐車をやるだけ。和やかなおっちゃんで助かった。

インターネット、ケーブルテレビ

Comcastで12ヶ月は月50ドルのプランがあったのでそれで。Verizonはサービス対象外地域だった。 申請時にSSNを訊かれて、クレジットヒストリーが確認されるけど、ヒストリーがないのでリファンダフルデポジットで100ドルとられた。

mdadm RAID1復旧の試験

下準備

ディスクは3本ある状態。状況確認

fdisk -l

フォーマット

sdb,sdcでraid1作成。sddはスペアディスク。それぞれ10MB。

fdisk /dev/sdb
fdisk /dev/sdc
fdisk /dev/sdd

fdiskのコマンドはこんな。

n, p, 1, 1
t, fd

raid0作成

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sd[bc]1
mkfs.ext4 /dev/md0
mount /dev/md0 /mnt/

確認

mdadm --misc --detail /dev/md0
mdadm --misc --examine /dev/sdb1
mdadm --misc --examine /dev/sdc1

停止と再開のテスト

umount /mnt
mdadm --misc --stop /dev/md0
mdadm --misc --detail /dev/md0
mdadm --assemble /dev/md0 /dev/sd[bc]1

[root@localhost ~]# mdadm --assemble /dev/md0 /dev/sd[bc]1
mdadm: /dev/md0 has been started with 2 drives.

ケース: sdbのディスクが壊れた

sdbに失敗マークつける

mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --misc --detail /dev/md0

[root@localhost ~]# mdadm --misc --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 11:42:49 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 18
_
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1
_
0 8 17 - faulty spare /dev/sdb1

sdbを取り除く

mdadm /dev/md0 --remove /dev/sdb1
mdadm --misc --detail /dev/md0

[root@localhost ~]# mdadm /dev/md0 --remove /dev/sdb1
mdadm: hot removed /dev/sdb1 from /dev/md0
[root@localhost ~]# mdadm --misc --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 11:50:11 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
_
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 21
_
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1

この状態でも使えることは使える

再起動してみるとどうなる?

/dev/md127で認識されてる。
これはinitramfsで自動assembleされるため。
dracutとかで作り直せばよさそうだけど、パラメータわからん。

sudo fdisk -l

ディスク /dev/md127: 8 MB, 8126464 バイト
ヘッド 2, セクタ 4, シリンダ 1984
Units = シリンダ数 of 8 * 512 = 4096 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00000000

デグレーデッドな状態

mdadm --misc --detail /dev/md127

[root@localhost ~]# mdadm --misc --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 11:53:23 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
_
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 31
_
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1

mount /dev/md127 /mnt/

マウントすればもちろん使える

新規ディスク追加

mdadm /dev/md127 --add /dev/sdd1
mdadm --misc --detail /dev/md127

addするとrebuildが走る。けど、この場合は10MBのディスクなので一瞬で終わってる。

[root@localhost ~]# mdadm /dev/md127 --add /dev/sdd1
mdadm: added /dev/sdd1
[root@localhost ~]# mdadm --misc --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 15:55:14 2013
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
_
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 56
_
Number Major Minor RaidDevice State
2 8 49 0 active sync /dev/sdd1
1 8 33 1 active sync /dev/sdc1

md127からmd0に戻す

mdadm --misc --stop /dev/md127
mdadm --assemble /dev/md0 /dev/sd[cd]1

[root@localhost ~]# mdadm --misc --stop /dev/md127
mdadm: stopped /dev/md127
[root@localhost ~]# mdadm --assemble /dev/md0 /dev/sd[cd]1
mdadm: /dev/md0 has been started with 2 drives.

ケース:追加したsddのディスクも壊れた

mdadm /dev/md0 --fail /dev/sdd1
mdadm /dev/md0 --remove /dev/sdd1

sdbに新しいディスクを入れて追加する

mdadm /dev/md0 --add /dev/sdb1

おっけー

ケース:片肺で動かす

追加ディスクないけどとりあえず動かしたい、もしくは、片方のディスクだけでデータみたい、というケース。

1ディスクだけでアセンブル

runをつけないとinactiveでの起動になる。

mdadm --assemble /dev/md0 /dev/sdc1 --run

[root@localhost ~]# mdadm --assemble /dev/md0 /dev/sdc1 --run
mdadm: /dev/md0 has been started with 1 drive (out of 2).
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdc1[1]
7936 blocks super 1.2 [2/1] [_U]
_
unused devices:
[root@localhost ~]# mdadm --detail /dev/md127
mdadm: cannot open /dev/md127: No such file or directory
[root@localhost ~]# mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Dec 16 11:37:59 2013
Raid Level : raid1
Array Size : 7936 (7.75 MiB 8.13 MB)
Used Dev Size : 7936 (7.75 MiB 8.13 MB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
_
Update Time : Mon Dec 16 16:01:55 2013
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
_
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : 8de6a2e9:620c76ea:cc0bb7fd:5b0c30af
Events : 81
_
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 33 1 active sync /dev/sdc1

いちおう使えるので、mount -o ro /dev/md0 /mntとかで読み取り専用でマウントするのがよいと思う。

Node.js, Express3, Socket.ioで作る、コマンド実行Webインターフェース

動画をポータブルな形式に変換したり、DVDのバックアップとったり、BitTorrentのファイルダウンロードを登録したり、 ejectコマンドでディスクトレイを開けたり、とか、たまーにサーバー上で簡単なコマンドを実行したいこととかありますよね。

そういうのを一度、Python, Flaskで書いてみた[ https://github.com/shrkw/run-your-command-via-web-ui-py] けど、やっぱりコマンド実行したら標準出力も標準エラーもすぐに見たいよね、と思い、これこそWebSocketの出番や!となったので、Node.js + Socket.ioで書き直してみた。

構成する要素とできたもの

画面はこだわりがなかったので、普通にTwitter bootstrapで。
twbsの静的ファイルも配る必要があるので、Express3も。
要素としてはこれくらいで、できたのはこれ。

https://github.com/shrkw/run-your-command-via-web-ui

screen image

app.jsにちょろっと、Socke.io周りのコードを追加したくらい。
コマンド実行自体は、child_process.spawnで実行すると、stdoutとstderrがコールバックでとれるので、それぞれのコールバックでクライアント側のログ描画イベントをemitするのみ。シンプル。

感想

Socket.io

マジでらくちん。
onで受け口作っといて、emitでイベント送るだけというのがすごくわかりやすい。 難しいことを考えなくていい。

Bower

普通に楽チンなので捗る。でも、Node.js入れないといけないのはアプリケーションを他言語で作ってるときに少し面倒かな。主要言語にポーティングされると嬉しい。

READMEはPythonのプロジェクトだろうが、Markdownで書く。

課題

READMEにも書いたけど、クライアント側JSのio.connectの行でSocket.ioサーバーに繋ぐけど、サーバー名をベタで書かないといけないのが残念。

MySQLでAUTO_INCREMENTを任意の数字に変更する

Redmine のチケットを復活させた ときに、誤ってissuesテーブルに違うtsvを食わせてしまい、ゴミデータを追加してauto_incrementの数字を大きくしてしまった。

手動で直したので、そのときの手順。

手順

状況確認

Auto_increment列をみる。

show table status like 'issues'\G;
mysql> show table status like 'issues'\G;
*************************** 1. row ***************************
           Name: issues
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 4713
 Avg_row_length: 1004
    Data_length: 4734976
Max_data_length: 0
   Index_length: 1376256
      Data_free: 9437184
 Auto_increment: 13008
    Create_time: 2013-09-12 16:06:01
    Update_time: NULL
     Check_time: NULL
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.01 sec)

ERROR: 
No query specified

昨日まで5000くらいだったのに…

データをバックアップしておく

壊れたデータなのでいらないと思うけど、一応バックアップしておく。

mysql -u redmine -p -D redmine_db -e'select * from issues where id > 5348;' > issues.tsv

AUTO_INCREMENTを変更する

AUTO_INCREMENTで指定した数字より大きいidがなければ、正しく変更されるはず。

ALTER TABLE issues AUTO_INCREMENT = 5348;

変更できてなくても、Query OKが返ってくるので注意。しっかり確認すべし。

mysql> ALTER TABLE issues AUTO_INCREMENT = 5348;
Query OK, 5068 rows affected (0.98 sec)
Records: 5068  Duplicates: 0  Warnings: 0

Redmineの誤って削除したチケットをバックアップから復活させた話

参考

基本的にここの記事の通りです。

http://daily-postit.blogspot.jp/2012/12/blog-post.html

前提

DBもファイルもバックアップを残してあること。

手順

ステップは2つ

  • データの復旧
  • ファイルの復旧

データの復旧

復旧するデータのあるテーブル

issues
journals
journal_details
watchers
attachments
issue_relations
custom_values

追記:custom_values が抜けてた。以下のSQLは追記済。

SQL的にはこんな感じ。

select * from issues where id = 4987;
select * from journals where journalized_id = 4987;
select jd.* from journal_details jd INNER JOIN journals j ON journal_id = j.id where journalized_id = 4987;
select * from watchers where watchable_id = 4987;
select * from attachments where container_id=4987;
select * from issue_relations where issue_from_id=4987 OR issue_to_id=4987;
select * from custom_values where customized_id=4987;

実行したコマンド

こんな感じ。シェルスクリプトにすれば再利用できるんじゃないかな!再利用する場面に遭遇したくないけど!!

Export

mkdir /tmp/201309
cd /tmp/201309
mysql -u root -D redmine_20130911_temp -e'select * from issues where id = 4987;' > issues.tsv
mysql -u root -D redmine_20130911_temp -e'select * from journals where journalized_id = 4987;' > journals.tsv
mysql -u root -D redmine_20130911_temp -e'select jd.* from journal_details jd INNER JOIN journals j ON journal_id = j.id where journalized_id = 4987;' > journal_details.tsv
mysql -u root -D redmine_20130911_temp -e'select * from watchers where watchable_id = 4987;' > watchers.tsv
mysql -u root -D redmine_20130911_temp -e'select * from attachments where container_id=4987;' > attachments.tsv
mysql -u root -D redmine_20130911_temp -e'select * from issue_relations where issue_from_id=4987 OR issue_to_id=4987;' > issue_relations.tsv
mysql -u root -D redmine_20130911_temp -e'select * from custom_values where customized_id=4987;' > custom_values.tsv

Import

/tmp/201309/のファイルからINFILEしているのは、mysqlユーザーからファイルにアクセスできる必要があるため。

mysql -u root -D redmine_db -e"LOAD DATA INFILE '/tmp/201309/issues.tsv' INTO TABLE issues IGNORE 1 LINES;"
mysql -u root -D redmine_db -e"LOAD DATA INFILE '/tmp/201309/journals.tsv' INTO TABLE journals IGNORE 1 LINES;"
mysql -u root -D redmine_db -e"LOAD DATA INFILE '/tmp/201309/journal_details.tsv' INTO TABLE journal_details IGNORE 1 LINES;"
mysql -u root -D redmine_db -e"LOAD DATA INFILE '/tmp/201309/watchers.tsv' INTO TABLE watchers IGNORE 1 LINES;"
mysql -u root -D redmine_db -e"LOAD DATA INFILE '/tmp/201309/attachments.tsv' INTO TABLE attachments IGNORE 1 LINES;"
mysql -u root -D redmine_db -e"LOAD DATA INFILE '/tmp/201309/issue_relations.tsv' INTO TABLE issue_relations IGNORE 1 LINES;"
mysql -u root -D redmine_db -e"LOAD DATA INFILE '/tmp/201309/custom_values.tsv' INTO TABLE custom_values IGNORE 1 LINES;"

ファイルの復旧

ファイル名を調べる。

mysql> select disk_directory, disk_filename from attachments where container_id=4987;
+----------------+----------------------------------------------------+
| disk_directory | disk_filename                                      |
+----------------+----------------------------------------------------+
| 2013/08        | 130805171804_01_init.sql                           |
| 2013/08        | 130805203239_d8d397a2800db492580e9f034275dab1.xls  |
| 2013/08        | 130806142525_fc0be408d4ccbf8d79b9617874e85a6e.xlsx |
| 2013/08        | 130809181036_02_create_view.sql                    |
| 2013/08        | 130820112759_mail.sql                              |
| 2013/09        | 130903194816_fc0be408d4ccbf8d79b9617874e85a6e.xlsx |
+----------------+----------------------------------------------------+

あとはバックアップしておいたファイルから、filesディレクトリにコピーすればOK.

sudo cp -p opt/redmine/files/2013/08/130805171804_01_init.sql /opt/redmine/files/2013/08/
sudo cp -p opt/redmine/files/2013/08/130805203239_d8d397a2800db492580e9f034275dab1.xls /opt/redmine/files/2013/08/
sudo cp -p opt/redmine/files/2013/08/130806142525_fc0be408d4ccbf8d79b9617874e85a6e.xlsx /opt/redmine/files/2013/08/
sudo cp -p opt/redmine/files/2013/08/130809181036_02_create_view.sql /opt/redmine/files/2013/08/
sudo cp -p opt/redmine/files/2013/08/130820112759_mail.sql /opt/redmine/files/2013/08/
sudo cp -p opt/redmine/files/2013/08/130903194816_fc0be408d4ccbf8d79b9617874e85a6e.xlsx /opt/redmine/files/2013/08/

復旧後のトラブル

なにが原因か不明だけど、復旧作業の翌日にチケットを新規発行したら、チケットのidが昨日まで5000くらいだったのが、いきないり13000とかに!

思い出した!issuesにLOAD DATA INFILEのクエリー投げるときに、間違えて違うtsvを食わせちゃったんだ。自分が原因でよかった。

issuesテーブルみたら、idが飛び飛びになって、なんか変なデータが20行くらい増えてる。 手動でいらないレコード消してissuesテーブルのauto_increment直して解決させたけど、イリーガルなことしたらDB含めて全体をリスタートするとかしたほうが良さげ。

Shrewsoft VPN clientをMacでQTのGUIなしで動かす話

要約

Shrewsoft VPN clientはLinux/BSD/Mac向けのソースが公開されてるので、自分でコンパイルすればQtなしで動くバイナリが作れる。その場合はQtないから当然CUIなので、ターミナルから使うよ。

背景

無料のVPNクライアントとしてたぶん人気だと思うShrewsoft VPN Client。Macで動かしたいひとはたぶんこの辺りをみて、QtだのTUN/TAP driverだのいろいろ入れて、ようやくdmgからインストールして動かしてると思う。

http://ulaptech.blogspot.jp/2012/11/shrew-soft-vpn-client-for-mac-os-x.html http://blog.livedoor.jp/kerorou/archives/28739240.html

でも、僕はQtとかあまり使わないもの/詳しくないものをインストールしたくなかったのでいろいろ見てたら、Linux/BSD版もあったので、そっちで動かせるんじゃないかと試行錯誤してたら、うまいこと動いてくれたので記録を残しておく。

MacにビルトインのVPNもあるんだからそれを使うのが一番綺麗なんだけど、ビルトインVPNクライアントからの接続方法がわからんかった。。。

ちなみにVPNの対向先はJuniper SSG5。

手順

  1. Cmakeをインストール
  2. ソースをダウンロード & ビルド
  3. ファイアウォールでikedを許可
  4. 接続

cmakeをインストール

ikeはビルドするのにCmakeを使ってるみたいなので、事前にインストールする。手軽にhomebrew使った。

sudo brew install cmake

ソースをダウンロード & ビルド

https://www.shrew.net/download/ike からStableの最新をダウンロード。 展開したら、以下のコマンドを実行していく。インストール先は /usr/local/ にしたけど、

cd Download/ike
cmake -DNATT=YES -DCMAKE_INSTALL_PREFIX=/usr/local/

ファイアウォールでikedを許可

Macのビルトインファイアウォールが有効になっている場合、トンネル接続時のnegotiationがタイムアウトで失敗する。 上記の通りにインストールすると、/usr/local/sbin/ikedが存在すると思うので、これをファイアウォールの許可リストに入れる。

と思ったのだけど、/usr以下はFinderからはそのままでは見えないのね ( ;゚皿゚)ノシΣ フィンギィィーーッ!!! ってなりかけたけど、一時的に移動 -> フォルダへ移動/usrを開いて、サイドバーに追加して事なきを得た。

http://d.hatena.ne.jp/testnoda/20120515/1337069061

問題と解決

問題と解決 1: failed to attach to key daemon

$ ikec -r 'hogehoge.vpn' -a
ii : ## : VPN Connect, ver 2.2.0
## : Copyright 2012 Shrew Soft Inc.
## : press the <h> key for help
>> : config loaded for site 'hogehoge.vpn'
!! : failed to attach to key daemon

ikedを再起動しよう!!!

問題と解決 2: peer config failed

$ ikec -r 'hogehoge.vpn' -a
ii : ## : VPN Connect, ver 2.2.0
## : Copyright 2012 Shrew Soft Inc.
## : press the <h> key for help
>> : config loaded for site 'hogehoge.vpn'
>> : attached to key daemon ...
!! : peer config failed
>> : detached from key daemon

クライアントとデーモンのバージョンが違うとこれがでる。以前にdmgで提供されているパッケージをインストールしていませんか? その場合、/usr/bin/ikecというバイナリが置いてあるのでこいつが邪魔をしてます。上記の通りにインストールしてあれば、正しいikec/usr/local/bin/ikecにあると思うので、/usr/bin/ikecは消しましょう。

どうでもいいけど、/usr/bin/ikecはよくわからんライブラリにリンクが張られているな。なんだろ。

$ otool -L /usr/bin/ikec
/usr/bin/ikec:
    /Users/mgrooms/ike/head/source/libike/ShrewSoftIke.framework/Versions/2.2.0/ShrewSoftIke (compatibility version 2.2.0, current version 2.2.0)
    /Users/mgrooms/ike/head/source/libidb/ShrewSoftIdb.framework/Versions/2.2.0/ShrewSoftIdb (compatibility version 2.2.0, current version 2.2.0)
    /Users/mgrooms/ike/head/source/libith/ShrewSoftIth.framework/Versions/2.2.0/ShrewSoftIth (compatibility version 2.2.0, current version 2.2.0)
    /Users/mgrooms/ike/head/source/liblog/ShrewSoftLog.framework/Versions/2.2.0/ShrewSoftLog (compatibility version 2.2.0, current version 2.2.0)
    /usr/lib/libcrypto.0.9.8.dylib (compatibility version 0.9.8, current version 0.9.8)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 123.0.0)
    /usr/lib/libedit.2.dylib (compatibility version 2.0.0, current version 2.11.0)
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)

問題と解決 3: negotiation timout occurred

ii : ## : VPN Connect, ver 2.2.1
## : Copyright 2013 Shrew Soft Inc.
## : press the <h> key for help
>> : config loaded for site 'hogehoge.vpn'
>> : attached to key daemon ...
>> : peer configured
>> : iskamp proposal configured
>> : esp proposal configured
>> : client configured
>> : local id configured
>> : remote id configured
>> : pre-shared key configured
ii : bringing up tunnel ...
!! : negotiation timout occurred
ii : tunnel disabled
>> : detached from key daemon

ファイアウォールが閉じてると思う。上記の手順でikedを許可しよう。 ちなみにこのケースの場合は/var/log/iked.logにこんなログが出てるはず。

13/09/05 12:48:04 DB : phase1 resend event scheduled ( ref count = 2 )
13/09/05 12:48:14 -> : resend 1 phase1 packet(s) [0/2] 192.168.x.x:500 -> w.x.y.z:500
13/09/05 12:48:24 -> : resend 1 phase1 packet(s) [1/2] 192.168.x.x:500 -> w.x.y.z:500
13/09/05 12:48:34 -> : resend 1 phase1 packet(s) [2/2] 192.168.x.x:500 -> w.x.y.z:500
13/09/05 12:48:44 ii : resend limit exceeded for phase1 exchange
13/09/05 12:48:44 ii : phase1 removal before expire time
13/09/05 12:48:44 DB : phase1 deleted ( obj count = 0 )
13/09/05 12:48:44 DB : policy not found
13/09/05 12:48:44 DB : policy not found
13/09/05 12:48:44 DB : policy not found
13/09/05 12:48:44 DB : policy not found
13/09/05 12:48:44 DB : policy not found
13/09/05 12:48:44 DB : policy not found
13/09/05 12:48:44 DB : removing tunnel config references
13/09/05 12:48:44 DB : removing tunnel phase2 references
13/09/05 12:48:44 DB : removing tunnel phase1 references

それでもうまくいかないときは

log_level debug;

にして、ikedのログをみるのがいいです。

https://www.shrew.net/support/VPN_Bug_Report_Unix