スカイラボ

~ いろいろと興味のあるものを ~

QNAP TS-228A (OpenVPN設定)

外出先から QNAP に VPN 接続したい場合、PPTPOpenVPNL2TP/IPSec を使用することができます。今回は OpenVPN で接続する方法についてまとめてみました
設定環境は以下の構成を例に記述しています。 f:id:goegoen:20180404200238p:plain

QVPN Service のインストール

App Center を開き QVPN Service をインストールします f:id:goegoen:20180404200720p:plain

QVPN Service で OpenVPN の設定

f:id:goegoen:20180404200929p:plain - 「OpenVPN サーバを有効にする」にチェックを入れます
- 「VPN クライアント IP プール」に トンネルで使用する IP アドレスを入力します (今回の環境の場合は 10.8.0.2 - 10.8.0.254)
- 「サーバーポート」に OpenVPN で使用するポートを設定します(通常は1194ですが、変更するとより安全です)
- 「暗号化」は「高」を設定
- 「ネットワークインターフェース」は「自動検出」
- 「 DNS サーバ」は「NASデフォルト」を選択
- 「この接続をリモートデバイスの規定のゲートウェイとして使用します」にチェックを入れるとクライアントから接続の際、全ての通信が OpenVPN 側に流れます。今回、必要な通信のみ VPN 経由としたいので、チェックを外します
- 「圧縮 VPN リンクを有効にする」にチェックを入れます
- 「証明書のダウンロード」をクリックして iPhone や外出先で利用するパソコンからアクセス可能な場所に保存します
- 最後に適用をクリックします

権限設定

権限設定をクリックし「VPN ユーザーの追加」で VPN 用のユーザを作成しておくとより安全です。その際、admin の VPN も外しておくのがよいかと思います。
f:id:goegoen:20180404202821p:plain

クライアント側に設定ファイルの準備

以下を参考にしながら、iPhone 側の設定を行います
iPhoneやiPad (iOS) でOpenVPNを使ってみよう! | OpenVPN.JP

内部ネットワークへルーティング

構成例の 192.168.0.0/24 のネットワークに接続させるために以下の設定を変更します。(公開されている内容ではないため動作の保障はできませんのでご注意ください)

  • ssh で接続する(sshで接続出来る状況になっていない場合は方法を検索してsshログイン出来る状況にしてください)
  • 以下のファイルを修正します。
# vi /etc/init.d/vpn_openvpn.sh

server ${VPN_IP_POOL} 255.255.255.0
push "route 192.168.0.0 255.255.255.0"     <- ここを追加
${VPN_MANUAL_DNS}
  • ファイルを保存後、サービスを再起動します
/etc/init.d/vpn_openvpn.sh restart

QNAP TS-228A (初期設定編)

前回、開梱と設置についてまとめましたが、今回は初期設定編となります。初回の接続方法や RAID のセットアップなどを記載していきます。
QNAP TS-228A (開梱から設置)

f:id:goegoen:20180324015650p:plain

Qfinder のインストール

LAN ケーブルをルータに接続して DHCP で IP アドレスが取得出来ている場合、ルータのログなどからIP アドレスを確認する方法もありますが、面倒な場合は Qfinder というツールをインストールすると QNAP を見つけてくれます。

ユーティリティ - QNAP

DHCP サーバが動いていない環境の場合は、169.254.100.100 に設定されるようですので、直接接続する作業端末側の IP を同じネットワークに設定してブラウザでアクセスすれば設定を変更することができます。

DHCP サーバーがない場合はどのように Turbo NAS にアクセスすればよいですか? - QNAP

  1. スマートインストールガイドを「いいえ」 f:id:goegoen:20180324021019p:plain

  2. 設定する QNAP をクリックして「ログイン」をクリックします
    f:id:goegoen:20180324021149p:plain

  3. ファームウェアのアップデートを実行します f:id:goegoen:20180324021413p:plain

  4. ファームウェアのアップデートが実行された場合は最後に再起動されます。「このページは閉じないでください」と表示されるのでそのまま待ちます f:id:goegoen:20180324021823p:plain

  5. スマートインストールガイドをクリックします f:id:goegoen:20180324022909p:plain

  6. NAS の名前、パスワードを入力して「次へ」 f:id:goegoen:20180324023031p:plain

  7. タイムゾーンと NTP サーバを選択し「次へ」 f:id:goegoen:20180324023251p:plain

  8. スタティック IP アドレスを使用する場合はチェックを入れて設定後「次へ」 f:id:goegoen:20180324023526p:plain

  9. ファイル転送サービスの簡易選択を必要に応じて行い「次へ」 f:id:goegoen:20180324023810p:plain

  10. ディスクのボリュームタイプを選択します
    f:id:goegoen:20180324024022p:plain f:id:goegoen:20180324025349p:plain
    ボリュームタイプ
    静的ボリューム :一番パフォーマンスが出る(スナップショット機能は使えなくなる)
    シックボリューム:ボリュームサイズを後から変更できるなどの柔軟性を持つ。ボリュームも事前に割り当てられているので性能もそこそこ、スナップショットも取得できる
    シンボリューム:ボリュームの領域を割り当てずに使用するため利用効率が高まるボリューム。ただし事前割当をしていないため性能に影響する

  11. 設定を確認して「適用」
    f:id:goegoen:20180324031018p:plain

  12. 確認をクリック
    f:id:goegoen:20180324031126p:plain

  13. 設定が終わるまで待ちます f:id:goegoen:20180324033007p:plain

