strongSwanのモダンな方法を使ってVPN環境構築してみた

IKEv2、公開鍵認証、仮想IP使用、Roadwarriorシナリオ。

スマホはAndroid版アプリを使用して接続する。

ネット上にstrongSwanの使い方が載ってる記事は結構あるけど、strokeを使う古い方法のものが多かったので、viciを使った方法で書いてみた。

strongSwanには、モダンなインターフェースである「vici」と、 古いインターフェースである「stroke」の2つのインターフェースが用意されている。現在はviciの方が好ましい(preferred)とされている。

後で時間があれば、クライアントがPCの場合とか、証明書の作成方法とか、もっと詳しく書いていきたいな。

構成図

こんな感じかな?ルーターの内側にVPNゲートウェイがある形。

VPNゲートウェイを通ってLAN内のサーバーやNASにアクセスできるようになる。

LAN内に何台もサーバーやNASがあって、インターネットからSSH等で管理したい時に、ルーターで個別に管理用のポートを開放するよりも、シンプルで安全。

ちなみに私はRaspberry Pi 4でVPNゲートウェイを動かしてます。

構成図(クリックで拡大表示)

設定ファイル(/etc/swanctl/swanctl.conf)

connections {
    ikev2 {
        version = 2
        pools = pool
        local {
            #認証に使うサーバー証明書のFQDNを指定
            #証明書のsubject Distinguished Name、subject Alternative Nameと一致する必要がある
            id = example.com
            
            #サーバー証明書のファイル名を指定。/etc/swanctl/x509/配下の相対パスか、絶対パスで指定
            certs = server-cert.pem    
            auth = pubkey
        }
        remote {
            auth = pubkey
        }
        children {
            child {
                local_ts = 0.0.0.0/0,::/0
            }
        }
    }
}

pools{
    pool{
        #使用する仮想IPのアドレス範囲を指定
        addrs = 192.168.20.0/24
        
        #使用するDNSサーバーを指定
        dns = 192.168.1.1
    }
}

証明書の作成と配置

CA証明書、サーバー証明書、クライアント証明書を作成する。strongSwan付属のipsecコマンドを使うと割と簡単にできる。詳しい作成方法はArchWikiとかにあります。

作成したファイルのうち、CA証明書、サーバーの秘密鍵、 サーバー証明書を下記ディレクトリに配置する。

CA証明書…/etc/swanctl/x509ca/
サーバーの秘密鍵…/etc/swanctl/private/
サーバー証明書…/etc/swanctl/x509/

ファイアウォール/NATの設定

UDPのポート番号500、4500を開放し、VPNゲートウェイ(192.168.1.254)へフォワーディングする。

クライアントの設定

ServerにサーバーのFQDNかIPアドレスを入力。

VPN Typeは「IKEv2 Certificate」を選択。

User Certificateの「INSTALL USER CERTIFICATE」でクライアント証明書をインストールする。PKCS#12形式にしておくと良いでしょう。

CA certificateはSelect automaticallyにチェックを入れる。

4Kでゲームがしたくて非常に苦労した話

多くのメーカーはWQHD(2560×1440ドット)を推してるみたいだけど、 WQHDって中途半端じゃない?まあ4Kは、描画面積がフルHDの4倍もあるから、フルHDからステップアップするにはハードルが高いってところなんだろうけど。

そんなわけで1月にASRock AMD Radeon RX 6800 Challenger Proを買った。

ところが動かしてみると問題が発生。RustをプレイしながらTwitterのタイムラインをスクロールさせると、グラボが落ちるという奇妙な症状に見舞われる。

グラボが落ちるとはどういうことかというと、

  • 突然画面が真っ暗になり、再起動がかかる。
  • ファンが高速回転する。
  • Q-LED(ASUSのマザーボードに付いてる診断用のLED)のVGAの異常を示すLEDが点灯。
  • 電源を入れ直すまで画面が映らなくなる。リセットボタンでは不十分

検証動画も撮りました。字幕に説明が書いてあるので、字幕をONにしてご覧ください。

これは今まで経験したことがない深刻な状況…。

