OpenVPN:完全なopenVPNゲートウェイの作成

OpenVPNは、 VPNテクノロジー(仮想プライベートネットワーク、仮想プライベートネットワーク)を使用してコンピューター間に暗号化されたトンネルを作成できるシステムです。



このモデルの主な利点:







これらの点にもかかわらず、HabrahabrでのOpenVPNの構成に関する通常の記事は見つかりませんでした。 まあ、私は自分でそれを修正しようとします。



特に技術的な詳細には触れないようにしますが、カーネルの構築と配布キットへのソフトウェアのインストールの原則については説明しません。これは記事の範囲外です。



OpenVPN-2.0.9Gentoo 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サーバー。 すべてが正しく完了したら、インターネットにアクセスできます。



セットアップが完了しました。



コメントの質問に答えることができます。



All Articles