このモデルの主な利点:
- シンプル:セットアップは1時間未満で完了し、特別な知識は必要ありません。
 - 経済的に:トラフィックはlzoによって圧縮されます。
 - 安全:すべてのトラフィックは暗号化され、クライアントはクライアント間で分割されます。
 - 時にはそれが何らかの形で異なっていることもあります。 :)
 
これらの点にもかかわらず、HabrahabrでのOpenVPNの構成に関する通常の記事は見つかりませんでした。 まあ、私は自分でそれを修正しようとします。
特に技術的な詳細には触れないようにしますが、カーネルの構築と配布キットへのソフトウェアのインストールの原則については説明しません。これは記事の範囲外です。
OpenVPN-2.0.9とGentoo Linuxをサーバーとして、LinuxまたはWindowsをクライアントとして基盤としています。
あなたが望むものを決定します。
サーバーがリモートデータセンターにあることを前提とします。 つまり インターネット経由で乗ります。
クライアントとサーバーの間に暗号化されたトンネルをインストールした後、サーバーはインターネット上のすべてのパケットをNAT変換します。 また、サーバーはDNSを提供し、仮想ローカルエリアネットワークのファイアウォールになります。
私たちのサーバーの外部IP(openVPNになるもの):212.212.212.212
内部サーバーIP(トンネルから見える):10.10.0.1
OpenVPN内部アドレスプール:10.10.0.2-10.10.0.128
ネットワーク名:vpnet
サーバー名:vpsrv
クライアント名:vpclient
なぜ外部IPが必要なのか、理解できると思います。 トンネルを上げた後にサーバーに接続するには、内部IPが必要です。 アドレスプールは、サーバーが接続されたクライアントに発行するアドレスです。
ネットワーク名は、confの名前です。 これらのconf内のファイルとサーバー名。 ファイル。 クライアント名とサーバー名=キーファイル名。
Gentoo Linux 2008.0がサーバーにインストールされ、最新バージョンに更新されます。 カーネルは2.6.29です。 すべての設定はSSHを介して行われます。
カーネルのカスタマイズ。
私はすぐに注意します、この段階では、あなたは非常に慎重で注意を払う必要があります。 誰もが忘れた場合。
カーネルには、サーバー上の以下のオプションが含まれている必要があります。 クライアントにはTUNとipv4のみが必要です。
カーネルでは、次の機能が必要です。構成からの抜粋を引用します。
CONFIG_NF_NAT=m 
      
        
        
        
      
     CONFIG_NF_NAT_PPTP=m 
      
        
        
        
      
     CONFIG_NETFILTER=y 
      
        
        
        
      
     CONFIG_TUN=m 
      
        
        
        
      
    
      
      もちろん、ipv4、ネットワークカード、およびその他のハードウェアのサポート。 カーネルを組み立ててインストールします。 genkernelを使用できます。 再起動します。
サーバーのセットアップ
ソフトウェアのインストール
:)サーバーが再起動から戻った場合、ソフトウェアのインストールに進みます。
emerge --sync 
      
        
        
        
      
     emerge openvpn bind bind-tools iptables 
      
        
        
        
      
    
      
      時々、長い間待っています。 インストール後、/ etc / init.d /に移動して実行します:
ln -s openvpn openvpn.vpnet 
      
        
        
        
      
     rc-update add openvpn.vpnet default 
      
        
        
        
      
     rc-update add named default 
      
        
        
        
      
     rc-update iptables default 
      
        
        
        
      
     ./iptables save 
      
        
        
        
      
    
      
      自分でシンボリックリンクを作成することで、 openvpnにvpnet設定を使用するように指示しました 。 将来的には、次のように実行してください。
/etc/init.d/openvpn.vpnet start 
      
        
        
        
      
    
      
      開始するものがないため、実行する必要はありません。 :)
さらに、iptables、named、openvpnをスタートアップに追加しました。
必要なディレクトリとファイルを作成します。
mkdir /etc/openvpn/vpnet/ 
      
        
        
        
      
     mkdir /etc/openvpn/vpnet/keys 
      
        
        
        
      
     touch /var/log/openvpn.log 
      
        
        
        
      
     touch /etc/openvpn/vpnet.conf 
      
        
        
        
      
    
      
      キー生成。
/ usr / share / openvpn / easy-rsa /に移動します。 varsファイルを開き、設定を入力します。
export EASY_RSA="/usr/share/openvpn/easy-rsa/" #  easy-rsa. 
      
        
        
        
      
     export KEY_CONFIG="$EASY_RSA/openssl.cnf" # OpenSSL 
      
        
        
        
      
     export KEY_DIR="/etc/openvpn/vpnet/keys" #,      . 
      
        
        
        
      
     export KEY_SIZE=1024 #   
      
        
        
        
      
     export CA_EXPIRE=3650 #   CA 
      
        
        
        
      
     export KEY_EXPIRE=3650 #    
      
        
        
        
      
     export KEY_COUNTRY="RU" #    
      
        
        
        
      
     export KEY_PROVINCE="XX" # Province,   
      
        
        
        
      
     export KEY_CITY="Town" #  
      
        
        
        
      
     export KEY_ORG="Companyname" #  
      
        
        
        
      
     export KEY_EMAIL="test@mail.ru" # Email 
      
        
        
        
      
    
      
      当然、値(会社、キーへのパス、easy-rsa、電子メール)をニーズに合わせて変更する必要があります。