他のベンチマークやゲームで Twitterのタイムラインをスクロールさせると、問題なく動く。何故かRustだけがおかしい。色々回したけど全部問題なし。

下記のようにいろいろ試したけど治らず。

  • ドライバーのアップデート(Display Driver Uninstallerによるクリーンアップを実施)
  • CMOSクリア
  • BIOS(UEFIファームウェア)のアップデート
  • メモリのXMPプロファイルを無効にする
  • 別のPCIeスロットへの差し替え
  • メモリの交換
  • 電源の交換(750W→850W)
  • 別PCへの取り付け
  • モニターの交換

回避策

100%ではないが回避策も見つけた。クロックダウンすると起こりにくくなる。

  1. Radeon Softwareのチューニング設定画面から、チューニングコントロールを「手動」にする
  2. GPUチューニングを「有効」 高度な制御を「有効」 最大周波数を1905MHzに設定
    ※1905MHzはこのボードのゲーム時の実行クロック
  3. 「変更を適用」をクリックして設定を保存

サポートに問い合わせしてみた

購入したショップに問い合わせたら、返金するとの返事が。初期不良として交換にしてほしかったんだけど、在庫がなかったんだろうね。

続いてASRockのサポートに問い合わせるも、切り分けの結果Rustのみで異常が出たため、Rustのサポートに問い合わせろと言われる。

そこで、検証できないかとお願いしてみたけど、Rustを持ってないからできないと一蹴される。

(あの~、RustってSteam上で最もプレイされているマルチプレイヤーゲームの、上位10番以内に入るタイトルなんですけど…)

仕方なく開発元のFacePunchにも問い合わせましたよ。英語で。けど予想通り、他にはそういった症状は出てないという回答が返ってきた。

2枚目購入

Rust以外は問題なく動いていて、手放すのが嫌だったから2枚目を買うことにしました。

5月に買ったのだけれど、マイニング需要のせいで価格が1月と比べて4万円以上上昇という恐ろしい事態に。でもやるしかなかったんだ。

Radeon RX 6800 Phantom Gaming Dを購入。本当は別メーカーにしたかったんだけど、当時の入手のしやすさとデザインで再びASRockのカードに。

2台並べてみる

ところがこれも同じ症状…というか、Challenger Proよりひどい!Rust以外でも落ちた。

もうここまで来たら疑う場所は1か所しか無いと思った。vBIOS(グラボ上にあるBIOS)だ。

2枚目買った直後にvBIOS バージョンL04がリリースされたので、すぐに適用したところ、2枚とも何事もなかったかのように動いた。いやー、長かった。

というわけで、もしこれらの製品をお持ちで、初期のvBIOSのまま調子が悪くて寝かせてる方がいらっしゃったら、まずはvBIOSのバージョンをL04にアップデートすることを試してみて欲しい。

これ、初期不良で返品されまくったんじゃないの?L04にするまでは金返せレベルのひどさだよ?

ちなみにASRockのサポートにvBIOSによって解決した旨連絡をしたんだけど、スルーされた。いい所あるのにサポートは残念だなー。もったいない。

10Gbpsのスイッチ(QSW-M408-4C)導入

10Gbps/マルチギガ対応のスイッチングハブ。前から欲しかったんだけど、ようやく、これだ!というスイッチがあったので買った。まさかQNAPから出てくるとは。10G対応のポートは4ポートだけど、VLANが切れて5万円は安い!

それまではネットギアのXS512EMとか、バッファローのBS-MP2008を買おうかなって考えてた所。

あわせて、メインPCに10G対応NICを導入。通信自体は問題なかったが、一つ問題を発見。困ったことに、スリープから復帰できなくなった。休止状態だと動くんだけど。

…というわけでインテルチップのボードも購入して検証。コンバージドなんちゃらって名前のつく製品初めて買ったわ。しかし症状は改善せず。マザーボードとの相性かな?

Sambaが動いてるサーバーとのベンチマーク結果。

サーバーは既に10Gポートがオンボードで付いてるのでそれをそのまま使用。1Gbpsは超えてるみたいね。だけどWriteの方が早いって…信じて良いのかな??サーバーはRAID1構成。

