このモデルの主な利点:
- シンプル:セットアップは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サーバー。 すべてが正しく完了したら、インターネットにアクセスできます。
セットアップが完了しました。
コメントの質問に答えることができます。