設定が終われば初期設定は完了です

QNAP TS-228A (開梱から設置)

自宅の NAS を買い換えようと調べると、QNAP に新しいモデルが出ていたので、買ってみました。
TS-228A とディスクはケチって、SEAGATE の IronWolf NAS 4TB x2本を購入しました。

f:id:goegoen:20180323235522p:plain

保証書関連

今回、本体もディスクも Amazon で購入したので、保証書関連の整理をしました。

開梱

TS-228A の箱をあけると、本体のほかに RJ-45 ケーブル(1.5m位)・電源ケーブル・AC アダプター・ハードディスクインストールキット・インストールガイドが入っていました。
f:id:goegoen:20180324005611p:plain

ディスクの搭載

詳細は添付のマニュアルに書いていますが、簡単に記載すると本体の底に手で回せるネジがついていますので、それを外します。
ネジを外して本体をスライドするとディスクが格納できるスペースが現れますので、そこにディスクを搭載します。ディスクを搭載後、付属のディスクインストールキットをサイドにとりつけます。(取り付けイメージは以下となります)

f:id:goegoen:20180324011851p:plain

最後に、本体を取り付けて、ネジを締めて完成です。

ケーブルの接続と設置

電源ケーブルや LAN ケーブルを接続し設置後に電源ボタンを押して電源をいれます。

Raspberry Pi インストール後の作業を自動化する(Ansible 準備編)

Raspberry Pi を色々触っていくうちに設定を変更した設定ファイルが分からなくなったり、管理できなくなっていることありませんか?

もしくは、再インストールの際に過去のメモを参照したり Web で検索しながらインストール後のセットアップすることに辟易としていませんか?
f:id:goegoen:20180310230845p:plain

インストール関連やファイルの管理は Ansible で管理して Git にアップしておけばファイル管理できて楽ちんかも!ということでスタートです。

本ページで使用している機器の情報は 環境情報 を参考にしてください。

ssh 公開鍵認証

Ansible でパスワードを省略させるため ssh 公開鍵認証を使います。
公開鍵認証の設定がされていない場合は以下を参考に設定をしてください。

ssh 公開鍵認証

Homebrew のインストール確認

Mac で Ansible をインストールするために Homebrew を使用してサクッとインストールしますので、インストールされていない場合には以下を参考にインストールしておきます。

brew.sh

$ brew -v
Homebrew >1.2.0 (shallow or no git repository)
Homebrew/homebrew-core (no git repository)

Ansible のインストール実行

以下のコマンドでインストールします。

$ brew install ansible

2018/3月時点で実行すると以下のバージョンがインストールされました。

$ ansible --version
ansible 2.4.3.0

Ansible を使用した疎通確認

Ansible hosts ファイルの作成

Raspberry Pi にAnsible を使用して疎通確認を実行します。
~/.ssh/config/etc/ssh/ssh_config を使用して ssh の接続先 HOST を別途定義している場合は定義している名前を登録します。

実行例
$ mkdir -p ~/ansible/raspberrypi && cd $_

記述例
$ vi production-hosts
[raspberry]   # グループ名を定義
rasp1            # 接続先ホスト名を定義(/etc/ssh/ssh_config や ~/.ssh/configと記述を合わせる)

確認

以下のコマンドで ping による疎通確認を行います。