QSW-M408には、左端にスパナマークのついたポートがあるが、マニュアルやHPでは全く触れられていない。デバッグ用なのだろうか?115200bpsで試しに繋いでみると…。

こいつLinuxで動いてるぞ!

しかもrootユーザーで入れてるってことはやりたい放題なのでは…壊れたら怖いから設定変えなかったけど、もしかしたら色々遊べるのかもしれない。

余談だけどBS-MP2008は、USのサイトを見ると、スイッチングファブリック(表記はBandwidth)が80Gbpsって書いてある。
https://www.buffalo-technology.com/productpage/switch-bs-mp2008/
通常はポート数×帯域の2倍で160Gbpsなんだけど。これが他社機種に比べて安い原因?

メインPCの近況

昨年に引き続き、大晦日更新です…

グラボが来ない

4Kでゲームがしたくなったので、Radeon RX 6800を導入予定。各ショップとも在庫がかなり少ないらしく泣きそう。1月上旬までにお届けってなってて、そこから音沙汰ないんだけど、信じていいのかな。

SSD買い足し

システムのSSDの空きが尽きてしまったので、ゲーム用にSSDを買い足した。性能つよつよのWDのSN850にした。

撮影環境が良くなかったのは許して

ヒートシンクが無いので別途用意した。SilverStoneのTP02-M2にしたところ、厚みがあってパーツに干渉してしまった。残念。

結局、薄型のグラフェン加工された銅のヒートシンクに変更。熱伝導率がすごく良いみたいだけど、実際どうなんだろうね。

マザーボードが対応してるPCIeの世代が古くてスピードが出ず…

PCIe Gen3接続の場合こんな感じ
SN850のReadの公称値が7000MB/sなので、おおよそ半分しか性能が出てないことになる。る。

マザーボードを新しくするためにはCPUも変えなきゃいけない。こりゃ沼だ…

サーバー用のケース

サーバーを新調するにあたって、見た目や使い勝手もサーバーらしくしたかった。サーバーと言ったら前面からHDDを入れ替えできないと。あと、各HDDごとにアクセスランプが付いててチカチカしてるやつ。パーツで実現できないかと探したらあった。

このケースは、5インチベイを3スロット使用して、4台の3.5インチHDDを収納することができる。

あとはこれに合うケースを探せば良いのだが…ここで衝撃の事実。

今、フロント5インチベイがたくさんあるケースってほとんど売ってないの!なんでだよ!

今のケースのフロント部分は、ファンを設けて冷却性能を強化したり、水冷のラジエーターのスペースにするのがトレンドらしい。

今までケースはどうしてたかというと、Nine Hundredを使ってた。でもホコリを吸うのと、裏配線ができないのが辛かった。

ネットを探し回って、条件に合うのが汐見板金のAX2と、他に1つぐらいしかなかったので、今回は思い切ってAX2にしてみた。

AX2は筐体の色や、側面や天面の開口、キャスターの有無などを指定できる。ケースのBTOといったところか。選択したオプションは下記の通り。合計67,100円。

  • カラー:ミリタリーグリーン
  • 天板開口あり、側板開口なし
  • ボトムフィルターユニットあり
  • 付属ファン:前面120mm、背面120mm
  • サイド増設パネル:1枚
  • ブランクパネル:スリットなし
  • USB:左 Type-C、右 Type-A
  • ドライブ取付金具:3.5インチ用あり、2.5インチ用あり
  • 筐体足タイプ:キャスター+アジャスター
  • キャッチ仕様:スチールキャッチ
  • 固定ネジタイプ:手回しローレット強化仕様
カラーはミリタリーグリーンを選択。かなり落ち着いた色。
オレンジとか目立つ色にしても良かったかも

市販のケースに比べ、全体的に大きめ。その分、内部のスペースがかなり余裕がある。

マザーボードのベースが外れて組み立てしやすいようになってる。
ブレードサーバーっぽくてちょっとワクワクするね。

キャスターは、組み立て中からかなり役に立ってた。向きを変えたいときに自分が動かなくて済むのは楽。

他のケースには無い工夫が色々あって楽しかった。