こんにちは、%ユーザー名%。 それはすべて、真夜中のスカイプコールから始まりました。 一番下の行は、「義理、私はゲームで高いpingを持っています、助けて」です。 そして、私は手伝うことにしました。 ヘルプツールは
OpenVPNになりました 。 カットの下には、多くのテキスト、いくつかの設定、および問題の本質の説明があります。 同様のマニュアルはすでに多数ありますが、いくつかの落とし穴が記載されていないため、このマニュアルを作成する機会となりました。
そのため、pingが高いという問題は、ウクライナのプロバイダーUkrTelecomのすべての顧客に関連しています(プロバイダーを変更することは、合理的な価格で代替手段がない民間セクターのため、問題を解決するオプションではないことにすぐに注意します)。 ハリコフからモスクワまで、pingは100ミリ秒以上かかります。 トレースの結果によれば、通信がドイツまたはスイスのいずれかを通過しており、約50ミリ秒の損失があったことが明らかでした。 うーん、私は考えて、これを修正することにしました。 プロバイダーへの手紙や電話では何も得られず、答えは「ルートを変更することはできません」でした。 さて、私たちのものは消えませんでした?! 解決済み:キエフのOpenVPNサーバー(直接接続)とモスクワへの直接ルート。 今後、pingが100〜120ミリ秒から50〜60ミリ秒に2倍に減少したことをお知らせします。
チャレンジ :
- 基本設定のOpenVPNサーバー
- すべてのトラフィックが標準ルートを通り、特定のサブネットへのトラフィックのみがサーバーを通過するように構成されたWindowsマシン上のOpenVPNクライアント
- 認証を証明書だけでなく、「ログイン:パスワード」のペアで整理します。 さて、私たちの義父は「ある種の」証明書の信頼性を信じていません。また、[sarcasm] login-passwordはyesであり、信頼できます[/ sarcasm]
すべての設定は、サーバー側のUbuntu 11.04とクライアントのWindows 7に関連しています。
そのため、まず、VDSまたはVPSサーバーテスト用のアプリケーションを作成します。 判明したように、UbuntuカーネルのtunモジュールがVDSまたはVPSで有効になっているかどうかをすぐにテクニカルサポートに確認することをお勧めします。 そして、サポートから私に言われたように、最初のサーバーには「OpenVZテクノロジーの限界」があったため、2番目のサーバーをゼロから設定する必要がありました。 マニュアルにはこのニュアンスはありませんでしたが。 その結果、4時間(テストサーバーのアプリケーションの確認待ちが2、設定が1つ、「動作しない理由」が1つ)。
サーバー
Ubuntuを実行しているサーバーのセットアップの基本は書いていません。この種のことは既にネットワークで行われています。 したがって、すぐにポイントに。
開始するには、OpenVPN自体をインストールします。
apt-get install openvpn
その後、サーバーとクライアントの証明書の作成を開始します。
cd /usr/share/doc/openvpn/examples/easy-rsa/2.0/
変数を変更できます(原則的には必要ありません)
vi ./vars # export KEY_SIZE=1024 # , -, , export KEY_EXPIRE=3650 # . , 10 # set KEY_COUNTRY=UA set KEY_PROVINCE=KH set KEY_CITY=Kharkov set KEY_ORG=Zadrot`s_Home set KEY_EMAIL=mail@host.domain # , , ( , … ) KEY_CONFIG=***.cnf
次に、いくつかの証明書を生成します。 証明書を生成したくない場合はすぐに警告します。このディレクトリのKEY_CONFIGパラメーターで指定された名前のファイルがあるかどうかを確認してください。 そして、私のパラメータに「openssl.cnf」が書き込まれ、ディレクトリには「openssl-0-9-0.cnf」、「openssl-1.0.0-old.cnf」などのファイルがいくつかありました。 「openssl-1.0.0.cnf」を「openssl.cnf」に変更して名前を変更したところ、見事に機能しました。
./build-ca ./build-key-server server ./build-dh # /etc/openvpn/ mv ./keys/ca.crt /etc/openvpn mv ./keys/server.crt /etc/openvpn mv ./keys/server.key /etc/openvpn mv ./keys/dh1024.pem /etc/openvpn # ./build-key-pkcs12 gamer # gamer , Export password,
サーバー自体の使用を開始する
# ““ cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/ gzip –d server.conf.gz # Vi server.conf # local _ip_ push "redirect-gateway def1 bypass-dhcp" # , # dns , ( Windows , , ) push "dhcp-option DNS *.*.*.*" push "dhcp-option DNS *.*.*.*" verb 6 # , . # - , - auth-user-pass-verify /etc/openvpn/verify.sh via-file # #client-cert-not-required # , -, username-as-common-name # , - tmp-dir /etc/openvpn/tmp # “mkdir tmp” script-security 2
次に、ログインとパスワードの検証を実行するverify.shスクリプトを作成します。
ネタバレスクリプトテキスト
verify.sh
そして実行可能にします:chmod + x verify.sh
「user1:pass1 user2:pass2 etc.」という形式でスペースを含むuser.passファイルを作成します。
最後のコードはNATを設定し、自動実行に追加することです
vi /etc/sysctl.conf net.ipv4.ip_forward=1 # vi /etc/rc.local # : iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE # , ifconfig
さて、サーバーの準備ができました。サーバーを再起動して、クライアントを構成できます。
お客様
まず、OpenVPN for Winをインストールします。 「サービス」(別名「テスト」)のエンドユーザーはコンピューターコンピューティングの分野にあまり精通していないため、ショートカットの設定に「管理者として実行」を配置し、毎回RMBをクリックしないようにします(そうでない場合、ルートは登録されません)
サーバーからSSHまたはFTP経由でファイルをプルします。
/usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/ca.crt /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/gamer.crt /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/gamer.csr /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/gamer.key /usr/share/doc/openvpn/examples/easy-rsa/2.0/keys/gamer.p12
そしてそれらをにコピーします
%ProgramFiles%\OpenVPN\config
同じ場所で、次の内容のプレーンテキストのconfig.ovpnファイルを作成します。
# 123123 Client # dev tun proto udp remote *.*.*.* 1194 # ip ( ) resolv-retry infinite nobind persist-key persist-tun ca ca.crt # cert client.crt # key client.key # comp-lzo verb 3 remote-cert-tls server pull route 109.105.0.0 255.255.0.0 # , , OpenVPN, auth-user-pass # -,
さて、すべての準備が整ったので、サーバーを再起動し、クライアントトレイのOpenVPNアイコンおよび対応する「接続」項目を介してサーバーへの接続を試みます。 証明書のパスワード、ログイン、パスワード、および出来上がりを入力します。

