====== Vyatta OpenVPN Server/Client ====== ===== 環境 ===== |Global側|eth0|10.10.100.1| |Local側|eth1|192.168.1.1| |仮想LAN|vtun0|172.16.100.1| +----------+ +----------+ | | | | | |eth1 eth0| |eth1 + Client +------------- INTERNET ------------+ vyatta-A +----- | | | | | | | | +----+-----+ +----+-----+ ====== Vyatta OpenVPN Server ====== ===== CA証明書・秘密鍵作成 ===== # sudo su - # cd /usr/share/doc/openvpn/examples/easy-rsa/ # cp -r 2.0 /etc/openvpn/easy-rsa/ # cd /etc/openvpn/easy-rsa/ # vi vars ---- 以下修正 ---- export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" # source vars # ./clean-all # ./build-ca 全部空エンターで CA証明書をコピーしておく # cp keys/ca.crt /config/auth/ ===== サーバー証明書・秘密鍵作成 ===== # ./build-key-server server 全部空エンターで ・ ・ ・ Sign the certificate? [y/n]:y ← y応答 1 out of 1 certificate requests certified, commit? [y/n]y ← y応答 Write out database with 1 new entries Data Base Updated サーバー証明書・秘密鍵作成をコピーしておく # cp keys/server.crt /config/auth/ # cp keys/server.key /config/auth/ ===== DH(Diffie Hellman)パラメータ作成 ===== # ./build-dh # cp keys/dh1024.pem /config/auth/ ===== TLS認証鍵を作成 ===== # openvpn --genkey --secret /config/auth/ta.key ===== コマンド ===== # set interfaces openvpn vtun0 encryption 'aes128' # set interfaces openvpn vtun0 mode 'server' # set interfaces openvpn vtun0 openvpn-option '--tls-auth /etc/openvpn/ta.key 0' # set interfaces openvpn vtun0 protocol 'udp' # set interfaces openvpn vtun0 server name-server '8.8.8.8' # set interfaces openvpn vtun0 server push-route '192.168.1.0/24' # set interfaces openvpn vtun0 server subnet '172.16.100.0/24' # set interfaces openvpn vtun0 server topology 'subnet' # set interfaces openvpn vtun0 tls ca-cert-file '/config/auth/ca.crt' # set interfaces openvpn vtun0 tls cert-file '/config/auth/server.crt' # set interfaces openvpn vtun0 tls dh-file '/config/auth/dh1024.pem' # set interfaces openvpn vtun0 tls key-file '/config/auth/server.key' 「--tls-auth /etc/openvpn/ta.key 0」オプションの最後の"0"は、サーバ側であることを示す。 ===== クライアント証明書・秘密鍵作成 ===== クライアントの証明書と鍵を作成しておく\\ ※クライアント証明書は、クライアント毎に作成する必要があります。 # cd /etc/openvpn/easy-rsa/ # source vars # ./build-key-pass client1 private keyのパスワード以外、全エンターで private keyのパスワードをなしにする。 # cd /etc/openvpn/easy-rsa/keys/ # openssl rsa -in client1.key -out client1.key ====== Vyatta OpenVPN Client ====== サーバー側から下記の4つをコピーしてくる。\\ 「/config/auth/」以下に保存する。 CA証明書(/config/auth/ca.crt) クライアント証明書(/etc/openvpn/easy-rsa/keys/client1.crt) クライアント秘密鍵(/etc/openvpn/easy-rsa/keys/client1.key) TLS認証鍵(/config/auth//ta.key) ===== コマンド ===== # set interfaces openvpn vtun0 encryption 'aes128' # set interfaces openvpn vtun0 mode 'client' # set interfaces openvpn vtun0 openvpn-option '--tls-auth /config/auth/ta.key 1' # set interfaces openvpn vtun0 protocol 'udp' # set interfaces openvpn vtun0 remote-host '10.10.100.1' # set interfaces openvpn vtun0 tls ca-cert-file '/config/auth/ca.crt' # set interfaces openvpn vtun0 tls cert-file '/config/auth/client2.crt' # set interfaces openvpn vtun0 tls key-file '/config/auth/client2.key' 「–tls-auth /etc/openvpn/ta.key 1」オプションの最後の”0”は、クライアント側であることを示す。 ====== 接続の確認 ====== ===== Server側 ===== サーバ側から、クライアント側の仮想IP 172.16.100.2 にPingが飛ぶ事を確認 $ sh openvpn server status OpenVPN server status on vtun0 [] Client CN Remote IP Tunnel IP TX byte RX byte Connected Since --------------- --------------- --------------- ------- ------- ------------------------ client1 10.10.100.2 172.16.100.2 13.0K 11.7K Mon Dec 17 23:27:26 2012 ===== Client側 ===== クライアント側から、サーバ側の仮想IP 172.16.100.1 と Local側IP 192.168.1.1 にPingが飛ぶ事を確認 $ sh openvpn client status OpenVPN client status on vtun0 [] Server CN Remote IP Tunnel IP TX byte RX byte Connected Since --------------- --------------- --------------- ------- ------- ------------------------ N/A 10.10.100.1 N/A 14.3K 15.7K N/A