CentOS7でOpenVPN Clientをsystemctlで起動
需要の程は分かりませんが、手元で利用しているOpenVPN起動設定をメモ。
1. OpenVPNのconfigを /etc/openvpn/client/client.ovpn へ作成する
内容は、インターネットで幾らでも出てくるので省略
ただし注意点として、設定ファイル中で証明書などのファイルを指定する場合は絶対パスで指定すること
2. /etc/systemd/system/openvpn-client.service へ次の内容のファイルを作成(root権限必須)
[Unit]
Description=OpenVPN Client
After=network.service
[Service]
Type=simple
ExecStart=/usr/sbin/openvpn /etc/openvpn/client/client.ovpn
[Install]
WantedBy=multi-user.target
3. systemctl daemon-reload を実行
4. systemctl start openvpn-client で起動
5. systemctl enable openvpn-client で自動起動有効化
以上でsystemctl経由でOpenVPNをClientとして自動起動できる
FMラジオ放送の音質(ビットレート換算)
試しにFMラジオ放送の音質をビットレートの観点から計算してみた。
ビット深度
オーディオのデジタイジングによると
ビットデプス |
ダイナミックレンジ |
---|---|
8 bit |
48 dB |
16 bit |
96 dB |
24 bit |
144 dB |
32 bit |
192 dB |
ダイナミックレンジ | 音声/音楽 | IT用語辞典 | 日立ソリューションズによると
FM放送のダイナミックレンジは 60 dB 程度なので、
換算ビット深度は 60 dB ÷ 48 dB × 8 bit = 10 bit
サンプリング周波数
によるとFM放送は15 kHzで制限しているので、
換算サンプリング周波数は 15 kHz × 2 = 30 kHz
ビットレート
FM放送はステレオなので、
換算ビットレートは 10 bit × 30000 Hz × 2 = 600000 bit/秒 = 600 kbps
(あくまで無圧縮のビットレートで、MP3の様な圧縮音源のビットレートではない)
CD音質が 16 bit × 44100 Hz × 2 = 1411200 bit/秒 = 1411.2 kbps
なので、それと比べると情報量は 43% 程度しかないことになる。
(厳密にはCDも 20kHz でカットしているのでちょっと違うけど)
実際にはFM搬送波に乗せる際に何らかの処理が入る可能性はあるけど、
理屈上はこの程度で、これを越えることはないはず。
結論
無圧縮の情報量は思ったより少ない。
(この程度でも超高音質放送をしない限り、充分実用的ではある)
もし仮にFM放送を録音したい場合は無圧縮で16bit/32kHzあれば十分ということ。
HDDの完全削除
時々HDDの消去を頼まれるのでメモ。Linux上でdd
コマンドを使って消去する。
まずはfdisk
コマンドで消去対象を確認する。/dev/sdaを消去したい場合、入力ファイルは/dev/zero、出力ファイルは/dev/sdaにして実行するだけ。ブロックサイズは10Mとかにしておけば結構なスピードで消去できる。
# fdisk -l # dd if=/dev/zero of=/dev/sda bs=10M
これでしばらく待てば通常の復元ソフトでは読めなくなる。残留磁気が気になる場合は、さらに
# dd if=/dev/urandom of=/dev/sda bs=10M # dd if=/dev/zero of=/dev/sda bs=10M
とでもやれば。
CentOS7にOpenVPNインストール
参考にしたページ(というより、この3ページを見て作業した方がわかりやすいと思う)。
- http://qiita.com/IK12_info/items/bcf695460363bae87eb9
- http://centossrv.com/openvpn.shtml
- http://yamatamemo.blogspot.jp/2014/01/easy-rsa-3.html
CentOS7にOpenVPNをインストールしたので備忘録として記録。rpmbuildなんかしなくてもrpmパッケージが公式で配布されているのだけれども、せっかくなので手元でrpmを生成してインストールする。
途中でrpmbuildを使うのでrpmdevtoolsとyum-utilsと念のためgcc(デフォルトでは入っていないことがある)をインストールして、rpmdev-setuptreeコマンドを実行する。これでrpmbuildが使用可能。
# yum install rpmdevtools yum-utils gcc-c++ # rpmdev-setuptree
次はOpenVPNをインストール
# yum -y install openssl-devel lzo-devel pam-devel # wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.5.tar.gz # rpmbuild -tb --clean openvpn-2.3.5.tar.gz # yum -y localinstall ~/rpmbuild/RPMS/x86_64/openvpn-2.3.5-1.x86_64.rpm # rm -f ~/rpmbuild/RPMS/x86_64/openvpn-* # rm -f openvpn-2.3.5.tar.gz
次はeasyrsa3をダウンロードして認証局を構築する。まずはダウンロードして/etc/openvpn
へコピー。
# wget https://github.com/OpenVPN/easy-rsa/archive/master.zip # unzip master.zip # cp -r easy-rsa-master/easyrsa3/ /etc/openvpn/ # rm -rf easy-rsa-master/ # rm -f master.zip
init-pkiで認証局を初期化した後、build-caで認証局を作成する(途中でPEMパスフレーズを聞かれるので、何でも良いから4文字以上入力する)。その後、build-server-fullで秘密鍵の作成・署名を行う。パスワードは要らないのでnopassオプションを指定する。さらにgen-dhでDHパラメータを生成する。
# cd /etc/openvpn/easyrsa3/ # ./easyrsa init-pki # ./easyrsa build-ca # ./easyrsa build-server-full server nopass # ./easyrsa gen-dh
証明書廃止リストがあった方が便利なので、いったんクライアントを作成してすぐに廃止し、証明書廃止リストを作成する。
# ./easyrsa build-client-full dummy nopass # ./easyrsa revoke dummy # ./easyrsa gen-crl
作成した諸々のファイルをコピーする。認証局の証明書はpki/ca.crt
にあり、pki/private
に秘密鍵、pki/issued
に証明書があるのでコピー。ちなみに、.crtは証明書、.keyは秘密鍵ファイル。
# cp ./pki/ca.crt /etc/openvpn/ # cp ./pki/issued/server.crt /etc/openvpn/ # cp ./pki/private/server.key /etc/openvpn/ # cp ./pki/dh.pem /etc/openvpn/ # cp ./pki/crl.pem /etc/openvpn/ # chmod o+r /etc/openvpn/crl.pem
OpenVPNを設定する。
# openvpn --genkey --secret /etc/openvpn/ta.key # cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn/ # vi /etc/openvpn/server.conf
OpenVPN設定ファイルが開くので設定を一部変更。この辺を書き換える。crl-verify crl.pem
は追記する。
dh dh.pem tls-auth ta.key 0 # This file is secret user nobody group nobody log-append /var/log/openvpn.log crl-verify crl.pem
OpenVPNログローテーション設定
# vi /etc/logrotate.d/openvpn /var/log/openvpn.log { missingok notifempty sharedscripts postrotate systemctl restart openvpn 2>&1 > /dev/null || true endscript }
手元の環境ではfirewalldではなく、(あまりよくないけど)iptablesを使っているのでiptables設定。
# vi /etc/sysconfig/iptables # VPNサーバーからの送信を許可 iptables -I OUTPUT -o tun+ -j ACCEPT iptables -I FORWARD -o tun+ -j ACCEPT iptables -I INPUT -i tun+ -j ACCEPT
# vi /etc/rc.d/init.d/openvpn echo 1 > /proc/sys/net/ipv4/ip_forward
OpenVPN起動
# systemctl start openvpn.service # systemctl enable openvpn.service
CentOS6.4 のloopデバイス追加
squashfsを使ってファイルをマウントしているとloopデバイスが足りなくなったので追加した。
/etc/udev/makedev.d/50-udev.nodes に
loop8 loop9 loop10 loop11 loop12 loop13 loop14 loop15
みたいに記述する。めんどくさいのでコマンドで
# for i in $(seq 8 255); do echo "loop $i" >> /etc/udev/makedev.d/50-udev.nodes
で作成
Linux raid(CentOS 6.4)のHDD交換
HDDを入れ替えたい事情があったのでraidのHDDを交換。
とりあえず入れ替え前の状態を確認
# cat /proc/mdstat Personalities : [raid1] md2 : active raid1 sdb3[3] sda3[2] 1875233664 blocks super 1.2 [2/2] [UU] md0 : active raid1 sdb1[2] sda1[1] 511936 blocks super 1.0 [2/2] [UU] md1 : active raid1 sda2[1] sdb2[2] 77571968 blocks super 1.1 [2/2] [UU] bitmap: 1/1 pages [4KB], 65536KB chunk unused devices: <none>
ここで/dev/sdbを抜いてHDDを交換する。/dev/md0 から /dev/sdb1 を削除する場合、
# mdadm --manage /dev/md0 --fail /dev/sdb1 # mdadm --manage /dev/md1 --fail /dev/sdb2 # mdadm --manage /dev/md2 --fail /dev/sdb3
で故障状態にした上で、
# mdadm --manage /dev/md0 --remove /dev/sdb1 # mdadm --manage /dev/md1 --remove /dev/sdb2 # mdadm --manage /dev/md2 --remove /dev/sdb3
で削除する。その後、ホットスワップ非対応のPCを使用しているので
# shutdown -h 0
でシャットダウンしてHDDを交換する。
交換後、fdiskで/dev/sdaのパーティション構成をそっくりそのまま/dev/sdbに作成する。まずは/dev/sdaを確認
# fdisk -u /dev/sda コマンド (m でヘルプ): p ディスク /dev/sda: 2000.4 GB, 2000398934016 バイト ヘッド 255, セクタ 63, シリンダ 243201, 合計 3907029168 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 4096 bytes / 4096 bytes ディスク識別子: 0x00001b3f デバイス ブート 始点 終点 ブロック Id システム /dev/sda1 * 64 1024063 512000 fd Linux raid 自動検出 パーティション 1 は、シリンダ境界で終わっていません。 /dev/sda2 1024064 156299327 77637632 fd Linux raid 自動検出 /dev/sda3 156299328 3907029167 1875364920 fd Linux raid 自動検出 コマンド (m でヘルプ): q
/dev/sdaの構成が分かったので/dev/sdbを同じ構成で作成。
# fdisk -u /dev/sdb コマンド (m でヘルプ): p ディスク /dev/sda: 2000.4 GB, 2000398934016 バイト ヘッド 255, セクタ 63, シリンダ 243201, 合計 3907029168 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O size (minimum/optimal): 4096 bytes / 4096 bytes ディスク識別子: 0x00001b3f デバイス ブート 始点 終点 ブロック Id システム コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本パーティション (1-4) p パーティション番号 (1-4): 1 最初 セクタ (63-3907029167, 初期値 64): 64 Last セクタ, +セクタ数 or +size{K,M,G} (64-3907029167, 初期値 3907029167):1024063 コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本パーティション (1-4) p パーティション番号 (1-4): 2 最初 セクタ (63-3907029167, 初期値 1024064): 1024064 Last セクタ, +セクタ数 or +size{K,M,G} (1024064-3907029167, 初期値 3907029167):156299327 コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本パーティション (1-4) p パーティション番号 (1-4): 3 最初 セクタ (63-3907029167, 初期値 156299328): 156299328 Last セクタ, +セクタ数 or +size{K,M,G} (156299328-3907029167, 初期値 3907029167):3907029167 コマンド (m でヘルプ): t パーティション番号 (1-4): 1 16進数コード (L コマンドでコードリスト表示): fd コマンド (m でヘルプ): t パーティション番号 (1-4): 2 16進数コード (L コマンドでコードリスト表示): fd コマンド (m でヘルプ): t パーティション番号 (1-4): 3 16進数コード (L コマンドでコードリスト表示): fd コマンド (m でヘルプ): w
パーティションを交換前のHDDと同じ容量で作成できたので、とりあえずブートローダだけは再構築する。
# mdadm --manage /dev/md0 --add /dev/sdb1
でraidにHDDを追加して、
cat /proc/mdstat
で、確認。再構築が完了したらブートローダーをセットするためにgrubシェルから作業する。
# grub > root (hd1,0) > setup (hd1) > root (hd0,0) > setup (hd0)
hd1は新しく追加したHDD、hd0は元々あったHDD。これをしておかないとHDDが壊れたときに起動しなくなる。
# mdadm --manage /dev/md1 --add /dev/sdb2 # mdadm --manage /dev/md2 --add /dev/sdb3
これであとはのんびり再構築を待つだけ。