|
OpenVPN 2 Ethernet Bridging 日本語訳 OpenVPN 2 Ethernet Bridging 日本語訳 †ブリッジングの概要 †ルーティングモード vs. ブリッジモードの概要については,FAQを参照されたい. イーサネットのブリッジは,基本的に,イーサネットのインタフェースと一個以上の仮想TAPインタフェースを結合させ,一つのブリッジインタフェースの下でブリッジングを行うものである.これは,ソフトウェアで物理イーサネットのスイッチングを行うことを意味する.イーサネットブリッジは,ソフトウェア・スイッチの一種と考えることができる.一台のマシンで同じIPサブネットを共有できるように,複数の(物理もしくは仮想の)イーサネットインタフェースをくっつけることができる. 離れた場所にある物理イーサネットNICとOpenVPN駆動のTAPインタフェースをブリッジングすることにより,あたかも同じイーサネットのサブネットに入っているかのように,論理的に双方を結合させることが可能となる. ブリッジモードのセットアップ †次の例でOpenVPNサーバ側イーサネットブリッジの構築方法を示そう.複数のクライアントがこのブリッジに接続し,それぞれのTAPインタフェースにはサーバのLANに属するIPアドレスが割り当てられるとする. クライアントIPアドレスの割り当てには二通りのやり方がある: * server-bridgeを使って,OpenVPNにクライアントIPアドレス空間の管理を委せるか,または * VPNクライアントにもIPアドレスを振り分けるよう(サーバ)LANのDHCPサーバを設定する. この例では一つ目のやり方を採用する.すなわちOpenVPNサーバがLANサブネットの一部のアドレス空間を管理している.ただしこの空間は,(存在している場合)DHCPサーバの管理範囲と別である.なおこの二通りのやり方に対して,より詳細な説明は FAQ 項目に説明している. 我々の例においては,次のようなブリッジ設定を用いる:
第一ステップとして,まず HOWTO の"初めてのVPNを起動させテストする"までの節に従って行うこと.次は,LinuxかWindowsかによって以下に示す手順に従うこと. Linux上のブリッジサーバ †まず,パッケージ bridge-utils がインストールされているを確認しよう. それから下記のスクリプト bridge-start を修正しよう.パラメータ br, tap, eth, eth_ip, eth_netmask, と eth_broadcast をブリッジしたい物理イーサネットインタフェースに合わせて記入する.注意:ファイアウォールによってインターネットから保護されているプライベートなインタフェースを使用すること.記入に必要な情報は,Linuxの ifconfig コマンドで知ることができる. ここでスクリプト bridge-start を実行する.このスクリプトは,永久な tap0 インタフェースを作ってアクティブなイーサネットインタフェースとブリッジをする. 次に,OpenVPNサーバ設定ファイル をブリッジを行うよう修正する. dev tunの行をコメントアウトし,代わりに次の一行を用いる: dev tap0 serverで始まる行をコメントアウトし,代わりに以下を用いる: server-bridge 192.168.8.4 255.255.255.0 192.168.8.128 192.168.8.254 新しく作った tap0 と br0 インタフェースをパケットが自由に流せるように Linux ファイアウォールを設定する. iptables -A INPUT -i tap0 -j ACCEPT iptables -A INPUT -i br0 -j ACCEPT iptables -A FORWARD -i br0 -j ACCEPT OpenVPNブリッジは,次の順に起動・終了させることができる. * bridge-start を実行 * openvpn を実行 * openvpn を終了 * bridge-stop を実行 ここまででブリッジだけに関する設定は完了した.残っているのは,HOWTO を参照して続けられるであろう. Windows XPのブリッジサーバ †以下の設定は,ブリッジ側にWindows XP以上が必要である.私が知る限り,Windows 2000はブリッジを作ることができない*1.でも,クライアントとしてブリッジ・ネットワークに参加することはできる.その時,OpenVPN接続のもう片方は,LinuxまたはWindows XPマシンによってブリッジを作ればよい. OpenVPNは,Windowsにインストールされた時に,自動的にTAP-Win32アダプタを一つ作る.デフォルトで"ローカルエリア接続2"みたいな名前になっているが,コントロールパネル,ネットワーク接続に行って,"tap-bridge"に改名しておこう. それから,tap-bridge とイーサネットアダプタをマウスで選択して,右クリックしブリッジ接続を選ぶ.これにより,コントロールパネルに新たな ブリッジアダプタ アイコンが出るはず. このブリッジアダプタに対して,TCP/IPプロパティを,IP 192.168.8.4,サブネットマスク 255.255.255.0 のように設定しておく. 次に,OpenVPNサーバ設定ファイルを編集してブリッジモードを有効にする. dev tunの行をコメントアウトし,代わりに以下を用いる: dev tap dev-node tap-bridge serverで始まる行をコメントアウトし,代わりに以下を用いる. server-bridge 192.168.8.4 255.255.255.0 192.168.8.128 192.168.8.254 XP SP2を使っている場合は,コントロールパネルのファイアウォールを開いて,ブリッジとTAPアダプタに対してフィルタリングを無効にしておく. ここまででブリッジだけに関する設定は完了した.残っているのは,HOWTO を参照して続けられるであろう. ブリッジクライアントの設定 †サンプルOpenVPNクライアント設定ファイルをベースにし,dev tunの行をコメントアウトし,代わりに以下を用いるとよい. dev tap 最後に,クライアントの設定はサーバの設定との整合性を確認しよう.特に proto(udpかtcpか)をチェックすること.また,comp-lzoとfragmentは,使っているなら,クライアントとサーバの両方に出ていることも確認しよう. イーサネットブリッジングに関する注 イーサネットブリッジを設定する際に一番最初にやることは,イーサネットブリッジを作ること -- つまり,他のイーサネットインタフェース,物理NICのような実在のものやTAPインタフェースのような仮想のものを収納する仮想ネットワークインタフェースのこと.イーサネットブリッジインタフェースは,OpenVPNの起動前に設定しておかなければならない. イーサネットブリッジインタフェースを作る汎用的なやり方はない -- 各OSはそれぞれ自分のやり方をしている(下の例を参照). 一旦ブリッジインタフェースが作られ,さらに適切なイーサネットインタフェースも追加されたら,OpenVPNは起動可能となる.
注 -- Windowsにおけるイーサネットブリッジング Adam PavelecによるこのHOWTOをチェックする. Windows Notesページはその他の情報を示している. 注 -- Linuxにおけるイーサネットブリッジングとセットアップスクリプト 以下のスクリプトがLinux上でブリッジを起動・停止させるものである.因みにOpenVPNパッケージ(tarballファイル)のsample-scriptsサブディレクトリーの下にもある. sample-scripts/bridge-start †#!/bin/bash
###########################################
# Linux上でイーサネットブリッジを起動させる
# 依存性: bridge-utils
###########################################
# ブリッジインタフェース
br="br0"
# ブリッジしたいTAPインタフェースのリスト
# 例えば tap="tap0 tap1 tap2"
tap="tap0"
# 上記のTAPインタフェースとブリッジしたい物理イーサネットインタフェース
eth="eth0"
eth_ip="192.168.8.4"
eth_netmask="255.255.255.0"
eth_broadcast="192.168.8.255"
for t in $tap; do
openvpn --mktun --dev $t
done
brctl addbr $br
brctl addif $br $eth
for t in $tap; do
brctl addif $br $t
done
for t in $tap; do
ifconfig $t 0.0.0.0 promisc up
done
ifconfig $eth 0.0.0.0 promisc up
ifconfig $br $eth_ip netmask $eth_netmask broadcast $eth_broadcast
sample-scripts/bridge-stop †#!/bin/bash
#######################################
# Linuxのイーサネットブリッジを解体する
#######################################
# ブリッジインタフェース
br="br0"
# ブリッジに入っているTAPインタフェースのリスト
tap="tap0"
ifconfig $br down
brctl delbr $br
for t in $tap; do
openvpn --rmtun --dev $t
done
|