現: 2022-02-20 (日) 21:15:31 maruo[3] [4] | |||
---|---|---|---|
Line 1: | Line 1: | ||
+ | *時代は変遷するもの… [#x50a1efe] | ||
+ | 2017年からLibreSwanによるIPsec/L2TP VPNを構築しておりましたが、LibreSwanも、L2TPを噛ます方式ももうオワコンらしいです。 | ||
+ | 今やStrongSwanを使って、IKEv2によるIPsec VPNてのが流行らしいです。Android12もIKEv2が標準らしいので、そちらに以降してみます。 | ||
+ | |||
+ | *IKEv2ってなんぞ [#gab2583d] | ||
+ | CiscoとMicrosoftで規定した、IPsecの鍵交換方式らしい。ネットワークが移動してもトンネルを維持できるので、モバイル機器に向いている、らしい。また、Microsoftが規定しているということは、Windowsとも相性がいい、らしい。 | ||
+ | |||
+ | |||
+ | *設定 [#c71e3626] | ||
+ | **StrongSwanのインストール [#c4cd5791] | ||
+ | |||
+ | package.useファイルに以下の設定を追記。 | ||
+ | |||
+ | net-vpn/strongswan eap farp | ||
+ | |||
+ | で、パッケージをインストールします。 | ||
+ | |||
+ | # emerge strongswan | ||
+ | |||
+ | **StrongSwanの設定 [#fba2ebcc] | ||
+ | |||
+ | ***サーバ証明書の設定 [#h9bfa9b1] | ||
+ | StrongSwanにはサーバ証明書が必要です。サーバ証明書には、 | ||
+ | - サーバ認証局証明書 | ||
+ | - サーバ公開鍵 | ||
+ | - サーバ秘密鍵 | ||
+ | |||
+ | これらは、ドメインを公開しているLet's encryptの証明書が使えるので、それをStorongSwanでも使えるように設定します。 | ||
+ | |||
+ | # cd /etc/ipsec.d/cacerts | ||
+ | # ln -sfn /etc/letsencrypt/live/ドメイン名/chain.pem | ||
+ | # cd /etc/ipsec.d/certs | ||
+ | # ln -sfn /etc/letsencrypt/live/ドメイン名/cert.pem | ||
+ | # cd /etc/ipsec.d/private | ||
+ | # ln -sfn /etc/letsencrypt/live/ドメイン名/privkey.pem | ||
+ | |||
+ | また、ipsec.d以下はStrongSwanのユーザ/グループ名でしかアクセスできないように権限設定注意してくださいね。秘密鍵だだもれは恐ろしいので… | ||
+ | |||
+ | 今回は、MSCHAPv2という、ユーザー/パスワードを入力する方式で行きます。 | ||
+ | # vi /etc/ipsec.conf | ||
+ | |||
+ | |||
+ | # ipsec.conf - strongSwan IPsec configuration file | ||
+ | |||
+ | # basic configuration | ||
+ | |||
+ | config setup | ||
+ | # strictcrlpolicy=yes | ||
+ | # uniqueids = no | ||
+ | |||
+ | # Add connections here. | ||
+ | |||
+ | conn %default | ||
+ | keyexchange=ikev2 | ||
+ | ike=aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024! | ||
+ | esp=aes128gcm16-ecp256,aes256gcm16-ecp384,aes128-sha256-ecp256,aes256-sha384-ecp384,aes128-sha256-modp2048,aes128-sha1-modp2048,aes256-sha384-modp4096,aes256-sha256-modp4096,aes256-sha1-modp4096,aes128-sha256-modp1536,aes128-sha1-modp1536,aes256-sha384-modp2048,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha256-modp1024,aes128-sha1-modp1024,aes256-sha384-modp1536,aes256-sha256-modp1536,aes256-sha1-modp1536,aes256-sha384-modp1024,aes256-sha256-modp1024,aes256-sha1-modp1024,aes128gcm16,aes256gcm16,aes128-sha256,aes128-sha1,aes256-sha384,aes256-sha256,aes256-sha1! | ||
+ | dpdaction=clear | ||
+ | dpddelay=300s | ||
+ | rekey=no | ||
+ | |||
+ | conn IPSec-IKEv2 | ||
+ | keyexchange=ikev2 | ||
+ | left=%any | ||
+ | leftsubnet=0.0.0.0/0 | ||
+ | leftid=Let's encryptで届け出ているドメイン名 | ||
+ | leftcert=cert.pem | ||
+ | leftsendcert=always | ||
+ | right=%any | ||
+ | rightid=%any | ||
+ | rightdns=DNSサーバアドレス | ||
+ | rightsourceip=端末に割り振るIPアドレス | ||
+ | auto=add | ||
+ | |||
+ | conn IPSec-IKEv2-EAP | ||
+ | also="IPSec-IKEv2" | ||
+ | rightauth=eap-mschapv2 | ||
+ | eap_identity=%any | ||
+ | auto=add | ||
+ | 最後に、パスフレーズを設定します。 | ||
+ | |||
+ | # vi /etc/ipsec.secrets | ||
+ | |||
+ | # ipsec.secrets - strongSwan IPsec secrets file | ||
+ | |||
+ | : RSA privkey.pem | ||
+ | |||
+ | ユーザ名 : EAP "パスワード" | ||
+ | |||
+ | このipsec.secretsもStrongSwanのユーザしかアクセスできないようにしておいてくださいね… | ||
+ | |||
+ | さて…サーバの設定は終了 | ||
+ | |||
+ | *IPフィルタの設定 [#r1c0ae3d] | ||
+ | |||
+ | iptables -t filter -A INPUT -p udp -m udp --dport 500 -j ACCEPT | ||
+ | iptables -t filter -A INPUT -p udp -m udp --dport 4500 -j ACCEPT | ||
+ | iptables -t filter -A OUTPUT -p udp -m udp --sport 4500 -j ACCEPT | ||
+ | iptables -t filter -A OUTPUT -p udp -m udp --sport 500 -j ACCEPT | ||
+ | |||
+ | IKE鍵交換プロトコルと、IPsecのESP((Encapseled Security Payload))を受信するためのポートをオープンします。 | ||
+ | |||
+ | 更に、NAPTなブロードバンドルータに、UDP 4500 とUDP 500をサーバにNAT変換するアドレス変換テーブルを設定します。 | ||
+ | |||
+ | *接続してみよう [#ddafd69c] | ||
+ | **サーバ群起動 [#b694e07a] | ||
+ | # /etc/init.d/ipsec start | ||
+ | |||
+ | **Android側設定 [#q9b2cffb] | ||
+ | 端末設定→その他→VPN→VPNの追加 選択 | ||
+ | :名前|適当につけて | ||
+ | :タイプ|IKEv2/IPSec mschapv2 | ||
+ | :サーバアドレス|IPsecサーバのIPアドレス若しくはホスト名 | ||
+ | :ユーザ名|/etc/ipsec.secretsに設定したユーザ名 | ||
+ | :パスワード|/etc/ipsec.secretsに設定したパスワード | ||
+ | |||
+ | んで、保存。接続するときは | ||
+ | |||
+ | で接続をタップ。 | ||
+ | |||
+ | **Windows側設定 [#v85d9007] | ||
+ | Windows10は『設定』→ネットワークとインターネット→VPN→VPN接続を追加する | ||
+ | :VPNプロバイダ|Windowsビルドイン | ||
+ | :名前|適当につけて | ||
+ | :サーバアドレス|IPsecサーバのIPアドレス若しくはホスト名 | ||
+ | :サインイン情報の種類|ユーザ名とパスワード | ||
+ | :ユーザ名(オプション)|/etc/ipsec.secretsに設定したユーザ名 | ||
+ | :パスワード(オプション)|/etc/ipsec.secretsに設定したパスワード | ||
+ | |||
+ | でVPN接続が作られます。タスクバーの通知アイコンのネットワークを開くと、VPN接続のアイコンができております。クリックして接続を押すと、設定がうまくできてれば、接続確立します! |
(This host) = https://femt.ddo.jp