AWS環境にOpenVPNでVPNを構築

  • 97
    いいね
  • 3
    コメント
この記事は最終更新日から1年以上が経過しています。

AWS環境にOpenVPNをインストールし、ソフトウェアVPN環境を構築するための簡単な構築メモです。
クライアント側に専用クライアントのインストールが必要ですが、ハードウェアVPNを構築するほどのコストを掛けられ無いような規模であれば、役に立つこともあるかと思います。

環境

Ppublicセグメントでは、OpenVPN用サーバのみを公開し、Privateセグメントの各サーバに対しては、クライアントからプライベートアドレスで接続できるようにします。

env.png

AWSの設定

  • OpenVPNをインストールしたサーバにEIPを設定。
  • OpenVPNをインストールしたサーバのみをPublicセグメントのセキュリティグループに所属させる。
  • Privateセグメントのセキュリティグループに、Publicセグメントに設定したセキュリティグループからのアクセスを許可。
  • Publicセグメントのセキュリティグループに以下を設定。
    Custom UDP Rule, UDP, 1194, 0.0.0.0/0
  • Routeテーブルに、VPNのクライアント側のセグメントから、OpenVPNをインストールしたサーバへのルーティングを設定。
  • OpenVPNをインストールしたサーバに対し、Source/dest.checkをdisabled。

OpenVPNのインストール

sudo yum install openvpn

easy-rsaのインストール

Amazon Linuxでは、標準でeasy-rsaに相当するパッケージがインストールされていません。このため、個別にインストールする必要がありますが、yumにepelリポジトリを有効にするオプションの指定が必要です。

sudo yum install easy-rsa --enablerepo=epel

以下にインスト−ルされます。

  • /usr/share/easy-rsa

各種keyの作成

build-ca

cd /usr/share/easy-rsa/2.0
sudo -s
source ./vars
./clean-all
./build-ca

入力例

Country Name (2 letter code) [US]:JP
State or Province Name (full name) [CA]:Tokyo
Locality Name (eg, city) [SanFrancisco]:Hoge-shi
Organization Name (eg, company) [Fort-Funston]:Fuga Company
Organizational Unit Name (eg, section) [MyOrganizationalUnit]:Hoge Dept.
Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:openvpn-ca
Name [EasyRSA]:
Email Address [me@myhost.mydomain]:ec2-user@example.com

build-key-server

./build-key-server server

入力例

Country Name (2 letter code) [US]:JP
State or Province Name (full name) [CA]:Tokyo
Locality Name (eg, city) [SanFrancisco]:Hoge-shi
Organization Name (eg, company) [Fort-Funston]:Fuga Company
Organizational Unit Name (eg, section) [MyOrganizationalUnit]:Hoge Dept.
Common Name (eg, your name or your server's hostname) [server]:openvpn-server
Name [EasyRSA]:
Email Address [me@myhost.mydomain]:ec2-user@example.com

build-key

以下はアクセスを許可するアカウント毎に作成します。

./build-key [username]

入力例

countryName           :PRINTABLE:'JP'
stateOrProvinceName   :PRINTABLE:'Tokyo'
localityName          :PRINTABLE:'Hoge-shi'
organizationName      :PRINTABLE:'Fuga Company'
organizationalUnitName:PRINTABLE:'Hoge Dept.'
commonName            :PRINTABLE:'ec2-user'
name                  :PRINTABLE:'EasyRSA'
emailAddress          :IA5STRING:'ec2-user@example.com'

build-dh

./build-dh

リンクの作成

ln -s /usr/share/easy-rsa/2.0/keys/ca.crt .
ln -s /usr/share/easy-rsa/2.0/keys/server.crt .
ln -s /usr/share/easy-rsa/2.0/keys/server.key .
ln -s /usr/share/easy-rsa/2.0/keys/dh2048.pem .

OpenVPNの設定

/etc/openvpn/config.conf

port 1194
proto udp
dev tun

server 172.25.254.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "route 172.31.0.0 255.255.240.0"

ca ca.crt
cert server.crt
key server.key
dh dh2048.pem

comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

status /var/log/openvpn-status.log
verb 3

OpenVPNプロセスの再起動

sudo /etc/rc.d/init.d/openvpn restart

OpenVPNの自動起動設定

sudo chkconfig --level 345 openvpn on

IP Forwardingを設定

OpenVPNをインストールした開発環境管理サーバで、IP Forwardingを有効にします。

/etc/sysct.conf

net.ipv4.ip_forward = 1

設定を読み込みます。

sudo sysctl -p

OpenVPN Clinet for Mac

MacであればTunnelblickが良いと思います。以下は設定例です。

Tunnelblick

client
remote [OpenVPN用サーバに設定したEIP]
proto udp
dev tun
port 1194

tls-client

ca ca.crt
cert [username].crt
key [username].key

comp-lzo
keepalive 10 60
ping-timer-rem
persist-tun
persist-key

OpenVPN Client for Windows

vpnux Clientが非常に使いやすくてお勧めです。