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

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

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

Source: https://habr.com/ru/post/J67209/


All Articles