カテゴリー
PC

US配列のキーボードを新しくいくつか買ってみたメモ。

会社支給のパソコンが複数台になってくると、いろいろと困ることがありまして。

  • Fnキーが左端にない。なぜCtrlキーが内側にあるんだ。(ThinkPad)
  • @キーの周辺が小さくなっている。(ThinkPad)
  • Fnキーロックがかかっていないと、F2キーを押したと思ったら音量が変わってくる。そしてFnキーのロック状態はFnキーを触っただけで変化する。(Surface)
  • そもそもプログラミングやUNIXを使っている時は英語配列モードに頭の中が切り替わるので、viを使っていると頻繁に誤爆する。(JIS配列で交換できない会社PCの宿命)

ちなみに出たばっかりのHappy Hacking Keyboard Professional HYBRID Type-S 英語配列/墨は気になったものの、チルダの位置が気に食わなくて買えませんでした。

というわけで、USB接続に英語キーボードで手軽なものがないかを物色した結果、最近いくつかのキーボードを買ってきた。

Majestouch Convertible 2 Tenkeyless 赤軸・テンキーレス・英語 US ASCII

Majestouch Convertible 2 Tenkeyless 黒軸・テンキーレス・英語 US ASCII
公式ページから画像をお借りしました。

キー配列や触り心地はとても標準的で使いやすい。しかもBluetoothで4台とペアリングしてすぐに切り換えられる優れもの。
ただし、そのままの状態だと、静かなオフィスではカチャカチャ底打ち音がうるさくて目立ってしまうことこの上ない。

そのため、静音リング(5mm位のゴムの輪っか)を全てのキートップを外して付けてやると周囲の音を気にせず使えるようになったので職場に持って行って使用中。

Majestouch Convertible 2 Tenkeyless 黒軸・テンキーレス・英語 US ASCII

Majestouch Convertible 2 Tenkeyless 黒軸・テンキーレス・英語 US ASCII
公式ページから画像をお借りしました。

上の赤軸とキー配置は全く一緒。
赤軸だと周囲に音を気にしながら使用することになったので、黒軸だとちょっと軽減されるかなと思って購入したものの、思ったほど音の大きさは変わりませんでした。

体感的な音のうるささは、赤軸+静音リング < 黒軸 ≦ 赤軸 と言ったところ。現在は、自宅のPCにつなげて利用中。

Keychron K1 Wireless Mechanical Keyboard (Version 3)

公式サイトから画像をお借りました。

派手派手に見えるかもしれませんが、バックライトは止められるので特に気になりません。

メカニカルキーボードは、ある程度の高さが必要だったのが、このキーボードはスイッチの構造を改善することでとても薄っぺらく出来上がっています。
ノートパソコンみたいな使い勝手でメカニカルっぽいキーボードを使いたい人にはお勧め。めちゃくちゃキータッチが軽いので、メカニカルキーボード原理主義者みたいな人には物足りないかも。

とりあえず写真をペタペタ貼っておきます。

惜しむらくは、付属のUSBケーブルだとノートパソコンの手前に置いたりすると邪魔になること。こればっかりはL字のケーブルに変えるなどすれば良いけど。。。

カテゴリー
Windows

Windows 10 Device Guardがかかっている環境でVirtualBox VMを起動出来ないのを回避した件。

Windows 10 Enterpriseの強力なセキュリティ機能の一つであるDevice Guardがオンになっている環境だと、VirtualBoxで仮想マシンを作成後起動するときに以下のようなメッセージを吐いて起動しなくなりました。

Call to WHvSetupPartition failed: ERROR_SUCCESS (Last=0xc000000d/87) (VERR_NEM_VM_CREATE_FAILED).
終了コード : E_FAIL (0x80004005)
コンポーネント: ConsoleWrap
インターフェース: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

巷のブログを見ていると、基本的にはHyper-Vを止めれば良いよ、という情報が多いですが某環境だとグループポリシーでガチガチに固まっている模様。

で、解決策ですが、ゲストOSが32bitでも良ければ以下のやり方。

仮想マシンのアクセラレーションから、「仮想化支援機能」の”ネステッドページングを有効化”をオフにする。

これで、Device Guardが行うIntegrity Checkが禁止しているNested Virtualizationの動作をしなくなるので、VirtualBoxの仮想マシン起動が邪魔されずに済むというわけ。

もちろんハードウェアによる仮想化支援が働かなくなるので、特にメモリ周りのアクセスが遅くなるけども諦めるべし。

カテゴリー
FreeBSD

FreeBSDでLet’s Encryptな証明書でSoftEtherサーバを立てる

お出かけ先のWindows PCやAndroidスマホから、SSL-VPNを使いたいことが多々ありまして、VPNサーバを立ててます。

使い方として多いのは、カフェやファミレスのフリーWifiを生で使いたくないときや、腐ったWebプロキシ(だがSSLは空いている)を強制されてしまったときとか。

SoftEtherを選んでいるのは?

まず腐ったWifi環境を通過しないと行けないので、IPsecベースのものは使えないことが多いです。PPTP等もWebプロキシは越えられないので、SSLベースで構成されているVPNソフトウェアとなります。

