ローカルエリアネットワーク

弊社には、さまざまなデータセンターや都市にあるサーバーのグループがあります。 現時点では、6つのデータセンターを使用しています。 大多数のサーバー間で集中的なトラフィック交換が行われ、データ交換プロトコルが常に必要なレベルの保護を提供するとは限りません。 したがって、使用可能なすべてのサーバー間に共通のローカルエリアネットワークを作成することにしました。 ルーティングを使用したOpenVPNを使用したネットワークの作成は、そのようなネットワークの過度に扱いにくいアーキテクチャのために拒否しました。 私たちの意見では、最も単純で最も便利なオプションはピアツーピアネットワークです。 さらに、ピアツーピアネットワークを作成および構成する方法について詳しく説明します。



作成するには、OpenVPNとBridge-utilsを使用します。

標準OpenVPNネットワークは、OpenVPNを備えた1つ以上のサーバーと、それらに接続するクライアントで構成されます。 OpenVPNはTCPおよびUDP接続をサポートしています。 専用サーバーにはトラフィックフィルタリングが制御されていないため、UDPプロトコルを選択することをお勧めします。さらに、UDPはより高速なプロトコルです。



最初のサーバー



最初のサーバー(実際、これはトラフィック交換ポイントです)は、標準スキームに従って構成されています。 Debianはほとんどのサーバーにインストールされているため、このOSの機能を考慮に入れて、さらなる指示が与えられます。



aptitude install openvpn openvpn-blacklist

cd / etc / openvpn /

cp -R /usr/share/openvpn/easy-rsa/2.0 / etc / openvpn / easy-rsa

mkdir / etc / openvpn /キー

chmod 750 / etc / openvpn /キー




/ etc / openvpn / easy-rsa / varsを次のように編集します。



export EASY_RSA = "/ etc / openvpn / easy-rsa"

export KEY_DIR = "/ etc / openvpn / keys"

エクスポートKEY_SIZE = 2048

エクスポートKEY_COUNTRY = "RU"

エクスポートKEY_PROVINCE = "MSK"

KEY_CITY = "Samara"をエクスポートします

export KEY_ORG = "Regtime Ltd."

export KEY_EMAIL = "support@regtime.net"




さらに、同じスキームに従って、キーを準備します。



cd / etc / openvpn / easy-rsa

。 ./vars

./clean-all

./build-ca

./build-key-server servername

./build-dh




サーバーの最小構成を/ etc / openvpn / udp-serverに作成します 。 さらに多くのパラメーターを指定できます。最適化の可能性は非常に広いです。



dev tap0

プロトUDP

ポート1194

caキー/ca.crt

証明書キー/ servername.crt

キーキー/ servername.key

dhキー/ dh2048.pem

ユーザーなし

グループnogroup

サーバー172.18.5.208 255.255.255.240

永続キー

持続する

ステータス/ dev / shm / openvpn-status-udp

動詞3

クライアント間

client-config-dir ccd-udp

log-append /var/log/openvpn-udp.log

comp-lzo

スクリプトセキュリティ2

up "/etc/init.d/lan0 start"

down /etc/init.d/lan0 stop




接続してサーバーを起動します。



ln -s udp-server udp-server.conf

/etc/init.d/openvpn start




構成の最後の3行に注意してください。 それらはピアツーピアネットワークでこのサーバーを使用することを可能にします。 これはUDPサーバーでのみ実行できることに注意してください。 スクリプト自体は次のようになります-/ etc / init.d / lan0

#!/ bin / bash



###開始情報の開始

#提供:lan0

#必須開始:$ network $ remote_fs $ syslog openvpn

#必須:$ network $ remote_fs $ syslog openvpn

#開始する必要があります:

#すべきこと:

#X-Start-Before:$ x-display-manager gdm kdm xdm wdm ldm sdm nodm

#X-Interactive:true

#デフォルト開始:2 3 4 5

#デフォルト停止:0 1 6

#簡単な説明:lan0サービス

###終了情報の終了



。 / lib / lsb / init-functions



PATH = / bin:/ sbin:/ usr / bin:/ usr / sbin



br = "lan0"

tap = "tap0"

eth = "eth1"

eth_ip = "172.18.5.2"

eth_netmask = "255.255.255.0"

eth_broadcast = "172.18.5.255"



ケース「$ 1」

開始)

brctl addbr $ br

brctl addif $ br $ eth



tで$タップ; する

brctl addif $ br $ t

やった



tで$タップ; する

ifconfig $ t 0.0.0.0 promisc up

やった



ifconfig $ eth 0.0.0.0 promisc up



ifconfig $ br $ eth_ip netmask $ eth_netmask broadcast $ eth_broadcast

;;



停止)

ifconfig $ br down

brctl delbr $ br



ifconfig $ eth $ eth_ip netmask $ eth_netmask broadcast $ eth_broadcast

;;

*)

echo "usage lan0 {start | stop}"



1番出口

;;

エサック

出口0




同じスクリプトをrc.dに使用できます。



update-rc.d lan0のデフォルト




手動開始のシーケンスは次のとおりです。



/etc/init.d/openvpn start

/etc/init.d/lan0 start

手動で停止する場合:

/etc/init.d/lan0 stop

/etc/init.d/openvpn stop




再起動時にOpenVPN lan0が再び上昇することに注意してください。 場合によっては、これは手動で行う必要があります。 たとえば、cronを使用すると、タスクは次のようになります。



[-n "` / sbin / ifconfig tap0` "] && [-z" `/ usr / sbin / brctl show | grep tap0`"] && /etc/init.d/lan0 start




