このガイドでは、RPMおよびDEBベースのシステムにOpenVPNサーバーをインストールして構成する方法について説明します。このガイドでは、 openvpn-installというスクリプトを使用します これにより、OpenVPNサーバーのインストールと構成プロセス全体が自動化されます。このスクリプトは、OpenVPNを以前に使用したことがない場合でも、数分で独自のVPNサーバーをセットアップするのに役立ちます。
始めましょう。
LinuxでのOpenVPNサーバーのインストールと構成
このガイドの目的のために、CentOS764ビット版で実行されている2つのシステムを使用します。 1つはOpenVPNサーバーとして機能し、もう1つはopenVPNクライアントとして機能します。以下は私のテストボックスの詳細です。
OpenVPNサーバー:
- OS :CentOS764ビット最小版
- IP :192.168.43.150/24
- ホスト名 :vpnserver.ostechnix.local
OpenVPNクライアント:
- OS :CentOS764ビット最小版
- IP :192.168.43.199 / 24
まず、サーバー側の構成を確認します。
OpenVPNサーバーのインストールと構成
GitHubページからopenvpn-installスクリプトをダウンロードします。
wget https://git.io/vpn -O openvpn-install.sh
次に、rootユーザーとして次のコマンドを使用してスクリプトを実行します。
bash openvpn-install.sh
一連の質問に答えるように求められます。それに応じて答えてください。
VPNサーバーのIPアドレスが正しいことを確認してください。複数のIPアドレスを使用する場合は、OpenVPNがリッスンするネットワークインターフェースのIPを入力します。
Welcome to this quick OpenVPN "road warrior" installer I need to ask you a few questions before starting the setup You can leave the default options and just press enter if you are ok with them First I need to know the IPv4 address of the network interface you want OpenVPN listening to. IP address: 192.168.43.150
使用するプロトコルを選択します。 tcpポートを使用したいので、2番を選択しました。
Which protocol do you want for OpenVPN connections? 1) UDP (recommended) 2) TCP Protocol [1-2]: 2
ポート番号を入力します。
What port do you want OpenVPN listening to? Port: 1194
VPNで使用するDNSサーバーの詳細を入力します。 Google DNSリゾルバーを使用したいので、オプション2を選択しました。
Which DNS do you want to use with the VPN? 1) Current system resolvers 2) Google 3) OpenDNS 4) NTT 5) Hurricane Electric 6) Verisign DNS [1-6]: 2
最終段階に到達しました。クライアント証明書名を入力します。名前は1語で、特殊文字を含めないでください。
Finally, tell me your name for the client certificate Please, use one word only, no special characters Client name: client
ENTERキーを押して、OPENVPNサーバーのインストールを開始します。
Okay, that was all I needed. We are ready to setup your OpenVPN server now Press any key to continue...
Npw、このスクリプトは、OpenVPNサーバーをセットアップするために必要なすべてのパッケージのインストールを開始します。 Anslo、VPNクライアントで認証するために必要なすべてのキーと証明書を作成します。これには数分かかります。
最後に、スクリプトは外部IPアドレスがあるかどうかを尋ねます。ない場合は、空白のままにして無視し、Enterキーを押してください。
If your server is NATed (e.g. LowEndSpirit), I need to know the external IP If that's not the case, just ignore this and leave the next field blank External IP: Finished! Your client configuration is available at /root/client.ovpn If you want to add more clients, you simply need to run this script again!
OpenVPNサーバーのインストールと構成が完了しました。最後の出力でわかるように、クライアント構成の詳細はファイル /root/client.ovpnに保存されます 。このファイルをすべてのVPNクライアントシステムにコピーする必要があります。
client.ovpnファイルをVPNクライアントにコピーしました
scp client.ovpn [email protected]:/etc/openvpn/
次に、OpenVPNクライアントを構成する必要があります。
ダウンロード -無料ビデオ:「侵入テスト方法論トレーニングコース(99ドル相当!)無料」OpenVPNクライアントの構成
VPNサーバーシステムからclient.ovpnファイルをコピーしたことを確認してください。このファイルはすでにVPNクライアントシステムの/etc/openvpn/ディレクトリにコピーしています。
配布パッケージマネージャーを使用してOpenVPNパッケージをインストールします。
yum install openvpn
次に、次のコマンドを実行して、VPNサーバーとの安全な接続を確立します。
openvpn --config /etc/openvpn/client.ovpn
出力例:
Wed Apr 5 18:50:44 2017 Unrecognized option or missing parameter(s) in /etc/openvpn/client.ovpn:14: block-outside-dns (2.3.14) Wed Apr 5 18:50:44 2017 OpenVPN 2.3.14 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 7 2016 Wed Apr 5 18:50:44 2017 library versions: OpenSSL 1.0.1e-fips 11 Feb 2013, LZO 2.06 Wed Apr 5 18:50:44 2017 Control Channel Authentication: tls-auth using INLINE static key file Wed Apr 5 18:50:44 2017 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Apr 5 18:50:44 2017 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Apr 5 18:50:44 2017 Socket Buffers: R=[87380->87380] S=[16384->16384] Wed Apr 5 18:50:44 2017 Attempting to establish TCP connection with [AF_INET]192.168.43.150:1194 [nonblock] Wed Apr 5 18:50:45 2017 TCP connection established with [AF_INET]192.168.43.150:1194 Wed Apr 5 18:50:45 2017 TCPv4_CLIENT link local: [undef] Wed Apr 5 18:50:45 2017 TCPv4_CLIENT link remote: [AF_INET]192.168.43.150:1194 Wed Apr 5 18:50:45 2017 TLS: Initial packet from [AF_INET]192.168.43.150:1194, sid=c6fb554e 362eb192 Wed Apr 5 18:50:45 2017 VERIFY OK: depth=1, CN=ChangeMe Wed Apr 5 18:50:45 2017 Validating certificate key usage Wed Apr 5 18:50:45 2017 ++ Certificate has key usage 00a0, expects 00a0 Wed Apr 5 18:50:45 2017 VERIFY KU OK Wed Apr 5 18:50:45 2017 Validating certificate extended key usage Wed Apr 5 18:50:45 2017 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication Wed Apr 5 18:50:45 2017 VERIFY EKU OK Wed Apr 5 18:50:45 2017 VERIFY OK: depth=0, CN=server Wed Apr 5 18:50:45 2017 Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit key Wed Apr 5 18:50:45 2017 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Apr 5 18:50:45 2017 Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit key Wed Apr 5 18:50:45 2017 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Apr 5 18:50:45 2017 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA Wed Apr 5 18:50:45 2017 [server] Peer Connection Initiated with [AF_INET]192.168.43.150:1194 Wed Apr 5 18:50:48 2017 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Wed Apr 5 18:50:48 2017 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 8.8.8.8,dhcp-option DNS 8.8.4.4,route-gateway 10.8.0.1,topology subnet,ping 10,ping-restart 120,ifconfig 10.8.0.2 255.255.255.0' Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: timers and/or timeouts modified Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: --ifconfig/up options modified Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: route options modified Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: route-related options modified Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified Wed Apr 5 18:50:48 2017 ROUTE_GATEWAY 192.168.43.1/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:28:98:6b Wed Apr 5 18:50:48 2017 TUN/TAP device tun0 opened Wed Apr 5 18:50:48 2017 TUN/TAP TX queue length set to 100 Wed Apr 5 18:50:48 2017 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 Wed Apr 5 18:50:48 2017 /usr/sbin/ip link set dev tun0 up mtu 1500 Wed Apr 5 18:50:48 2017 /usr/sbin/ip addr add dev tun0 10.8.0.2/24 broadcast 10.8.0.255 Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 192.168.43.150/32 dev enp0s3 Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 0.0.0.0/1 via 10.8.0.1 Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 128.0.0.0/1 via 10.8.0.1 Wed Apr 5 18:50:48 2017 Initialization Sequence Completed
次に、 tun0かどうかを確認します (VPNインターフェース)が作成され、「ipaddr」コマンドを使用してVPNインターフェースのIPアドレスを確認します。
ip addr
出力例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:28:98:6b brd ff:ff:ff:ff:ff:ff inet 192.168.43.199/24 brd 192.168.43.255 scope global dynamic enp0s3 valid_lft 42359sec preferred_lft 42359sec inet6 fe80::a00:27ff:fe28:986b/64 scope link valid_lft forever preferred_lft forever 3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100 link/none inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0 valid_lft forever preferred_lft forever
上記の出力からわかるように、VPNサーバーは自動的にIPアドレス10.8.0.2をVPNクライアントに割り当てました。
次に、VPNクライアントシステムからVPNサーバーにpingを実行してみます。
ping -c3 10.8.0.1
出力例:
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data. 64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=1.05 ms 64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=1.94 ms 64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=2.49 ms --- 10.8.0.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 1.057/1.832/2.495/0.594 ms
おめでとう!これで、CentOSにOpenVPNサーバーとクライアントが正常にインストールおよび構成されました。この方法は、UbuntuやLinuxMintなどのDEBベースのシステムでも同じです。手動インストールとは異なり、このスクリプトを使用すると、openvpnのインストールと構成がはるかに簡単になります。
乾杯!