Linux CentOS/RHELにOpenVPNサーバーをインストールして構成する
この記事では、 OpenVPNのインストールと構成について検討します。 Linux CentOS / RHEL(7/8)を実行しているサーバーで、構成済みのOpenVPNサーバーを使用してNATの背後にある2台のリモートコンピューター(またはオフィス)を単一のネットワークに参加させる方法を示します。 VPNクライアントは、証明書を使用して認証されます。
VPN は、パブリックネットワークまたはインターネット上に安全なネットワークを構築できるようにする一連のテクノロジーです。 VPNを使用すると、さまざまなデバイスやネットワークをインターネット経由で1つの安全なローカルネットワークに接続できます。
OpenVPN は、OpenSSLに基づくVPNテクノロジーのオープンソースSSL/TLSベースの実装の1つです。 OpenVPNを使用すると、リモートオフィスとNATデバイスの背後にある個々のコンピューターの両方を単一のネットワークに接続できます。
OpenVPNとEasy-RSAをインストールする
最初のステップでは、EPELリポジトリに接続し、ホストを更新する必要があります。
# yum install epel-release -y
# yum update -y
システムが更新されたら、 OpenVPNをインストールします およびEasy-RSA yumパッケージマネージャーを使用します(VPNサーバーにPKIキーインフラストラクチャを実装するために必要になります)。
# yum install openvpn easy-rsa -y
Easy-RSAを構成してX.509証明書を生成する方法
すべてのeasy-rsaをコピーします / etc / openvpn /へのスクリプト :
# cp -r /usr/share/easy-rsa /etc/openvpn/
/ etc / openvpn / easy-rsa / 3 /に移動します 変数を作成します そこにファイルする:
# cd /etc/openvpn/easy-rsa/3/
# nano vars
ファイルの内容を追加します(必要に応じて構成を変更できます):
set_var EASYRSA "$PWD" set_var EASYRSA_PKI "$EASYRSA/pki" set_var EASYRSA_DN "cn_only" set_var EASYRSA_REQ_COUNTRY "DE" set_var EASYRSA_REQ_PROVINCE "MUN" set_var EASYRSA_REQ_CITY "BY" set_var EASYRSA_REQ_ORG "WOSHUB" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "IT dept" set_var EASYRSA_KEY_SIZE 4096 set_var EASYRSA_ALGO rsa set_var EASYRSA_CA_EXPIRE 7500 set_var EASYRSA_CERT_EXPIRE 3650 set_var EASYRSA_NS_SUPPORT "no" set_var EASYRSA_NS_COMMENT "CERTIFICATE AUTHORITY" set_var EASYRSA_EXT_DIR "$EASYRSA/x509-types" set_var EASYRSA_SSL_CONF "$EASYRSA/openssl-1.0.cnf" set_var EASYRSA_DIGEST "sha512"
ファイル内の任意のデータを指定できますが、サーバーの構成やその後の操作には影響しません。
ファイルは実行可能である必要があるため、次のコマンドを実行します:
# chmod +x vars
キーを作成する前に、 PKIを初期化します ディレクトリを作成し、 CAを作成します キー。# cd /etc/openvpn/easy-rsa/3/
# ./easyrsa init-pki
Note: using Easy-RSA configuration from: ./vars init-pki complete; you may now create a CA or requests. Your newly created PKI dir is: /etc/openvpn/easy-rsa/3/pkiです。
CAを作成する キー:
# ./easyrsa build-ca
コマンドを実行した後、キーと証明書を生成するためにパスワードを入力する必要があります。後で証明書に署名するためにパスワードが必要になります。
サーバーキーを作成します(サーバー名は vpn.woshub.com ):
nopass オプションはパスワードを無効にします
# ./easyrsa gen-req vpn.woshub.com nopass
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Generating a 4096 bit RSA private key .........................++ writing new private key to '/etc/openvpn/easy-rsa/3/pki/private/vpn.woshub.com.key.R4IYCbD1zP' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [vpn.woshub.com]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/3/pki/reqs/vpn.woshub.com.req key: /etc/openvpn/easy-rsa/3/pki/private/vpn.woshub.com.key
証明書を発行するときは、 Enterを押します [共通名]列。
CA証明書を使用してvpn.woshub.comキーに署名します:
# ./easyrsa sign-req server vpn.woshub.com
証明書に署名するには、 CAを発行するときに設定したパスワードが必要です。 証明書:
スクリーンショットに示されているように、はいを入力する必要があります およびCA 処理中のパスワード。
証明書がエラーなしで生成されたことを確認するには、次のコマンドを実行します。
# openssl verify -CAfile pki/ca.crt pki/issued/vpn.woshub.com.crt
pki/issued/vpn.woshub.com.crt: OK
すべてのOpenVPNサーバー証明書が作成されました。
- ルート証明書
pki/ca.crt
- プライベートサーバーキー
pki/private/vpn.woshub.com.key
- サーバー証明書
pki/issued/vpn.woshub.com.crt
クライアントキーを生成するには、次のコマンドを実行します。
# ./easyrsa gen-req client_name nopass
admin1を生成しましょう クライアントキー:
# ./easyrsa gen-req admin1 nopass
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Generating a 4096 bit RSA private key ..........++ writing new private key to '/etc/openvpn/easy-rsa/3/pki/private/admin1.key.R5OY6reT2e' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Common Name (eg: your user, host, or server name) [admin1]: Keypair and certificate request completed. Your files are: req: /etc/openvpn/easy-rsa/3/pki/reqs/admin1.req key: /etc/openvpn/easy-rsa/3/pki/private/admin1.key
サーバーキーなどのCA証明書を使用して署名する必要があります:
# ./easyrsa sign-req client admin1
ユーザーの証明書が作成されました。
さらに、鍵交換に使用するDiffie-Hellman鍵を生成する必要があります:
# ./easyrsa gen-dh
生成には時間がかかります:
次に、TSL証明書を生成します:
# openvpn --genkey --secret ta.key
後でクライアント証明書を取り消す場合は、CRLキーを生成する必要があります:
# ./easyrsa gen-crl
Note: using Easy-RSA configuration from: ./vars Using SSL: openssl OpenSSL 1.0.2k-fips 26 Jan 2017 Using configuration from /etc/openvpn/easy-rsa/3/pki/safessl-easyrsa.cnf Enter pass phrase for /etc/openvpn/easy-rsa/3/pki/private/ca.key: An updated CRL has been created. CRL file: /etc/openvpn/easy-rsa/3/pki/crl.pem
証明書を取り消すには、次のコマンドを実行します:
./easyrsa revoke admin1
—ここで admin1 証明書名です
必要な証明書が作成されました。次に、それらを作業ディレクトリにコピーします。
サーバー証明書は次のとおりです。
# cp pki/ca.crt /etc/openvpn/server/
# cp pki/issued/vpn.woshub.com.crt /etc/openvpn/server/
# cp pki/private/vpn.woshub.com.key /etc/openvpn/server/
# cp pki/private/dh.pem /etc/openvpn/server/
# cp pki/private/ta.key /etc/openvpn/server/
# cp pki/crl.pem /etc/openvpn/server/
クライアント証明書は次のとおりです。
# cp pki/issued/admin1.crt /etc/openvpn/client/
# cp pki/private/admin1.key /etc/openvpn/client/
OpenVPNサーバー構成ファイル、ファイアウォールルール
OpenVPN構成ファイルの設定に移りましょう。まず、OpenVPN構成ファイル server.confを作成します :
# cd /etc/openvpn/ && nano server.conf
次のようにファイルの内容を変更します。
# Specify the port, protocol and device port 1194 proto udp dev tun # Specify the paths to the server certificates ca /etc/openvpn/server/ca.crt cert /etc/openvpn/server/vpn.woshub.com.crt key /etc/openvpn/server/vpn.woshub.com.key # Paths to key CRL and DH dh /etc/openvpn/server/dh.pem crl-verify /etc/openvpn/server/crl.pem # Specify the IP settings of the network VPN clients will get addresses from server 10.1.2.0 255.255.255.0 push "redirect-gateway def1" # Specify the assigned DNS servers push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" # Allow connection to different clients with the same key duplicate-cn # TLS protection tls-auth /etc/openvpn/server/ta.key 0 cipher AES-256-CBC tls-version-min 1.2 tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256 auth SHA512 auth-nocache # Other configuration details keepalive 20 60 persist-key persist-tun comp-lzo yes daemon user nobody group nobody # Path to the log file log-append /var/log/openvpn.log verb 3
次に、ファイルを保存します。 VPNサーバーにデフォルトのUDPポート1194を指定しましたが、OpenVPN用にサーバー上の任意の空きポートを指定できます。
これで、ファイアウォールルールを設定して、セグメント間の接続とルーティングを許可する必要があります。
Firewalldを使用している場合は、転送を有効にしてください 最初のカーネルモジュール:
# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
# sysctl -p
net.ipv4.ip_forward = 1
openvpnサービスをfirewalldに追加します 、および tun0 トラステッドゾーンへのインターフェース:
# firewall-cmd --permanent --add-service=openvpn
# firewall-cmd --permanent --zone=trusted --add-interface=tun0
ファイアウォールで保護された信頼できるゾーンの「MASQUERADE」をアクティブにします。# firewall-cmd --permanent --zone=trusted --add-masquerade
NATをアクティブ化する:
# firewall-cmd --permanent --direct --passthrough ipv4 -t nat -A POSTROUTING -s 10.1.2.0/24 -o Server_IP -j MASQUERADE
# firewall-cmd –reload
# iptables -t nat -A POSTROUTING -s 10.1.2.0/24 -o eth0 -j MASQUERADE
# iptables -A INPUT -p udp –dport 1194 -j ACCEPT
# service iptables save
OpenVPNサービスを実行し、スタートアップに追加します:
# systemctl start openvpn@server
# systemctl enable openvpn@server
udp \ 1194ポートがopenvpnサービスによってリッスンされていることを確認してください:
# lsof -i:1194
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME openvpn 12327 nobody 5u IPv4 45122 0t0 UDP *:openvpn
ネットワークインターフェースのIP設定を確認してください:
# ip a
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100 link/none inet 10.1.2.1 peer 10.1.2.2/32 scope global tun0 valid_lft forever preferred_lft forever
ご覧のとおり、構成時に指定したネットワークが tun0に追加されます。 デバイス。
これらは、OpenVPNを機能させるための最小設定です。
NATを介してインターネットにアクセスできる2台のリモートコンピューターからOpenVPNサーバーに接続し、それらを1つのネットワークに参加させる方法を見てみましょう。 Windowsを実行しているコンピューターからOpenVPNサーバーに接続するには、公式クライアントを使用しています。公式ウェブサイトからダウンロードできますが、詳細については説明せず、直接構成に移動します。
クライアントをインストールしたら、ここで構成ファイルの作成に進みます:
C:\Program Files\OpenVPN\config\
clientという名前のファイルを作成し、それに次の内容を追加しました。
client dev tun proto udp remote 112.113.114.15 1194 resolv-retry infinite nobind block-outside-dns persist-key persist-tun mute-replay-warnings remote-cert-tls server tls-client auth SHA512 tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1 remote-cert-eku "TLS Web Server Authentication" ca "C:\\Program Files\\OpenVPN\\config\\ca.crt" cert "C:\\Program Files\\OpenVPN\\config\\admin1.crt" key "C:\\Program Files\\OpenVPN\\config\\admin1.key" cipher AES-256-CBC comp-lzo verb 3
構成するには、前に作成したクライアント、セキュリティ、サーバーの証明書が必要です。それらをサーバーからダウンロードして、ローカルフォルダーに配置する必要があります。次に、OpenVPNクライアント構成ファイルでそれらへのパスを指定します。
次に、トレイのOpenVPNアイコンをクリックしてサーバーに接続できます。
接続して、デバイスの次のIPアドレスを取得しました:
IPv4 address. . . . . . . . . . . . : 10.1.2.14 Subnet mask . . . . . . . . . . : 255.255.255.0
NATの背後にある2番目のコンピューターで、同じアクションを実行し、2番目のユーザーの証明書を事前に作成しました。接続後、2台目のPCもVPNネットワークからIPアドレスを取得しました:
IPv4 address. . . . . . . . . . . . : 10.1.2.16 Subnet mask . . . . . . . . . . : 255.255.255.0
接続後、両方のコンピューターは同じネットワーク内にあり、お互いを確認します。
2台目のPCにpingを実行します:
Pinging 10.1.2.16 with 32 bytes of data: Reply from 10.1.2.16: bytes=32 time=73ms TTL=127
最初のPCでpingを実行します:
Pinging 10.1.2.14 with 32 bytes of data: Reply from 10.1.2.14: bytes=32 time=79ms TTL=127
接続された両方のVPNクライアントは、パケットを送信し、ファイルを相互に直接転送できます。したがって、国のさまざまな場所に物理的に配置されている2つのデバイスを1つのローカルネットワークに結合できます。
OpenVPNサーバー上のユーザー用に任意の数のキーまたは証明書を作成できます。新しい証明書が必要な場合は、/ etc / openvpn / easy-rsa/3に対して次のコマンドを実行します。
# ./easyrsa gen-req clientname nopass
# ./easyrsa sign-req client clientname
ネットワークを安全に保つために使用されていない場合は、クライアント証明書を取り消すことを忘れないでください。
-
Linux VPSでCS:GOサーバーを作成する方法
カウンターストライク:グローバルオフェンシブ用のSteamの公式ゲームサーバーは、ほとんどの目的に十分です。ただし、それらを制御することはできません。独自のサーバーを作成すると、次のことができるようになります。 マッチタイム、フリーズタイム、最大プレイヤー数、フレンドリーファイアなどの独自のルールを設定します。ただし、重要なルール、特にこれらのルールに違反しないように注意してください。 友達とプライベートマッチをする。 コンテスト/トーナメントを開催します。 カスタムマップで再生します。 Linuxでゲームサーバーを作成する理由 「これは、Windowsでも、自分のコンピューターでも簡単
-
Linuxサーバーでトラフィックの多いWebサイト用にApacheとPHPを構成する方法
LAMPスタック(Linux、Apache、MySQL、PHP)のインストール方法に関するほとんどすべてのチュートリアルでは、PHPスクリプトの処理に組み込みのApacheモジュールを使用することをお勧めします。たとえば、Ubuntuでは、sudo apt install libapache2-mod-phpなどのコマンドを使用するときにこれを有効にします。 パッケージをインストールします。これにより、Apacheはmpm_preforkを使用するようになります。訪問者がWebサイトにアクセスするたびに、その接続を処理するための新しいプロセスが起動されます。これは、トラフィックが少ないときにう