変数をインポートしています: source ./vars
次に、キーを作成します。
./clean-all #   ,   . 
      
        
        
        
      
     openvpn --genkey --secret ta.key #  TLS-auth 
      
        
        
        
      
     ./build-dh # -. 
      
        
        
        
      
     ./pkitool --initca # Certificate Authority  . 
      
        
        
        
      
     ./pkitool --server vpsrv #  . 
      
        
        
        
      
     ./pkitool vpclient #  . 
      
        
        
        
      
    
      
      そして残り物を正しい場所に移動します:
mv ./ta.key /etc/openvpn/vpnet/keys 
      
        
        
        
      
    
      
      すべてのキーの準備ができました。
サーバーのセットアップ
/ etc / openvpn /に移動し、 vpnet.confを開いてそこに書き込みます。
mode server 
      
        
        
        
      
     tls-server 
      
        
        
        
      
     proto tcp-server 
      
        
        
        
      
     dev tap 
      
        
        
        
      
     port 5555 #  
      
        
        
        
      
     daemon 
      
        
        
        
      
     tls-auth /etc/openvpn/vpnet/keys/ta.key 0 
      
        
        
        
      
     ca /etc/openvpn/vpnet/keys/ca.crt 
      
        
        
        
      
     cert /etc/openvpn/vpnet/keys/vpsrv.crt 
      
        
        
        
      
     key /etc/openvpn/vpnet/keys/vpsrv.key 
      
        
        
        
      
     dh /etc/openvpn/vpnet/keys/dh1024.pem 
      
        
        
        
      
     ifconfig 10.10.0.1 255.255.255.0 #  IP  
      
        
        
        
      
     ifconfig-pool 10.10.0.2 10.10.0.128 #  . 
      
        
        
        
      
     push "redirect-gateway def1" #  default gateway  vpn-.    - . 
      
        
        
        
      
     push "route-gateway 10.10.0.1" 
      
        
        
        
      
     duplicate-cn 
      
        
        
        
      
     verb 3 
      
        
        
        
      
     cipher DES-EDE3-CBC #  . 
      
        
        
        
      
     persist-key 
      
        
        
        
      
     log-append /var/log/openvpn.log # -. 
      
        
        
        
      
     persist-tun 
      
        
        
        
      
     comp-lzo 
      
        
        
        
      
    
      
      原則として、すべてのオプションは明確です。 特に重要なコメントに注目しました。 方法と名前、住所-自分で修正する必要があります。
これで、サーバーはコマンド/etc/init.d/openvpn.vpnet startで起動できます
問題が発生した場合、詳細はログファイルで確認できます。
NAT
サーバーがパケットを外部ネットワークにリリースするには、NATを構成する必要があります。 簡単です。
iptablesを準備して起動します。
/etc/init.d/iptables save 
      
        
        
        
      
     /etc/init.d/iptables start 
      
        
        
        
      
    
      
      IP転送サポートを有効にします。
sysctl net.ipv4.ip_forward=1 
      
        
        
        
      
     echo "sysctl net.ipv4.ip_forward = 1" >> /etc/sysctl.conf 
      
        
        
        
      
    
      
      ファイアウォールルールを追加します。
iptables -v -t nat -A POSTROUTING -o EXTERNAL_IF -s VPN_NET/24 -j SNAT --to-source SERVER_IP 
      
        
        
        
      
    
      
      EXTERNAL_IF、VPN_NET、およびSERVER_IPは、それぞれ外部インターフェイス、VPNネットワーク、および外部(!)IPサーバーに置き換えます。
繰り返しますが、/ etc / init.d / iptables saveを実行して、システムの起動時にルールが適用されるようにします。
すべて、あなたは働くことができます。
クライアントのセットアップ
ソフトウェアをインストールし、パスを作成します。
emerge openvpn 
      
        
        
        
      
     cd /etc/init.d/ 
      
        
        
        
      
     ln -s openvpn openvpn.vpnet-client 
      
        
        
        
      
     rc-update add openvpn.vpnet-client default 
      
        
        
        
      
     
      
        
        
        
      
     mkdir /etc/openvpn/vpnet 
      
        
        
        
      
     mkdir /etc/openvpn/vpnet/client_keys 
      
        
        
        
      
     touch /etc/openvpn/vpnet-client.conf 
      
        
        
        
      
    
      
      サーバーからファイルを取得します。
ca.crt
vpclient.crt
vpclient.key
ta.key
クライアントの/ etc / openvpn / vpnet / client_keys /にドロップします。
/etc/openvpn/vpnet-client.confの編集:
tls-client 
      
        
        
        
      
     proto tcp-client 
      
        
        
        
      
     remote 212.212.212.212 
      
        
        
        
      
     dev tap 
      
        
        
        
      
     port 5555 
      
        
        
        
      
     cd /etc/openvpn/vpnet 
      
        
        
        
      
     pull 
      
        
        
        
      
     tls-auth /etc/openvpn/vpnet/client_keys/ta.key 1 
      
        
        
        
      
     ca /etc/openvpn/vpnet/client_keys/ca.crt 
      
        
        
        
      
     cert /etc/openvpn/vpnet/client_keys/vpclient.crt 
      
        
        
        
      
     key /etc/openvpn/vpnet/client_keys/vpclient.key 
      
        
        
        
      
     cipher DES-EDE3-CBC 
      
        
        
        
      
     log-append /var/log/openvpn.log 
      
        
        
        
      
     comp-lzo 
      
        
        
        
      
    
      
      クライアントとサーバーの暗号化および圧縮オプションは一致する必要があります。
クライアントを起動します。 サーバーへの接続が自動的に確立され、トンネルが作成されます。デフォルトゲートウェイ-VPNサーバー。 すべてが正しく完了したら、インターネットにアクセスできます。
セットアップが完了しました。
コメントの質問に答えることができます。