AWS環境にOpenVPNをインストールし、ソフトウェアVPN環境を構築するための簡単な構築メモです。
クライアント側に専用クライアントのインストールが必要ですが、ハードウェアVPNを構築するほどのコストを掛けられ無いような規模であれば、役に立つこともあるかと思います。
環境
Ppublicセグメントでは、OpenVPN用サーバのみを公開し、Privateセグメントの各サーバに対しては、クライアントからプライベートアドレスで接続できるようにします。
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のインストール
```bash
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が非常に使いやすくてお勧めです。