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にチェックを入れる。

コメントを残す

メールアドレスは公開されません


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。