|
現: 2022-02-20 (日) 21:15:31 maruo  |
| + | *時代は変遷するもの… [#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接続のアイコンができております。クリックして接続を押すと、設定がうまくできてれば、接続確立します! |