2020年08月11日(火) - 22:21 | カテゴリ:
Linux
数ヶ月前に実施した自宅サーバ刷新に合わせて、録画サーバ構成も大きく見直した。
従来はチューナーにPT2を使っており、必然的にPCIスロッド搭載の自作PCが必須だったが、
今回はUSB接続のPLEXチューナーに変更したので、大きな設備を用いる必要がなくなった。
また、本格的な仮想サーバ基盤をさくらの専用サーバに移設した事もあり、
録画サーバだけの為に場所を取りたく無かった。
また、現行世代のパーツでPCを組もうにも、
PCIスロッドを搭載したマザーボードが皆無なのでパーツ入手性も考慮すると諦める必要があった。
今回は録画サーバの構成紹介であって、
地デジを復号・録画する様な物じゃないのであしからず。
構成は至ってシンプル。母体となるベアボーンPCにPLEXチューナーを接続した。
ベアボーンPCには、ASRock DeskMini A300・ASRock DeskMini 310をチョイス。
筐体が小さくて置き場に困らないのと、デスクトップ用CPUを搭載出来る上、
2.5インチベイが2個あるのが決め手となった。

メイン機(左)は、以前から気になり少しずつ使っていた「foltia ANIME LOCKER」を導入。
サブ機(右)は、従来通りにCentOSを使った独自構成となり、今風のアプリケーションで組んだ。
WebサーバはNginxを使っても良かったのだが、使い慣れていないNginxを使うのも怖かったので、
一番慣れているapacheを採用した。
OS・データ領域はフルSSDにしつつ、録画データ領域はRAID1を組んで冗長化も行った。
ただ、foltiaについてはOSインストール先をRAID1にするのが面倒だった為、
OS専用にM.2-SATAのSSDを積んでシングル構成にした。
foltiaは仮想アプライアンスの様な物なので、
最悪OSが吹っ飛んでも録画データさえ生きていれば再インストールで乗り切れると割り切った。
………
問題だったのは、チューナーフル稼働時にPX-Q3U4の排熱ファン回転だった。
PX-Q3U4はフル稼働した時にチップを冷却する為にファンが搭載されているのだが、
このファンが小口径で相応の回転速度を持っており、
回転振動がチューナーに悪さをしてしまいドロップが発生する様になる。
ドライバをサードパーティの物にするとある程度安定する様になるのだが、
今回は排熱ファンを取り外して物理的に振動を起きなくさせた。
また、ファンを取り外した分を効率的に排熱させる必要があるので、
側面に排熱穴を開けつつチューナーを縦置きする事で対処した。
という事で、改造したPX-Q3U4を使いつつこんな環境で稼働させている。

