ubuntuの操作メモ
3362 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/