目次
データサイエンティスト。PythonとRでデータ解析を行っています。
インターネット VPN (Virtual Private Network) には二拠点間の通信を暗号化する方式によって IPsec-VPN や SSL-VPN などがあります。OpenVPN は SSL-VPN の実装のひとつです。AWS VPC を二つ用意してそれらを OpenVPN で接続してみます。
VPC の構成
- myvpc-1 (10.1.0.0/16)
- mysubnet-1-1 (10.1.1.0/24)
- myinstance-1-1 (10.1.1.4, EIP 52.6.58.160)
- mysubnet-1-2 (10.1.2.0/24)
- myinstance-1-2 (10.1.2.4, EIP 52.6.133.31)
- mysubnet-1-1 (10.1.1.0/24)
- myvpc-2 (10.2.0.0/16)
- mysubnet-2-1 (10.2.1.0/24)
- myinstance-2-1 (10.2.1.4, EIP 52.6.159.238)
- mysubnet-2-2 (10.2.2.0/24)
- myinstance-2-2 (10.2.2.4, EIP 52.6.254.18)
- mysubnet-2-1 (10.2.1.0/24)
ルーティングテーブル
myvpc-1
- 0.0.0.0/0 → インターネットゲートウェイ
- 10.0.0/8 → myinstance-1-1
- 10.1.0.0/16 → local
myvpc-2
- 0.0.0.0/0 → インターネットゲートウェイ
- 10.0.0/8 → myinstance-2-1
- 10.2.0.0/16 → local
セキュリティグループ
以下の内容を許可します。検証用ですので簡単のため 0.0.0.0/0 としています。
- TCP 22 from 0.0.0.0/0 (SSH)
- UDP 1194 from 0.0.0.0/0 (OpenVPN)
- ICMP ALL from 0.0.0.0/0 (ping 等)
OpenVPN インスタンスの設定
以下の二つのインスタンスを OpenVPN サーバとして設定します。
- myinstance-1-1 (10.1.1.4, EIP 52.6.58.160)
- myinstance-2-1 (10.2.1.4, EIP 52.6.159.238)
自分宛でないパケットも受信するように AWS 設定を変更
上記二つのインスタンスについて、AWS コンソールにおいて「Actions」→「Networking」→「Change Source/Dest. Check」を Disable します。
カーネルパラメータの変更
/sbin/sysctl は起動中にカーネルパラメータを変更するためのコマンドです。OpenVPN サーバは IP パケットを転送する必要があるため設定を変更します。
$ sudo vi /etc/sysctl.conf
net.ipv4.ip_forward = 1 ← 0 を 1 に変更して保存
設定を反映させます。
$ sudo /sbin/sysctl -e -p
- -e → EC2 の AMI とインスタンスタイプの組み合わせによっては設定ファイルで指定された項目がカーネルパラメータとして存在しないため。エラーにせずに無視します
- -p → /etc/sysctl.conf を読み込んで反映させます
OpenVPN の設定
インストール
$ sudo yum install openvpn
共有鍵の設定
今回は鍵を共有することで通信の暗号化を行うように設定します。
myinstance-1-1 (10.1.1.4, EIP 52.6.58.160)
$ sudo openvpn --genkey --secret /etc/openvpn/secret.key
myinstance-2-1 (10.2.1.4, EIP 52.6.159.238)
何らかの方法で手動で鍵をコピーしてきます。権限を変更します。
$ sudo chmod 600 /etc/openvpn/secret.key
設定ファイルの作成
myinstance-1-1(52.6.58.160):/etc/openvpn/1-to-2.conf
port 1194
proto udp
dev tun ←トンネル
secret "/etc/openvpn/secret.key"
remote 52.6.159.238 ←相手のVPNサーバ
route 10.2.0.0 255.255.0.0 ←ルーティングするパケット
ifconfig 169.254.255.1 169.254.255.2 ←OpenVPN同士で利用する自分と相手のIP
status openvpn-status.log
verb 3
myinstance-2-1(52.6.159.238):/etc/openvpn/2-to-1.conf
port 1194
proto udp
dev tun
secret "/etc/openvpn/secret.key"
remote 52.6.58.160
route 10.1.0.0 255.255.0.0
ifconfig 169.254.255.2 169.254.255.1
status openvpn-status.log
verb 3
OpenVPN の起動および動作検証
myinstance-1-1 (10.1.1.4, EIP 52.6.58.160)
$ sudo openvpn --config /etc/openvpn/1-to-2.conf
myinstance-2-1 (10.2.1.4, EIP 52.6.159.238)
$ sudo openvpn --config /etc/openvpn/2-to-1.conf
以下のように表示されれば VPN 接続成功です。
...
Wed May 6 14:16:27 2015 Peer Connection Initiated with [AF_INET]52.6.159.238:1194
Wed May 6 14:16:28 2015 Initialization Sequence Completed
動作検証
myinstance-1-2 (10.1.2.4, EIP 52.6.133.31)
$ ping 10.2.2.4
myinstance-2-2 (10.2.2.4, EIP 52.6.254.18)
$ ping 10.1.2.4
サービスとして起動
$ sudo service openvpn start
ログファイル
$ sudo cat /var/log/messages | grep openvpn
$ sudo cat /etc/openvpn/openvpn-status.log
記事の執筆者にステッカーを贈る
有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。
さらに詳しく →Feedbacks
ログインするとコメントを投稿できます。
関連記事
- Ciscoルータの基本操作シスコ社の製品のうち、ルータは Cisco*** という製品名でスイッチは Catalyst*** という製品名です。いずれも *** は機種番号で、数字が小さいほど小規模ネットワーク向けとなっています。例えば資格試験 CCNA Routing and Switching では小規模および中規模ネットワークが対象です。そのため、中小規模のネットワークのルータおよびス
- BIND 9 ゾーンファイル Dynamic Update の設定方法DHCP 環境下などで IP が動的に付与される場合は DNS レコードを動的に更新する必要があります。これを実現する Dynamic Update 機能が BIND 9 には実装されています。使用方法をまとめます。Dynamic Update に対応した DNS を特に Dynamic DNS または DDNS とよぶことがあります。 ゾーンファイルの作成 ローカルホストに example.co...
- VyOS の基本的なルーティング設定本ページでは、複数の LAN をつなぐルータとしての設定方法をまとめます。具体的には、スタティックルーティングおよびダイナミックルーティング (RIP/OSPF/BGP)の設定方法を把握します。 設定方法を検証するための構成 ルーティング設定の検証を行うために VirtualBox で 5 台の VM を用意します。ホスト OS から vyos-0001 へ SSH 接続する部分を除き、「内部ネッ...
- BIND 9.10.2 の公式マニュアルに学ぶ DNS の基本DNS の実装としては Internet Systems Consortium (ISC) の Berkeley Internet Name Domain (BIND) が有名です。本ページは公式サイトの Documentation からダウンロードできる v9.10.2 の PDF マニュアルおよび『DNSの仕組み完全解説』から基本事項を抽出してまとめ
- スタティックルートの設定インターフェイスに IP を設定しただけでは他のデバイスと通信できません。各デバイスにルーティングテーブルを設定する必要があります。ルーティングテーブルの設定方法には動的に自動設定するものと、静的に手動設定するものの二種類があります。ここでは静的に手動設定するスタティックルートの方法を紹介します。 具体的にはまず PC0, PC1, Router0, Router1 それぞれ