サーバーの準備ができました! 次に、クライアント用のキーと証明書を作成する必要があります。



お客さま



サーバー上で、外部に接続するクライアント用の証明書を作成します。



cd / etc / openvpn / easy-rsa

。 ./vars

./build-keyクライアント




もちろん、各クライアント(ここではクライアント)の名前は一意でなければなりません。

証明書のデータを入力して確認すると、次のファイルが表示されます。



client.crt

client.csr

client.key




クライアント側では、サーバーの/ etc / openvpn / keysディレクトリから次のファイルが必要です。



ca.crt

client.key

client.crt




また、クライアント側でOpenVPNをインストールします。



aptitude install openvpn openvpn-blacklist

mkdir / etc / openvpn /キー

chmod 750 / etc / openvpn /キー




キーと証明書を/ etc / openvpn / keysにコピーします

最も簡単な/etc/openvpn/client.conf構成を作成します。

dev tap0

プロトUDP

クライアント

リモートサーバー1194

無限の解決と再試行

ノバインド

永続キー

持続する

caキー/ca.crt

証明書キー/ client.crt

キーキー/ client.key

comp-lzo

動詞3

status / dev / shm / client-status-udp

ログ/var/log/openvpn-client.log

ping 10

ping-restart 1800

スクリプトセキュリティ2

up "/etc/init.d/lan0 start"

down /etc/init.d/lan0 stop




共通のピアツーピアネットワークに接続するには、サーバーと同じlan0スクリプトが使用されます(eth_ipが正しいものに修正されます)。



多くのサーバー



ネットワークには、複数のトラフィック交換ポイントがある場合があります。 この場合、クライアントがそれらのいずれかに接続し、同じネットワークに入ることができる必要があります。 複雑なことは何もありません。 上記のように、任意の数のサーバーを構成できます。 しかし、2つのニュアンスがあります。

1.各サーバーは、個別の一意のIPアドレスを発行する必要があります。

これは、構成内の1行を置き換えることで実現されます。



サーバー172.18.5.208 255.255.255.240




2. OpenVPNサーバー間で証明書を同期する必要があります。

最も簡単な解決策は、 / etc / openvpn / keysディレクトリをssh 経由で単純にコピーすることです。 しかし、より良い方法があります-rsync。

双方向の交換には、更新のダウンロードとダウンロードの2つのスクリプトが必要です。

ダウンロード- プッシュ

#!/ bin / bash



export RSYNC_RSH = "ssh -c arcfour -o Compression = no -x -l root"



rsync --delete-after \

-zu --modify-window = 10 -aHAX --numeric-ids --sparse \

/ etc / openvpn / keysリモートホスト:/ etc / openvpn / keys


更新- ポップ

#!/ bin / bash



export RSYNC_RSH = "ssh -c arcfour -o Compression = no -x -l root"



rsync --delete-after \

-zu --modify-window = 10 -aHAX --numeric-ids --sparse \

リモートホスト:/ etc / openvpn / keys / etc / openvpn / keys




-delete-afterスイッチに注意してください。 同期後に宛先側にないファイルを削除するために使用されます。 つまり popは、リモートホスト上にないすべてをローカルで削除します。



キーの更新順序も重要です。 通常の状況では、最初の(メイン)OpenVPNサーバーで新しいキーと証明書を作成する必要があり、他のすべてのユーザーはpopを介してそこから更新を受信する必要があります。 したがって、プッシュはまったく必要ありません。 ただし、必要に応じて、任意のサーバーに新しいユーザーを追加できます。その後、最初にプッシュしてダウンロードし、他のすべてのOpenVPNサーバーでポップする必要があります。



相互作用はsshを経由するため、すべてのサーバーはrootとsshキーを交換する必要があります。 キーは次のコマンドを使用して生成できます



ssh-keygen -t rsa -b 2048




を使用してコピー



ssh-copy-idリモートホスト




これらのすべてのサーバーでルートを許可する必要があることに注意してください。 セキュリティのために、パスワード認証を無効にすることができます。 / etc / ssh / sshd_config



PermitRootLoginはい

パスワード認証




ここで、新しいクライアントを追加した後、キーが追加されたサーバーをプッシュし、他のすべてのOpenVPNサーバーでポップする必要があります。







従業員はオフィスで働く必要がない場合もありますが、ローカルネットワークにアクセスする必要があります。 これは、lan0内でも簡単に実装できます。 ただし、オペレーティングシステムとトラフィックフィルタリングの問題にはあいまいさがないため、OpenVPNでは低速でありながら気取らないTCPプロトコルを使用することをお勧めします。



構成/ etc / openvpn / tcp-server:

dev tun0

プロトtcp

ポート1194

caキー/ca.crt

証明書キー/ server.crt

キーキー/ server.key

dhキー/ dh2048.pem

ユーザーなし

グループnogroup

サーバー172.18.5.248 255.255.255.240

永続キー

持続する

ステータス/ dev / shm / openvpn-status-tcp

動詞3

クライアント間

client-config-dir ccd-tcp

「ルート172.18.5.0 255.255.255.0」を押します

log-append /var/log/openvpn-tcp.log

comp-lzo




キーと証明書は、UDPと同じ方法で準備されます。 そのような接続の設定は、さらに少し単純になります-client.ovpn



クライアント

プロトtcp

リモートサーバー1194

無限の解決と再試行

ノバインド

永続キー

持続する

ca ca.crt

cert client.crt

キーclient.key

comp-lzo




さまざまなOSのクライアントは、公式サイトopenvpn.netからダウンロードすることをお勧めします



All Articles