サーバーに接続する前後に確認してください。
だった32バイトのデータを含むpointblank.ru [109.105.130.101]とのパケット交換:
109.105.130.101からの返信:バイト= 32時間= 107ms TTL = 245
109.105.130.101からの返信:バイト= 32時間= 111ms TTL = 245
109.105.130.101からの返信:バイト= 32時間= 104ms TTL = 245
109.105.130.101からの返信:バイト= 32時間= 108ms TTL = 245
109.105.130.101のping統計:
パケット:送信= 4、受信= 4、損失= 0
(0%の損失)
ミリ秒単位の概算の受信/送信時間:
最小= 104 ms、最大= 111 ms、平均= 107 ms
になっています32バイトのデータを含むpointblank.ru [109.105.130.101]とのパケット交換:
109.105.130.101からの返信:バイト= 32時間= 55ms TTL = 248
109.105.130.101からの返信:バイト= 32時間= 55ms TTL = 248
109.105.130.101からの返信:バイト= 32時間= 58ms TTL = 248
109.105.130.101からの返信:バイト= 32時間= 55ms TTL = 248
109.105.130.101のping統計:
パケット:送信= 4、受信= 4、損失= 0
(0%の損失)
ミリ秒単位の概算の受信/送信時間:
最小= 55ms、最大= 58ms、平均= 55ms
pingは107ミリ秒から55ミリ秒に減少しました。
まとめ
私たちが得たもの :
- モスクワへのPingを2倍削減
- OpenVPNサーバー。初期の目的だけでなく、個人的な暗号化チャネルとしても使用できます。
- 粘土の義理の象として喜んでいます。
使用済み :
- 2時間の純粋な時間(投稿に記載されている一部のレーキに遭遇しないことを条件)
- VDSサーバーで月額6ドル
結論 :誰もが幸せであり、すべてが1週間も失敗することなく2週間機能しています。
PS:この投稿で私が犯した間違い(文法的およびその他すべて)を指摘してください。
UPD :
psyXが述べたように、同じ証明書を持つクライアントを同時に接続する機能を追加するには、server.confファイルに次の行を追加する必要があります。
duplicate-cn
<