ubuntuの操作メモ
3426 views
お仕事でちょっとVPN環境を作ってという依頼があり、VPN環境を作ってみましたが、ちょくちょくハマってしまったので、
手順やポイントなどをまとめておきます。
ようするに下の絵のようなことがやりたい。
OSはubuntu16.04です。CentOSでも似たようなものなので参考にはなるかと思いますが、適宜コマンドは置き換えて読んでください。
認証局を作るといってもなんちゃって認証局(easy-rsa)です。
作業はほとんどrootでやるので、sudo -iでroot化し、ライブラリをインストールしましょう。
- sudo -i
- apt-get update
- apt-get install openvpn libssl-dev openssl easy-rsa
インストールできたら認証局用のディレクトリを作成します。
- make-cadir /etc/openvpn/easy-rsa
- cd /etc/openvpn/easy-rsa
上記を実行したあとlsコマンドを実行すると、varsというファイルが出来上がります。
varsファイルを編集します。これは証明書を作成するときのCA自体の情報になります。
viエディタなどで編集します。
- vi vars
varsファイルの以下の部分をそれらしい情報に編集します。なんちゃって証明書の元になるだけなので適当でOKです。
- export KEY_COUNTRY="JP" #国
- export KEY_PROVINCE="KANAGAWA" #都道府県
- export KEY_CITY="EBINA" #市
- export KEY_ORG="KONISHI" #組織(会社?)
- export KEY_EMAIL="konishi@mail.com" #メアド
- export KEY_OU="MyOrganizationalUnit" #部署名?
編集できたら、シェルに設定内容を反映します。
- source ./vars
- ./clean-all
CAの鍵と証明書を作成します。
- ./pkitool --initca
実行し、[手順7]のような出力が出れば成功です。
- Using CA Common Name: KONISHI CA
- Generating a 2048 bit RSA private key
- ................................................+++
- ....................+++
- writing new private key to 'ca.key'
次にDHパラメーターを作成します。
- ./build-dh
実行し、正常に動作した場合は以下のような出力が確認できます。
実行後、/etc/openvpn/easy-rsa/keysの下に以下のファイルが作成されているはずです。
- ls /etc/openvpn/easy-rsa/keys
- ca.crt ca.key dh2048.pem index.txt serial
これで認証局の設定は完了です。
認証局にVPNのサーバ証明書や鍵を作ってもらいます。
- ./pkitool --server server
実行すると、/etc/openvpn/easy-rsa/keysの下に以下のファイルが作成されます。
静的共有鍵もいるらしいので、[SC手順2]を実行してキーを生成します。
- openvpn --genkey --secret ta.key
実行すると、/etc/openvpn/easy-rsaの下にta.keyが作成されます。
これでサーバー側に必要なキーと証明書が作成されたことになります。
CAに作ってもらったサーバの鍵をopenvpnのパスに配置します。
- cd /etc/openvpn/easy-rsa/keys
- cp ca.crt server.crt server.key dh2048.pem /etc/openvpn
- cd /etc/openvpn/easy-rsa
- cp ta.key /etc/openvpn
VPNサーバの設定を行います。まず、サーバの設定ファイルを用意します。
- gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf
/etc/openvpn/server.confを編集します。変更箇所に★をつけています。
- port 1194★
- # TCP or UDP server?
- proto tcp ★
- ;proto udp ★
- dev tap ★
- ;dev tun ★
- ;dev-node MyTap
- ca ca.crt
- cert server.crt
- key server.key # This file should be kept secret
- dh dh2048.pem
- ;server 10.8.0.0 255.255.255.0 ★
- ifconfig-pool-persist ipp.txt
- server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 ★
- ;server-bridge
- ;push "route 192.168.10.0 255.255.255.0"
- ;push "route 192.168.20.0 255.255.255.0"
- ;client-config-dir ccd
- ;route 192.168.40.128 255.255.255.248
- ;client-config-dir ccd
- ;route 10.9.0.0 255.255.255.252
- ;learn-address ./script
- ;push "redirect-gateway def1 bypass-dhcp"
- ;push "dhcp-option DNS 208.67.222.222"
- ;push "dhcp-option DNS 208.67.220.220"
- client-to-client ★
- ;duplicate-cn
- keepalive 10 120
- tls-auth ta.key 0 # This file is secret ★
- ;cipher BF-CBC # Blowfish (default)
- ;cipher AES-128-CBC # AES
- ;cipher DES-EDE3-CBC # Triple-DES
- cipher AES-256-CBC ★
- comp-lzo
- ;max-clients 100
- ;user nobody
- ;group nogroup
- persist-key
- persist-tun
- status openvpn-status.log
- log openvpn.log ★
- ;log-append openvpn.log
- verb 3
- ;mute 20
本設定ではSSLのポート番号を使用してVPN接続を行います。
AWSのセキュリティグループ、ubuntu自体のファイアウォールでポート1194を通過できるように設定します。
インスタンスに該当するセキュリティグループを選択し、以下のようにインバウンドの設定で1194を通過できるようにします。
図は443を開けていますが、1194に変更したほうがよいっぽいです。
ubuntuの場合、デフォルトではファイアウォールは無効なはずですが、AWSのインスタンスは有効になっているものもある?みたいです。
以下のコマンドを実行してinactiveになっている場合は設定不要です。
- ufw status
activeだった場合は次のようにして1194を通過できるようにします。
- ufw allow 1194
- ufw reload
- ufw status
以下のコマンドでopenvpnを起動します。
- service openvpn@server start
/etc/openvpn/openvpn.logにログが出力されます。次のコマンドを実行して
ログを確認してください。
- cat /etc/openvpn/openvpn.log
以下のメッセージが出力されていれば起動できています。
- Sun Aug 12 11:32:29 2018 Initialization Sequence Completed
openvpnをダウンロードします。
ダウンロード先はここのURLです。
https://openvpn.net/index.php/open-source/downloads.html
以下の赤枠で囲んでいるopenvpn_install-2.4.6-1602.exeをダウンロードします。
インストールはインストーラーが表示するデフォルトを選択していけばOKです。
インストールが完了したら、VPNサーバでクライアント認証用のキーと証明書を作成します。
TeraTermなどでVPNサーバにログインし、次のコマンドを実行します。
- sudo -i
- cd /etc/openvpn/easy-rsa
- ./pkitool mycli1(1台目のクライアントのキーと証明書作成)
- ./pkitool mycli2(2台目のクライアントのキーと証明書作成)
クライアントのopenvpnに必要な認証ファイル、キーファイルは以下です。
これらのファイルをVPNサーバからWindowsにダウンロードします。 ダウンロードする際、ファイルのパーミッションが足りず、ダウンロードできないファイルがあるので 次のようにファイルをホームディレクトリにコピーし、こちらをダウンロードします。
- cp /etc/openvpn/easy-rsa/keys/ca.crt /home/ubuntu
- cp /etc/openvpn/easy-rsa/keys/mycli1.crt /home/ubuntu
- cp /etc/openvpn/easy-rsa/keys/mucli1.key /home/ubuntu
- cp /etc/openvpn/easy-rsa/keys/mycli2.crt /home/ubuntu
- cp /etc/openvpn/easy-rsa/keys/mucli2.key /home/ubuntu
- cp /etc/openvpn/easy-rsa/ta.key /home/ubuntu
- chmod 777 /home/ubuntu/ca.crt
- chmod 777 /home/ubuntu/mycli1.crt
- chmod 777 /home/ubuntu/mycli1.key
- chmod 777 /home/ubuntu/mycli2.crt
- chmod 777 /home/ubuntu/mycli2.key
- chmod 777 /home/ubuntu/ta.key
TermTermを使用する場合、[ファイル]→[SSH_SCP]を使用してファイルをダウンロードできます(下図参照)。
[SSH_SCP]をクリックすると下図のダイアログが表示されるので、赤枠の部分にファイル名を入力してダウンロードします。
ダウンロードができたら以下のファイルは削除します。
- rm /home/ubuntu/ca.crt
- rm /home/ubuntu/mycli1.crt
- rm /home/ubuntu/mycli1.key
- rm /home/ubuntu/mycli2.crt
- rm /home/ubuntu/mycli2.key
- rm /home/ubuntu/ta.key
C:\Users\<ユーザー名>\OpenVPN\configに次のファイルを配置しましょう。
PCごとにクライアントのキーと証明書は異なる必要があります。
(同じにしてしまうと、本設定ではみんな同じIPアドレスが割り当たってしまう)
[1台目のPC]
- ca.crt
- mycli1.crt
- mycli1.key
- ta.key
[2台目のPC]
- ca.crt
- mycli2.crt
- mycli2.key
- ta.key
次にC:\Program Files\OpenVPN\sample-config\client.ovpnファイルを
C:\Users\<ユーザー名>\OpenVPN\configにコピーし、編集します。
変更するパラメーターを以下に記します。
- dev tap
- ;dev tun
- proto tcp
- ;proto udp
- remote ec2-xx-xx-xx-xx.compute-1.amazonaws.com 1194 ★xx-xx-xx-xxはAWSのホスト名
- cert mycli1.crt
- key mycli1.key
- comp-lzo
編集終了後、デスクトップに表示されるopenvpnのアイコンを[右クリック]→[管理者として実行]を選択して起動します。
下図参照。
タスクバーにopenvpnのアイコンが表示されます。
openvpnのアイコンをダブルクリックするか、右クリックしたあと、「接続」を選択するとつながります。
Page 2 of 9.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/