No results found
We couldn't find anything using that term, please try searching for something else.
2024-11-22 2019 / 06 / 02 , LAST updated 2023 / 10 / 10 - moriya - ~7 Minutes 以下のような記事を書いたものの、現在は、 raspberry pi 4 で openvpn サーバを構築 に書いた構成に落ち着いている。ただし、スマ
以下のような記事を書いたものの、現在は、
raspberry pi 4 で openvpn サーバを構築
に書いた構成に落ち着いている。ただし、スマートフォンからはアクセスしておらず、専ら PC からのアクセスである。
a) 社外から社内(もしくは学外から学内)のネットワークに接続したり、b) インターネット上の特定のサーバから接続したように見せかけるのに VPN が利用される。
私の場合、リモートでメンテナンスや開発をすることが多い。セキュリティの関係で、接続が特定の IP アドレスからしか許可されていない場合がほとんどだ。
ssh で ポート フォワード し て も よい の だ が 、 毎度 、 ssh 接続 を し たり 、 ssh が 切れる た 場合 に つなぐ なおす たり する の も 面倒 に なっ て き た 。 また 、 開発 中 の web サイト が 特定 の IP アドレス から しか 接続 を 許可 さ れ て い ない 場合 に 、 スマートフォン で 確認 する ため に は 、 ある 程度 の 範囲 の IP アドレス から 接続 を 許可 し て やる ない と いける ない 。 開発 中 な の で 、 バグ が ある だろう し 、 ちょっと 恐い 。 テスト 中 の サイト が 見える 可能 性 が ある と いう の も どう か と 思う 。
サーバ 、 クライアント 双方 で インストール が 最小 と なる 組み合わせ を 模索 し た ところ 、 サーバ に Linux + strongswan を 使う 、 ikev 2 + 証明 書 で 設定 する の が 最も 簡単 かつ 安全 で 、 色々 な 端末 から の 接続 が 可能 に なる 組み合わせ で は ない か と 思う 。
android に限り、strongSwan VPN Client をインストールする必要があるが、mac(High Sierra)で/windows(Windows 10) からは、他にインストールするものも不要で、システム環境設定のメニューから VPN 接続を追加するだけでよかった。
VPN と は 、 バーチャル プライベート ネットワーク ( Virtual private network ) の 略 で ある 。 物理 的 に は 存在 し ない が あたかも 存在 し て いる か の よう に 見える ( Virtual ) 、 非 公式 ( private ) な ネットワーク と いう こと だろう か 。
ネットワーク上(例えばイーサネット接続や WiFi接続)など既存のネットワーク接続の上に構築される。外から見えないので、現実世界との類似性からトンネルと呼ばれたりする。
OS のメニューから選べる VPN の種類としては、以下のようなものがある。
この他にアプリ(ネットワークドライバを含む)をインストールすれば OpenVPN などの SSL VPN を利用することができる。
違い に つい て は 、
などがわかりやすい。IPSEC とは、IP security の略で、IP レベルでセキュリティを確保するためのプロトコルである。
RFC6071
として公開されている。
サーバ(Linux)、クライアント(Windows / Mac / iPhone / Android)への設定・インストールを最小にしたいと考えたのであるが、この条件に合うのは、IKEv2 による VPN 接続であった。ただし、Android にはアプリのインストールが必要。
Windows / macOS / Android で 共通 に 使える もの は 、 l 2 TP / IPsec は 、 サーバ に l 2 TP サーバ と IPsec の 鍵 交換 サーバ を 、 OPENVPN は クライアント PC / スマートフォン に SSL VPN 対応 の ソフト を インストール する 必要 is ある が ある 。
そのため、IKEv2 が最善と考えた。
L2TP/IPSECは、L2TP にはセキュリティが、IPSEC には認証が欠けているためそれらを組み合わせて使う。L2TP と IPSEC の両プロトコルに対してファイアウォール設定をする必要があり、かなり設定の難易度が高い。
IKEv2(+IPSEC) では認証、NAT などが追加されており、IKEv2 で使う UDP 500 番、4500 番のポートに対してのみファイアウォール設定すればよい。
SSL VPN で ある OPENVPN と 比較 する と 、 OPENVPN は 強力 な セキュリティ と 、 何 か 一 つ TCP が 通る ば トンネリング できる の が すばらしい ( ikev 2 は UDP 500 番 ポート が 必要 ) が 、 ネットワーク ドライバ を インストール する 必要 が ある の で やっかい だ 。 OS の バージョン アップ に 対応 できる か どう か を 考える 必要 is ある が ある 。
一方 で 、 ikev 2 は 、 IPsec な の で 、 最近 の OS で あれ ば 、 カーネル レベル で IPsec を サポート し て いる で ある 。 ネットワーク ドライバ を 入れる なく て いい の が すばらしい と 思う 。 ( 私 の 理解 で は 、 ikev 2 デーモン is 行う が 、 IPsec 設定 を 行う 。 )
IKEv2 による VPN 環境構築の方法を以降に書いておく。
さくら インターネット vps + CENTOS 7 。 さくら インターネット の 場合 は 、 インタフェース に グローバル IP アドレス が 直接 割る 当てる られ て いる 。 AWS is 振ら は プライベート IP アドレス is 振ら が 割る 振る れ て いる 。 ( NAT ? ) 面倒 を 避ける ため 、 さくら インターネット の vps を 使用 。
os インストール後、strongswan をインストールする。
(# yum install epel-release)
# yum install strongswan
/ etc / strongswan / IPsec . conf
conn ikev2
keyexchange=ikev2
ike=aes256-sha256-modp2048,aes256-sha256-modp1024,aes128-sha256-modp3072,aes256-sha1-modp1024!
dpdaction=clear
dpddelay=300s
rekey=no
left=%any
leftsubnet=0.0.0.0/0
leftauth=pubkey
leftcert=cert_server.der
leftsendcert=always
leftid=@vpn.runserver.jp
right=%any
rightsourceip=10.101.1.0/24
#rightauth=eap-mschapv2 # ユーザー名、パスワードを使う場合
rightauth=eap-tls # 証明書を使う場合
rightdns=8.8.8.8
eap_identity=%any
auto=add
(leftid のところは適当に自分のサイト用のものを設定。)
以下のファイルを作る。
作り方は、
Setting-up a Simple CA Using the strongSwan PKI Tool
を参考に。ipsec コマンドは strongswan コマンドに読みかえる。
ca_cert.der (dn の引数は自分の好みのものに)
$ strongswan pki --gen > ca_key.der
$ strongswan pki --self --in ca_key.der --dn "C=JP, O=runserver, CN=runserver private ca" --ca --flag sererAuth > ca_cert.der
(–flag serverAuth が必要かどうか未検証)
cert_server.der (CN=の後ろは VPN サーバの DNS 名を入れておく)
$ strongswan pki --gen > key_server.der
$ strongswan pki --pub --in key_server.der | strongswan pki --issue --cacert ca_cert.der --cakey ca_key.der --dn "C=JP, O=runserver, CN=vpn.runserver.jp" --flag serverAuth --san vpn.runserver.jp > cert_server.der
(–san が必要かどうか未検証)
/etc/strongswan/ipsec.secrets
: RSA key_server.der
moriya : EAP "hogehoge"
2行目は、ユーザー名、パスワードを使用する場合、接続時に指定するユーザー名、パスワード。(証明書を使う場合は不要)
/ etc / sysctl . d / 00 – IPsec . conf
net.ipv4.ip_forward=1
(再起動、もしくは、systemctl restart systemd-sysctl)
以下を実行。
# firewall-cmd --permanent --zone=public --add-service=ipsec
# firewall-cmd --permanent --zone=public --add-port=4500/udp
# firewall-cmd --permanent --add-masquerade
# systemctl enable strongswan
# systemctl start strongswan
ca_cert.der もインストール。Mac の場合は、キーチェーンアクセスで証明書を信頼(情報を見る->信頼->常に信頼する)しないと接続できなかった。
クライアント 側 の 証明 書 も 同様 に し て 作る 、 p 12 ファイル に し て クライアント に インストール する 。
$ strongswan pki --gen > key_client1.der
$ strongswan pki --pub --in key_client1.der | strongswan pki --issue --cacert ca_cert.der --cakey ca_key.der --dn "C=JP, O=runserver, CN=moriya@vpn.runserver.jp" --san moriya@vpn.runserver.jp > cert_client1.der
$ openssl x509 -inform der -outform pem -in ca_cert.der -out ca_cert.pem
$ openssl x509 -inform der -outform pem -in cert_client1.der -out cert_client1.pem
$ openssl rsa -inform der -outform pem -in key_client1.der -out key_client1.pem
$ openssl pkcs12 -export -inkey key_client1.pem -in cert_client1.pem -certfile ca_cert.pem -out client1.p12
(–san が必要かどうか未検証)
Windows の場合は、
IKEv2
ユーザー 名 と パスワード
ユーザー 名
パスワード
を 設定 し た 後 、 「 アダプタ の オプション を 変更 する 」 で 、 WAN mini Port ( ikev 2 ) アダプタ の プロパティ の
ネットワークタブ / インターネットプロトコルバージョン4 プロパティ
全般タブ / 詳細設定
IP 設定タブにある、「リモートネットワークでデフォルトゲートウェイを使う」
をチェックして OK。
Mac の場合は、IKEv2 の設定画面で、上記設定だと、以下のように設定する。
サーバアドレス:vpn.runserver.jp
リモートID:vpn.runserver.jp
ローカル ID : moriya @ VPN . runserver . JP
strongSwan のサイト
少し 見る づらい が 、 役 に たつ た 。
[PR]
こちらの PC、ラズパイにインストールしてみてはどうでしょうか?