$ ansible -i production-hosts raspberry -m ping
rasp1 | SUCCESS => {
    "changed": false,
    "ping": "pong"

以上で Ansible で Raspberry Pi を操作可能な状況になります。 次回以降で Raspberry Pi の設定変更を実施していきます。

ssh パスワードなしで Raspberry Pi にログインする

Raspberry Pissh でログインする際に毎回パスワードを入力するのは面倒なので、ssh 公開鍵認証するようにしたいと思います。

f:id:goegoen:20180310225757p:plain

本ページで使用している機器の情報は 環境情報 を参考にしてください。

ssh 公開鍵認証

ssh 鍵の作成

ssh の接続元で以下のコマンドを実行して鍵を作成します。 公開鍵は接続先によって鍵を使い分けることが良しとされているので、コメント の箇所に接続先のヒントとなるような情報を記載しておくと管理しやすいです。(当然、鍵作成の際にファイル名も変更する必要がありますが)
また、今回は暗号強度とパフォーマンスが良いと言われている暗号化方式 ed25519 を使用しています。

$ ssh-keygen -t ed25519 -C "コメント"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/user/.ssh/raspberrypi/id_ed25519): [鍵の格納場所やファイル名]
Enter passphrase (empty for no passphrase):  [パスフレーズ]
Enter same passphrase again: [パスフレーズ]
Your identification has been saved in /Users/user/.ssh/raspberrypi/id_ed25519.
Your public key has been saved in /Users/user/.ssh/raspberrypi/id_ed25519.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx コメント
The key's randomart image is:
+--[ED25519 256]--+
|        ...........  |
|        ...........  |
|        ...........  |
|        ............ |
+----[SHA256]-----+

ssh 公開鍵のコピー

作成した ssh 公開鍵を Raspberry Pi にコピーします。
ssh-copy-id が使える場合は楽にコピーすることができます。

$ ssh-copy-id -i [公開鍵のファイルパス] [ユーザ名]@[raspberry pi の IP アドレス or ホスト名]

実行例
$ ssh-copy-id -i ~/.ssh/raspberrypi/id_ed25519.pub pi@raspberrypi.local
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "id_ed25519_raspberrypi.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
pi@raspberrypi.local's password:  [パスワード(デフォルトは raspberry)]

Number of key(s) added:        1

Now try logging into the machine, with:   "ssh 'pi@raspberrypi.local'"
and check to make sure that only the key(s) you wanted were added.

ためしに、Raspberry Pissh でログインし確認すると .ssh ディレクトリの作成と authorized_keys の作成、パーミションの変更(600)を自動で実行できていることが確認できます。

$ ls -l ~/.ssh
total 4
-rw------- 1 pi pi 149 Mar 10 15:22 authorized_keys

疎通確認

ssh 接続時にパスワード無しでログインできるかを確認します。

$ ssh -i [秘密鍵のファイルパス] [ユーザ名]@[raspberry pi の IP アドレス or ホスト名]

実行例
$ ssh -i ~/.ssh/raspberrypi/id_ed25519 pi@raspberrypi.local

ssh 接続設定

鍵の名前を変更した場合、ssh-i オプションを付与するのが面倒なのでコンフィグファイルに記載します。
システム全体の設定ファイル(/etc/ssh/ssh_config) と ユーザ設定ファイル(~/.ssh/config) で設定可能で、ユーザ設定が優先されます。

記入例
Host rasp1
    HostName raspberrypi.local
    User pi
    IdentityFile ~/.ssh/raspberrypi/id_ed25519
    Port 22
    TCPKeepAlive yes
    IdentitiesOnly yes

上記のように記載しておくと以下のコマンドで ssh 接続できます。

$ ssh rasp1

Mac OS X で Raspberry Pi Zero WH の初期セットアップ(モニター,キーボード不要)

2018年1月に「Raspberry Pi Zero WH」が発売されたので購入しました。スイッチサイエンスで2/2に注文して4日後には届いたので現状はそれほど入手困難ではないです。

f:id:goegoen:20180209203443p:plain

Raspberry Pi Zero W」との違いはGPIOピンがはんだ付けされているという点なので、セットアップなどは先人方の情報がそのまま役に立ちます。が、自分のメモも兼ねて流れを残しています。
今回の内容は Mac OS XRaspberry Pi Zero の OS 書き込み時に無線 LAN の設定+ ssh を有効化しモニターやキーボードが無い環境で Raspberry Pi を操作する方法です。

www.switch-science.com

環境情報

セットアップするためにラズパイ本体以外に準備したものは以下です。

項目 内容 備考
作業端末 Mac Book Pro (OS:High Sierra 10.13.3)
MicroSD 16GB 必要に応じてUSB変換アダプター
無線LAN ラズパイを接続する無線LAN環境
ラズパイOS RASPBIAN STRETCH LITE November 2017 ダウンロードサイト Download Raspbian for Raspberry Pi