あと、Windows PCに余計なソフトウェアを入れずに使えることも大事です。OpenVPNクライアントとか入れてたら、明らかにVPN使っているな感が出てしまって穏便な感じから遠ざかってしまいます。その点、SoftEtherでSSTPを喋らせておくと、Windowsの標準的なVPN設定だけで接続を構成出来ます。これ、すごい大事。

Androidスマホだと、SSTP VPN Clientってソフトを入れてます。色んなVPNソフトウェアがあるんですが、逆に通信を盗聴されるなんていうマルウェアもどきなものもあるのでこの辺は慎重に選ぶ必要がありますが。

FreeBSDベースを選んだわけは?

FreeBSDを使いたいから。いや、SoftEtherがpkgの中に入っているからインストールが楽なんですよ。
海外だとOpenVPNが主流なのもあって、なかなかパッケージマネージャの対象になっているのが少ないんですよね。

FreeBSDをインストールする

私は家に余ってたHyper-V上の仮想マシンに、ISOイメージからFreeBSDをインストールしました。

ここでのポイントは仮想NICを2個接続しておくことです。
VPNトンネル終端として受け付けるためのインターフェースと、カプセル化を解除したパケットを出すためのインターフェースは別である必要があります。
(画像はhr0とhr1の2つのNICが繋がっているの図)

OSインストールが終わったら、pkgコマンドでSoftEtherをインストールしておきます。

pkg install softether

インストールが終わったら、rc.confに自動起動の設定をしておきます。

vi /etc/rc.conf
softether_server_enable="yes"
softether_bridge_enable="yes"

SoftEtherを構成する

FreeBSDのシェル上で、vpncmdコマンドを使ってずっと構成しても委員ですが、、、、さすがに分かりにくい場合が多いので、適当なWindowsマシンにSoftEther管理ツールを入れてGUIで設定するのをおすすめします。
※初回設定したときは特に画面キャプチャも取らずに1年くらい前にやったのでもううろ覚えです。

SoftEther VPNサーバ管理マネージャの接続画面
新しい接続設定からVPNサーバのIPアドレスを指定して接続できる。
※初回接続時はパスワードの設定を求められる
SoftEther VPNサーバ管理マネージャのメイン画面
SSTPの設定は画面下部のOpenVPN/MS-SSTP設定から

ローカルブリッジは、外側がhr0で、内側がhr1だと下画面のような設定になる。(外に持ち出したPC等インターネット上からはhr0に着信する場合)

証明書周りは初期設定ウィザードで一度設定してもらっても良いですが、この後Let’s Encryptで発行したもので置き換えるのでどっちでも良いです。

Let’s Encryptの導入と証明書作成

Let’s Encryptで証明書を発行し、定期的に更新するためにcertbotを利用します。

pkg install py36-certbot

で、certbotを使って証明書を発行してもらいます。
※初回実行時はもっとLet’s Encryptアカウントの設定とかいろいろあった気がします。(が、このブログを書いている時はその当時の操作ログが見つからないので割愛)

# certbot-3.6 certonly

Saving debug log to /var/log/letsencrypt/letsencrypt.log
How would you like to authenticate with the ACME CA?
 1: Spin up a temporary webserver (standalone)
 2: Place files in webroot directory (webroot)
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
Plugins selected: Authenticator standalone, Installer None
Please enter in your domain name(s) (comma and/or space separated)  (Enter 'c' to cancel):  vpn.example.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for vpn.example.com
Waiting for verification…
Cleaning up challenges
IMPORTANT NOTES:
 Congratulations! Your certificate and chain have been saved at:
 /usr/local/etc/letsencrypt/live/vpn.example.com/fullchain.pem
 Your key file has been saved at:
 /usr/local/etc/letsencrypt/live/vpn.example.com/privkey.pem
 Your cert will expire on 2020-05-09. To obtain a new or tweaked
 version of this certificate in the future, simply run certbot
 again. To non-interactively renew all of your certificates, run
 "certbot renew"
If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

# 

Let’s Encryptの証明書をSoftEtherに設定する

さて、証明書を発行してもそのままではSoftEtherは利用出来ません。Apache HTTPd Serverやnginxだとcertbotが証明書を配してサービスの再起動までセットで対応してくれるのだと思いますが、さすがにSoftEtherまでは対応していません。

SoftEther VPNサーバ管理マネージャのGUI上から手動で証明書を設定しても良いですが、それは更新忘れが必ず発生します。なので、自動化します。

vi renew_cert_softether.sh

#!/bin/sh
certbot-3.6 renew
vpncmd localhost:5555 /server /password:P@ssw0rd /CMD ServerCertSet /LOADCERT:/usr/local/etc/letsencrypt/live/vpn.example.com/fullchain.pem /LOADKEY:/usr/local/etc/letsencrypt/live/vpn.example.com/privkey.pem

まぁ、見たままですが、

  1. certbotで証明書を更新する (renew)
  2. vpncmdで、SoftEtherのサービスにSSL証明書を読み込ませる (LOADCERT&LOADKEY)

といった流れで実行させています。

おまけ: Windows 10でのSSTP VPNセットアップ

VPNの種類で、”Secure Socket トンネリング プロトコル (SSTP)”を選んで、ホスト名、ユーザ名、パスワードを入れるだけ。お手軽。