一連のVPN記事を続けて、Ubuntu16.04サーバーにOpenVPNをインストールします。 OpenVPNは、同じ名前の会社のVPNソフトウェアとしてよく知られています。他のVPNソフトウェアよりも構成がやや難しいため、この記事ではサーバー側の構成とovpnファイルの作成に集中します。このガイドは、root以外のユーザーとして実行するように設計されています。 rootとしてログインしている場合は、最初にroot以外のユーザーを追加することから始めます。
adduser newuser
次に、彼にsudo権限を付与し、ユーザーとしてログインします
usermod -aG sudo newuser
su newuser
すでにroot以外のユーザーがいる場合は、これらの手順をスキップできます。おそらくそうです。
newuserまたはその他のroot以外のユーザーとしてログインしたので、openvpnをインストールします
sudo apt-get install openvpn easy-rsa
サーバーとクライアントの証明書
まず、認証局のdirを作成し、varsファイルを編集する必要があります
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
nano vars
エクスポートKEY_が含まれている行を見つけて、次のようにします
export KEY_COUNTRY="US"
export KEY_PROVINCE="New York State"
export KEY_CITY="New York City"
export KEY_ORG="Linoxide"
export KEY_EMAIL="[email protected]"
export KEY_OU="LinuxGeeks"
同じファイルにKEY_NAMEという名前の行もあるので、名前としてサーバーを配置します
export KEY_NAME="server"
varsファイルを保存した後、次に入力するのは次のとおりです。
source vars
./clean-allコマンドに関するメモが表示されます。したがって、クリーンな環境を実行していることを確認するために入力してみましょう。
./clean-all
次に、証明書の作成部分に移動します:
./build-ca
いくつかの質問が表示されますが、変数を編集したので、すべてのカウントでEnterキーを押すことができるように、新しいデフォルトで問題ないはずです。
./build-key-server server
もう一度入力しますが、今回はすべての点でではありません。パスワードを入力するように求められたら、パスワードを入力しないでください。最後に、証明書を作成してください。次はdiffiehellmanです:
./build-dh
しばらく時間がかかりますので、しばらくお待ちください。次に、サーバーのセキュリティを向上させるためにta.keyが必要です。
openvpn --genkey --secret keys/ta.key
次に、openvpnはそこからのみ読み取るため、関連するすべてのファイルを/ etc/openvpnディレクトリにコピーします。
cd ~/openvpn-ca/keys
sudo cp ca.crt ca.key server.crt server.key ta.key dh2048.pem /etc/openvpn
サーバー証明書が完成したので、client100の証明書を作成します。
cd ~/openvpn-ca
source vars
./build-key client100
ソースのデフォルトは再びOKなので、最後にEnterキーとyキーを押すだけです。
サーバー構成
開始点として、次のコマンドを使用してサンプル構成をコピーします。
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
次に、server.confを編集して、サーバーを機能させる必要があります。任意のエディターを使用できますが、ここではsedコマンドを使用します
sudo sed -i 's/;push "redirect-gateway def1 bypass-dhcp"/push "redirect-gateway def1 bypass-dhcp"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.222.222"/push "dhcp-option DNS 208.67.222.222"/g' /etc/openvpn/server.conf
sudo sed -i 's/;push "dhcp-option DNS 208.67.220.220"/push "dhcp-option DNS 208.67.220.220"/g' /etc/openvpn/server.conf
sudo sed -i 's/;user nobody/user nobody/g' /etc/openvpn/server.conf
sudo sed -i 's/;group nogroup/group nogroup/g' /etc/openvpn/server.conf
sudo sed -i 's/;log-append/log-append/g' /etc/openvpn/server.conf
ここで行ったこと:すべてのトラフィックをOpenVPN経由に設定し、グループとユーザーをnogroupとnobodyに設定し、ログを/etc/openvpn/openvpn.logに移動するように設定しました。その後、ta.keyについてもう1つ変更する必要があります:
sudo nano /etc/openvpn/server.conf
そして、この行を見つけてください
tls-auth ta.key 0 # This file is secret
key-direction 0
server.confについては以上です。次に、Ubuntuサーバーのパケット転送を有効にする必要があります
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
sudo sysctl -p
ufwルールもマスカレードを許可するように変更する必要があるため、*filterの前の最初にこれを追加します
セクション
sudo nano /etc/ufw/before.rules
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
eth0の部分は、インターネットに直接接続されているネットワークインターフェイスの実際の名前を反映するように変更する必要がある可能性が高いため、強調表示しました。次に、sysctlで行ったようにufwで転送を有効にします:
sudo sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/g' /etc/default/ufw
ファイアウォールを構成します
sudo ufw allow 1194/udp
sudo ufw disable
sudo ufw enable
sudo systemctl start openvpn@server
sudo systemctl status -l openvpn
すべてがうまくいったら、起動時にopenvpnの開始を有効にします
sudo systemctl enable openvpn@server
クライアント構成
クライアント構成部分では、client100など、すでに作成した証明書を使用します。クライアント構成ファイルも必要です
mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
コピーしたファイルは基本設定なので、編集する必要があります。
nano ~/client-configs/base.conf
そして、リモートと言う行を見つけます。 FQDNのサーバーIPアドレスを指すように変更します。
remote your.serv.ipor.fqdn 1194
それを保存してください。残りの編集として、sedコマンドとechoコマンドを使用します。
sudo sed -i 's/;user nobody/user nobody/g' ~/client-configs/base.conf
sudo sed -i 's/;group nogroup/group nogroup/g' ~/client-configs/base.conf
sudo sed -i 's/ca ca.crt/#ca ca.crt/g' ~/client-configs/base.conf
sudo sed -i 's/cert client.crt/#cert client.crt/g' ~/client-configs/base.conf
sudo sed -i 's/key client.key/#key client.key/g' ~/client-configs/base.conf
sudo echo key-direction 1 >> ~/client-configs/base.conf
では、ここで何をしましたか?まず、userとgroupをnobodyとnogroupに設定します。次に、インライン証明書を.ovpnファイルに統合するため、証明書パスをコメントアウトしました。次に、キー方向1パラメータを追加しました。
クライアント構成を作成するためのスクリプト
クライアント構成、キー、および証明書を単一の.ovpnファイルに埋め込んで、リモートクライアントへの転送を容易にするために、単純なスクリプトを使用します。やってみましょう
nano ~/client-configs/make_config.sh
そして、このペーストビンをそこに貼り付けます。これを保存した後、実行可能ビットを追加する必要があるため、次のコマンドを実行します:
chmod +x ~/client-configs/make_config.sh
次に、構成ファイルを簡単に作成できます
cd ~/client-configs
./make_config.sh client100
ls ~/client-configs/files
コマンドの構文は簡単です。client-configsdir内にいて、前に作成したクライアントの名前を示す引数を指定してコマンドを実行する必要があります。より多くのクライアントが必要な場合は、別の名前でさらにクライアント証明書を作成し、このコマンドを再実行してください。すべてがうまくいけば、client-configs/filesディレクトリにovpnファイルが含まれているはずです。それらを1つまたは複数のクライアントに転送し、接続する必要があります。私はscpでそれを行います、私のFedoraラップトップから私はこのようにコマンドを実行しました
scp [email protected]:/home/newuser/client-configs/files/client100.ovpn /home/miki/Documents/
そこから、USBケーブルを使用してAndroidスマートフォン、AirDroid、Windows VM、またはMacにロードできます。 Linuxネットワークマネージャーの場合、ファイルを逆アセンブルする必要があります
結論
これがサーバー構成についてです。次に、さまざまなクライアントから接続する必要があります。 Androidの場合はOpenVPNConnectを使用でき、Macの場合はTunnelblickを使用でき、Windowsの場合は公式サイトからOpenVPNを使用でき、Linuxの場合はネットワークマネージャーを使用できます。以下の記事のいくつかでは、これについてすべて取り上げます。