OpenVPNは、SSLベースのVPNトンネルを作成できるオープンソースのVPNソフトウェアです。離れた場所から協力的なイントラネットに接続したいとします。 VPNサーバーをセットアップしている場合は、これが可能になる可能性があるため、心配する必要はありません。仮想プライベートネットワーク(VPN)は、パブリックネットワーク全体にプライベートネットワークを拡張する安全なトンネルを提供します。つまり、既存のローカルエリアネットワーク(LAN)からワイドエリアネットワーク(WAN)を作成するのに役立ちます。その結果、ユーザーは、LANに直接接続されているかのように、パブリックネットワークを介してデータを安全に送信できます。
OpenVPNについて詳しくは、こちらをご覧ください。
Fedora 29/28 /CentOS7にOpenVPNサーバーをインストールしてセットアップする
多くの理論はありませんが、Fedora 29/28 /CentOS7にOpenVPNサーバーをインストールしてセットアップする方法を段階的に見ていきましょう。
サーバーを更新します。
dnf update << Fedora yum update << Fedora/CentOS
OpenVPNとEasy-RSAをFedora29/28にインストールする
OpenVPNは堅牢で柔軟性の高いVPNデーモンを提供し、Easy-RSAパッケージはVPN接続を保護するために使用されるSSLキーペアを生成するために使用されます。 OpenVPNパッケージとEasy-RSAパッケージの両方が、デフォルトのFedoraリポジトリで利用できます。以下のコマンドを実行してインストールします。
dnf install openvpn easy-rsa
CentOS7にOpenVPNとEasy-RSAをインストールする
OpenVPNはデフォルトのCentOSリポジトリでは利用できませんが、EPELで利用できるため、OpenVPNをインストールする前にEPELリポジトリをインストールする必要があります。
Enterprise Linux(EPEL)用の追加パッケージを追加するには、次のコマンドのいずれかを実行します;
yum install epel-release
または
wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -ivh epel-release-latest-7.noarch.rpm
OpenVPNとEasy-RSAをインストールします
yum install openvpn easy-rsa
ローカルCAを構築し、サーバーキーと証明書ファイルを生成します
サーバーキーと証明書ファイルを保存するディレクトリを作成します。
mkdir /etc/openvpn/easy-rsa
Easy-RSAによってインストールされたキー/証明書生成スクリプトをデフォルトのディレクトリから上記で作成したディレクトリにコピーします。
cp -air /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa
/etc/openvpn/easy-rsa
に移動します ディレクトリを作成し、新しいPKIを開始します。
cd /etc/openvpn/easy-rsa ./easyrsa init-pki
CA証明書を作成します。これにより、暗号化パスワードとサーバーの共通名の入力を求められます。
./easyrsa build-ca
... writing new private key to '/etc/openvpn/easy-rsa/pki/private/ca.key.EajtR0SkLM' Enter PEM pass phrase: PASSWORD Verifying - Enter PEM pass phrase: PASSWORD ----- ... ----- Common Name (eg: your user, host, or server name) [Easy-RSA CA]:server CA creation complete and you may now import and sign cert requests. Your new CA certificate file for publishing is at: /etc/openvpn/easy-rsa/pki/ca.crt
前述のように、CA証明書は/etc/openvpn/easy-rsa/pki/ca.crt
に保存されます。 。
接続しているクライアントとのTLSハンドシェイク中に使用できるDiffie-Hellmanキーファイルを生成します。
./easyrsa gen-dh
これにより、DHキーが生成され、/etc/openvpn/easy-rsa/pki/dh.pem
として保存されます。 。
サーバーのキーと証明書ファイルを生成します。
./easyrsa build-server-full server nopass
クライアントのキーと証明書ファイルを生成します。
./easyrsa build-client-full client nopass
以前に署名された証明書を無効にする必要がある場合は、失効証明書を生成します。
./easyrsa gen-crl
これにより、失効証明書が/etc/openvpn/easy-rsa/pki/crl.pem
に保存されます。 。
TLS/SSL事前共有認証キーを生成します
openvpn --genkey --secret /etc/openvpn/easy-rsa/pki/ta.key
生成された証明書/キーをサーバー構成ディレクトリにコピーします。
cp -rp /etc/openvpn/easy-rsa/pki/{ca.crt,dh.pem,ta.key,issued,private} /etc/openvpn/server/
OpenVPNサーバーの構成
OpenVPNのドキュメントディレクトリにはサンプル構成ファイルがあるため、作業を楽にするために、サンプル/usr/share/doc/openvpn{-2.4.6,}/sample/sample-config-files/server.conf
/etc/openvpn
へのファイル 変更のため。
Fedora
cp /usr/share/doc/openvpn/sample/sample-config-files/server.conf /etc/openvpn/server/
CentOS 7
cp /usr/share/doc/openvpn-2.4.6/sample/sample-config-files/server.conf /etc/openvpn/server/
server.conf
を編集します 次のようにファイルします;
vim /etc/openvpn/server/server.conf
次のようにファイルを変更します;
# Which TCP/UDP port should OpenVPN listen on? # Change to match your port and open it in the firewall port 1194 # TCP or UDP server? proto udp # "dev tun" will create a routed IP tunnel dev tun # Change path for certificates ca ca.crt cert issued/server.crt key private/server.key # Diffie hellman exchange key path dh dh.pem # Network topology topology subnet # OpenVPN Network IP. For below, The server will take 10.8.0.1 for itself, # the rest will be made available to clients. server 172.16.0.0 255.255.255.0 # this directive will configure all clients to redirect their default # network gateway through the VPN push "redirect-gateway def1 bypass-dhcp" # DNS servers push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220" # For compression compatible with older clients use comp-lzo. comp-lzo # Run VPN with limited privileges user nobody group nobody # Status log file status /var/log/openvpn/openvpn-status.log # TLS/SSL pre-shared authentication key tls-auth ta.key 0 # Make VPN log directory and log file log-append /var/log/openvpn/openvpn.log #Append this line to change authentication algorithm (HMAC) from SHA1 to SHA512 auth SHA512
ログディレクトリを作成します;
mkdir /var/log/openvpn/
構成ファイルを保存します
ルーティングの構成
IP転送を有効にする
IP転送を有効にすると、クライアントからのトラフィックがサーバーのIPアドレスを介してルーティングされ、クライアントのIPアドレスがマスクされます。
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
以下のコマンドを実行して、変更を有効にします;
sysctl --system
ファイアウォールを介したOpenVPNサービスポートの許可
firewall-cmd --add-port=1194/udp --permanent
IPマスカレードをアクティブ化
firewall-cmd --add-masquerade --permanent
指定されたOpenVPNサブネットで受信したトラフィックを、パケットが送信されるインターフェイスに転送します。
以下のコマンドを実行して、パケットが送信されるインターフェイスを見つけます。
ip route get 8.8.8.8 8.8.8.8 via 192.168.43.1 dev enp0s8 src 192.168.43.23
場合によっては、インターフェース名が異なる場合があります。それに応じて置き換えます。
firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 172.16.0.0/24 -o enp0s8 -j MASQUERADE
変更を有効にするためにfirewalldをリロードします。
firewall-cmd --reload
OpenVPNを起動して起動時に開始するように設定します。
systemctl start [email protected] systemctl enable [email protected]
OpenVPNサービスを実行すると、トンネリングインターフェイスtun0;
ip add show tun0 4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100 link/none inet 172.16.0.1/24 brd 172.16.0.255 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::1155:c60c:c009:48c9/64 scope link stable-privacy valid_lft forever preferred_lft forever
VPNサーバーにはIPアドレス172.16.0.1が割り当てられ、最初のクライアントには172.16.0.2が割り当てられます。
VPNクライアントの構成
VPNクライアントがVPNサーバーに接続するには、上記で生成されたCA証明書、クライアントキー、クライアント証明書、およびTLS/SSL認証キーのコピーが必要です。したがって、これらのファイルをターゲットクライアントにコピーし、便利なディレクトリに配置します。
cd /etc/openvpn/easy-rsa/pki/ scp {ca.crt,issued/client.crt,private/client.key,ta.key} [email protected]:~/
OpenVPNクライアントのインストール
- クライアントとしてLinux/Unixサーバーを使用している場合は、たとえば、respecitveパッケージマネージャーを使用してOpenVPNクライアントをインストールします。
apt install openvpn yum install openvpn
- Windowsマシンから接続している場合は、OpenVPNダウンロードページからOpenVPNクライアントインストーラーをダウンロードしてインストールするだけです。
以下に示すように、クライアントのOpenVPN構成ファイルを作成します。例として、証明書とキーファイルをクライアントのホームディレクトリにコピーしました。
[email protected]:/home/amos# ls ca.crt client.crt client.key ta.key
vim client.ovpn
client tls-client pull dev tun proto udp remote 192.168.43.69 1194 resolv-retry infinite nobind dhcp-option DNS 8.8.8.8 user nobody group nogroup persist-key persist-tun key-direction 1 tls-auth ta.key 1 comp-lzo verb 3 ca ca.crt cert client.crt key client.key auth SHA512
クライアントからOpenVPNサーバーに接続するには、以下のコマンドのいずれかを実行します;
sudo openvpn client.ovpn
または
sudo openvpn --config client.ovpn
接続が成功すると、Initialization Sequence Completed
が表示されます。 。
Mon Dec 31 03:54:39 2018 TUN/TAP device tun0 opened Mon Dec 31 03:54:39 2018 TUN/TAP TX queue length set to 100 Mon Dec 31 03:54:39 2018 do_ifconfig, tt->did_ifconfig_ipv6_setup=0 Mon Dec 31 03:54:39 2018 /sbin/ip link set dev tun0 up mtu 1500 Mon Dec 31 03:54:39 2018 /sbin/ip addr add dev tun0 172.16.0.2/24 broadcast 172.16.0.255 Mon Dec 31 03:54:39 2018 /sbin/ip route add 192.168.43.69/32 dev enp0s8 Mon Dec 31 03:54:39 2018 /sbin/ip route add 0.0.0.0/1 via 172.16.0.1 Mon Dec 31 03:54:39 2018 /sbin/ip route add 128.0.0.0/1 via 172.16.0.1 Mon Dec 31 03:54:39 2018 GID set to nogroup Mon Dec 31 03:54:39 2018 UID set to nobody Mon Dec 31 03:54:39 2018 Initialization Sequence Completed
インターフェイスを確認できる場合は、トンネリングインターフェイスが作成されていることを確認してください。
ip add sh tun0 20: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 172.16.0.2/24 brd 172.16.0.255 scope global tun0 valid_lft forever preferred_lft forever inet6 fe80::dc37:c115:60f:6b86/64 scope link flags 800 valid_lft forever preferred_lft forever
これで、VPNサーバーに正常に接続できました。
これで、OpenVPNサーバーをFedora 29 /CentOS7にインストールしてセットアップする方法について説明しました。OpenVPNサーバーは完全に機能しています。楽しみ。
関連チュートリアル
Ubuntu18.04でStrongSwanを使用してIPSECVPNを構成する
Ubuntu 18.04 /CentOS8でstrongSwanVPNクライアントを構成する
Debian10でStrongSwanを使用してIPSECVPNをセットアップする