撮影場所が暗かったので、フラッシュを焚いたら左のファンフィルターが凄い事に (;´Д`)
実際は埃の堆積もほぼ無い。
この状態で3ヶ月以上稼働させているが、独自構築した録画サーバで問題は発生していない。
むしろ、foltiaの方で稀にチューナーを認識しないケースが出ており、
何処かでOS入れ替えかチューナー変更が必要になりそうだった。
今回構築した環境のメリットはなんと言っても小型な所。その上、チューナーが入手しやすいのも追加点となる。
USB接続チューナーは種類が増えてきており、以前話題になったフリ○オもUSB対応の新バージョンが出るらしい。
来年には活躍しそうなサーバなので、今後も上手く運用していきたいと思う。
« 続きを隠す
2020年08月08日(土) - 22:35 | カテゴリ:
Network
“ns-lab BB”の自宅サーバとリモートで動いているVPS・専用サーバを繋ぐ為、
VyOSを使って拠点間IPSecVPNを構築してNW通信が出来る様にしてある。
従来はVPN専用に固定IPプロバイダを契約してIPv4 IPSecVPNを張っていたのだが、
費用とVPN冗長化の課題が出てきたので何とかしようと考えていた。
そんな中『PPPoEで大量に振ってくるIPv6を使えば専用プロバイダいらないのでは!?』
と思い立ったので、IPv6 IPSecVPNへ移行する事にした。
………
そうなると、IPv6アドレスのみ付与したインターフェースでIPSecを張る必要が出てくるのだが、
VyOS v1.2.Xに設定を投入するとこんなエラーが出てきた。
# commit
[ vpn ipsec site-to-site peer 2001:ffff:ffff:ffff::1 tunnel 1 ]
VPN configuration error: IPv4 over IPv6 IPsec is not supported
Warning: Local address 2001:0:0:0::1 specified for peer "2001:ffff:ffff:ffff::1"
is not configured on any of the ipsec-interfaces and is not the
clustering address. IPsec must be re-started after address
has been configured.
|
VyOS公式でもバグ報告が上がっているのだが、優先度低になっており何時直るのか判らない状況。
コレが出来ないとIPv6環境に移行が出来ないのは勿論の事、修正を待って何もしないのもどうかと思ったので、
自力でVyOS内のIPSec設定スクリプトを直してみた。
………
修正箇所は次の通り。スクリプトがperlで書かれていたので読みやすかった。
どうやら、IPv6のみ付与したインターフェースでIPSecを設定しようとすると、
条件判定に引っかかってしまいエラーが出る様だった。
この問題は、VyOSのフォークとなるEdgeRouterでも発生するらしく、
先人の知恵も借りながら次の通りに修正してみた。
修正前:[/opt/vyatta/sbin/vpn-config.pl]
550 # Check remote/local and peer protocol consistency
551 # IPv6 over IPv6 scenario is actually supported by StrongS/WAN,
552 # we do not allow it in this version because of design and QA issues.
553 if (($conn_proto != 6) && ($leftsubnet_proto == 6)) {
554 vpn_die(["vpn", "ipsec", "site-to-site", "peer", $peer, "tunnel", $tunnel],
"$vpn_cfg_err IPv6 over IPv4 IPsec is not supported");
555 } elsif (($conn_proto == 6) && ($leftsubnet_proto != 6)) {
556 vpn_die(["vpn", "ipsec", "site-to-site", "peer", $peer, "tunnel", $tunnel],
"$vpn_cfg_err IPv4 over IPv6 IPsec is not supported");
557 }
|
修正後:[/opt/vyatta/sbin/vpn-config.pl]
550 # Check remote/local and peer protocol consistency
551 # IPv6 over IPv6 scenario is actually supported by StrongS/WAN,
552 # we do not allow it in this version because of design and QA issues.
553 if (($conn_proto != 6) && ($leftsubnet_proto != 0 and $leftsubnet_proto == 6)) {
554 vpn_die(["vpn", "ipsec", "site-to-site", "peer", $peer, "tunnel", $tunnel],
"$vpn_cfg_err IPv6 over IPv4 IPsec is not supported");
555 }
556 if (($conn_proto == 6) && ($leftsubnet_proto != 0 and $leftsubnet_proto != 6)) {
557 vpn_die(["vpn", "ipsec", "site-to-site", "peer", $peer, "tunnel", $tunnel],
"$vpn_cfg_err IPv4 over IPv6 IPsec is not supported");
558 }
|
554行目と557行目は幅の関係で改行しているが実際は1行で書く。
実際の修正箇所は553行目と556行目の判定処理。
この改修を入れると、IPv6 IPSec VPNも設定が通る様になった。
だが、VyOSのアップグレードをすると元に戻る筈なので注意が必要。
そのうち公式修正で直ると思うが、それまではこの改修でお茶を濁そうと思う。
記事を公開した後に、違う不具合も見つけたので修正&追記
自力修正によってIPv6 IPSecVPNの設定が入る様になったが、
IPSecのIKEステータスを表示するとIKE SAが成立しているにも関わらず”down”と表示された。
$ show vpn ike sa | no-more
Peer ID / IP Local ID / IP
------------ -------------
2001:ffff:ffff:ffff::1 2001:0:0:0::1
State IKEVer Encrypt Hash D-H Group NAT-T A-Time L-Time
----- ------ ------- ---- --------- ----- ------ ------
down IKEv2 aes256 sha1_96 2(MODP_1024) no -5640
|
色々とバグっているが、コレの原因は内部処理でハッシュキーが参照出来なくなっている為。
具体的には、VyOSのライブラリでIPv6アドレス判定を10進数でのみ評価しており、
16進数は例外処理に投げ込んでしまう為、コマンド実行時にアドレス不一致で値を取れなくなる。
解消する為には、ライブラリのIPv6判定をちゃんと16進数も評価する様に作れば直る。
ただし、RFC準拠で厳密に判定するとソレだけでライブラリになるので、今回は最低限に留める。
修正前:[/opt/vyatta/share/perl5/Vyatta/VPN/OPMode.pm]
32 sub conv_id {
33 my $peer = pop(@_);
34 if ( $peer =~ /\d+\.\d+\.\d+\.\d+/ ){
35 $peer = $peer;
36 } elsif ($peer =~ /\d+\:\d+\:\d+\:\d+\:\d+\:\d+\:\d+\:\d+/){
37 $peer = $peer;
38 } elsif ($peer =~ /\%any/){
39 $peer = "any";
40 } else {
41 $peer = "\@$peer";
42 }
43 return $peer;
44 }
|
修正後:[/opt/vyatta/share/perl5/Vyatta/VPN/OPMode.pm]
32 sub conv_id {
33 my $peer = pop(@_);
34 if ( $peer =~ /\d+\.\d+\.\d+\.\d+/ ){
35 $peer = $peer;
36 } elsif ($peer =~ /\d+\:\d+\:\d+\:\d+\:\d+\:\d+\:\d+\:\d+/){
37 $peer = $peer;
38 } elsif ($peer =~ /^(\:)?([0-9a-zA-Z]\:){0,8}(\:)?/){
39 $peer = $peer;
40 } elsif ($peer =~ /\%any/){
41 $peer = "any";
42 } else {
43 $peer = "\@$peer";
44 }
45 return $peer;
46 }
|
38~39行目を追加。適当だが、最低限動作するからヨシ!
何処かのタイミングで、修正のフォーラム投稿にチャレンジするのも良いかもしれない。
« 続きを隠す
2020年08月01日(土) - 22:17 | カテゴリ:
雑談
普通のサーバインスタンスは稼働中のKVM鯖とHyper-V鯖を使えば良いが、
仮想ルータや仮想アプライアンスはVMwareの利用が必須となるケースが多い。
今回、今まで手を出していなかった領域として、
アプライアンス系にも手を出そうと思い立ち、
稼働基盤としてVMware ESXiを導入出来ないか構成を練り初めた。
今の所はガチ鯖を組むのではなく、
NUCにthunderboltのNICを増設し、その中にESXiを入れるプランを検討中。
国内だとUSBタイプのNICを増設する事例が多いが、
NUCにはthunderboltが装備されているので、コレを使えないか確認を進めている。
海外フォーラムを見るとQNAPやAKiTiOのNICを増設した事例がある。
可能ならコレを使ってみたいので、予算を確保しつつ情報収集を進めようと思う。