作成するには、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からダウンロードすることをお勧めします