OSのダウンロード

ダウンロードサイトからOSをダウンロードします。今回は CLI で利用するので「RASPBIAN STRETCH LITE」をダウンロードしました(zipは時間がかかるので、 µTorrent などでダウンロードすると速いです)
ダウンロードしたファイルのハッシュ値を確認することで正しくダウンロードが行えたか確認できます(ここでは Downloads ディレクトリにダウンロードしています)

$ cd ~/Downloads

$ shasum -a 256 ~/Downloads/2017-11-29-raspbian-stretch-lite.zip
e942b70072f2e83c446b9de6f202eb8f9692c06e7d92c343361340cc016e0c9f - 

$ unzip 2017-11-29-raspbian-stretch-lite.zip
Archive:  2017-11-29-raspbian-stretch-lite.zip
  inflating: 2017-11-29-raspbian-stretch-lite.img

MicroSD へ OS イメージの書き込み

MicroSD の接続

MicroSD を USB 変換アダプターに接続し、それを Mac Book へ接続します

認識確認

ターミナルを起動して MicroSD カードが認識しているか確認します(ここでは、 /dev/disk2 が SD カードです)

$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *121.3 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk1         121.1 GB   disk0s2

/dev/disk1 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +121.1 GB   disk1
                                 Physical Store disk0s2
   1:                APFS Volume Macintosh HD            80.4 GB    disk1s1
   2:                APFS Volume Preboot                 25.0 MB    disk1s2
   3:                APFS Volume Recovery                509.8 MB   disk1s3
   4:                APFS Volume VM                      2.1 GB     disk1s4

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.5 GB    disk2
   1:             Windows_FAT_32 NO NAME                 15.5 GB    disk2s1

フォーマット

MicroSDMS-DOS(FAT32) でフォーマットします。
以降の作業は誤ると OS 領域が破損しますので対象ディスクを誤らないように注意して実行します。

$ diskutil eraseDisk MS-DOS RASPBERRYPI /dev/disk2
Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for partitions to activate
Formatting disk2s2 as MS-DOS (FAT) with name RASPBERRYPI
512 bytes per physical sector
/dev/rdisk2s2: 29806112 sectors in 1862882 FAT32 clusters (8192 bytes/cluster)
bps=512 spc=16 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=411648 drv=0x80 bsec=29835264 bspf=14554 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk2

MicroSD のアンマウント

OSイメージ書き込み前に MicroSD をアンマウントします。(disk2 のマウントされている領域をアンマウントします。ここでは /dev/disk2s2 がマウントされているのでアンマウントします)

$ df -h |grep /dev/disk2
/dev/disk2s2                                         14Gi  1.1Mi   14Gi     1%       0                   0  100%   /Volumes/RASPBERRYPI

$ diskutil umount /dev/disk2s2
Volume RASPBERRYPI on disk2s2 unmounted

$ df -h |grep /dev/disk2
 -> 表示されないことを確認する

OSイメージの書き込み

フォーマットしたディスクにOSイメージを書き込みします。

$ sudo dd if=2017-11-29-raspbian-stretch-lite.img of=/dev/disk2 bs=1m
Password:
1772+0 records in
1772+0 records out
1858076672 bytes transferred in 216.856192 secs (8568244 bytes/sec)
      216.89 real         0.00 user        14.00 sys

ssh ファイルの作成

raspbian 起動時に ssh サービスが起動するようにファイルを作成します。

$ cd /Volumes/boot

$ touch ssh

無線 LAN 設定ファイル作成

raspbian 起動時に無線 LAN が起動するように設定ファイルを作成します。psk をハッシュ値で記載する場合は MacOS の場合以下のようなサイトでハッシュ値を出すのがお手軽です。
Wireshark · WPA PSK Generator

$ vi wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="SSIDを入力"
    psk=ハッシュ値(平文の場合は「"(ダブルクォート)」で囲む)
}

OS起動

MicroSD カードをアンマウントしてRaspberry Pi 本体にカードを挿入後、電源ケーブルを接続しブートさせます

$ cd /

$ diskutil umount /dev/disk2s1

疎通確認 & ssh 接続

ping で名前解決が行えているか確認し疎通が行えていることを確認後、ssh で接続する

$ ping raspberrypi.local

$ ssh pi@raspberrypi.local
 -> pi ユーザの初期パスワードは raspberry でログインできます

以上で初期セットアップが完了です。次回以降で固定IPアドレスの設定を行います。