OpenVPN 日本語情報サイト

検索

OpenVPN
日本語コンテンツ

OpenVPN GUI for Windows

ブリッジについて

OpenVPN関連コンテンツは OpenVPN.JP に移転しました。
最新情報は新サイトで更新されますので、OpenVPN.JP をご覧ください。
このページはOpenVPN公式サイトのコンテンツをもとに作成されていますが、意訳・要約されており、完全な翻訳ではありません。正確な情報については公式サイトの情報も併せてご確認ください。

ブリッジ

ルーティングとブリッジの比較についてはFAQを参照してください。

「ブリッジ」とは、1つ以上の仮想TAPインターフェイスとEthernetインターフェイスを1つのブリッジインターフェイスとして結合させたものです。Ethernetブリッジは物理Ethernetスイッチを擬似的にあらわしたソフトウェアで、1台のPC上にある複数のEthernetインターフェイス(物理NIC、仮想NICのどちらでも)を1つのIPサブネット上にあるものとして接続するのに使用するソフトウェアの一種と考えることができます。

2つの離れた場所においてOpenVPNのTAPインターフェイスと物理NICをブリッジさせることにより、これら2つのネットワークを論理的に統合し、あたかも1つのサブネット上にあるかのようにして利用することができます。

ブリッジの設定

この例では、サーバー側でブリッジする場合のOpenVPNの設定を説明します。複数のクライアントがブリッジに接続し、各クライアントのTAPインターフェイスにはサーバー側のLANのアドレスの一部が割り当てられることになります。

クライアントのIPアドレスの割り当てには2つの方法があります。

  • OpenVPNがクライアントのIPアドレスを管理し、server-bridgeディレクティブで設定されたIPアドレス範囲から割り当てる
  • LAN上にあるDHCPサーバーがVPNクライアントにもIPアドレスを割り当てるように設定する

この例では、1つ目の方法、つまりOpenVPNサーバー自身がIPアドレスを割り当てる方法を説明します。もしLAN上に別のDHCPサーバーが存在する場合には、このDHCPサーバーが使用するIPアドレス範囲と重ならないようにしてください。IPアドレスを割り当てるいずれの方法についても、 FAQの項目で説明されています。

今回の例では、下記のようなブリッジ設定を使用します。

設定bridge-start パラメータ
Ethernetインターフェイスetheth0
ローカルIPアドレスeth_ip192.168.8.4
ローカルネットマスクeth_netmask255.255.255.0
ローカルブロードキャストアドレスeth_broadcast192.168.8.255
VPNクライアント用アドレス範囲192.168.8.128 to 192.168.8.254
仮想ブリッジインターフェイスbrbr0
仮想TAPインターフェイスtaptap0

まず、「HOWTO」にある「VPNの起動と接続テスト」までのステップを完了しておきます。次に、LinuxかWindowsのどちらにブリッジを設定するかに応じ、下記の手順に進みます。

Linuxでブリッジを構成する場合

まず、bridge-utilsパッケージがインストールされていることを確認してください。

bridge-startスクリプトを編集します。ブリッジしたい物理Ethernetインターフェイスに応じて、brtapetheth_ipeth_netmasketh_broadcastの各パラメータを設定します。このインターフェイスはきちんと保護されていること、ファイアーウォールなどでインターネットから保護されたLANに接続されていることを確認します。bridge-startパラメータに設定するために必要になるネットワークインターフェイスに関する情報は、Linuxのifconfigコマンドで取得できます。

bridge-startスクリプトを実行します。tap0インターフェイスが作成され、アクティブなEthernetインターフェイスとの間でブリッジされます。

次に、ブリッジ設定を有効にするためにOpenVPNサーバー設定ファイルを編集します。

dev tunをコメントアウトし、次のように書き換えます。

dev tap0

serverで始まる行をコメントアウトし、次のように書き換えます。

server-bridge 192.168.8.4 255.255.255.0 192.168.8.128 192.168.8.254

新たに作成されたtap0br0のそれぞれのインターフェイス上のパケットが許可されるようにファイアーウォールを設定します。

iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT

これにより、以下の手順でOpenVPNブリッジを開始/停止できるようになりました。

  1. bridge-startを実行する
  2. openvpnを実行する
  3. openvpnを停止する
  4. bridge-stopを実行する

ここまでの設定でブリッジを使用するために必要な設定は完了しました。続いて「HOWTO」で説明されている「VPNの起動と接続テスト」に進むことができます。

Windows XPでブリッジを構成する場合

Windows XPでブリッジを構成する場合は、ブリッジ側はWindows XP以降が必要です。知る限り、Windows 2000はネットワークブリッジに対応していません。しかし、Windows 2000でも、ブリッジ側がLinuxやWindows XPで構成されたOpenVPNネットワークにクライアントとして接続することは可能です。

OpenVPNをWindowsにインストールすると、自動的にTAP-Win32アダプタが作成され、「ローカルエリア接続 2」というような名前が割り当てられます。コントロールパネルから[ネットワーク接続]にアクセスし、このアダプタをtap-bridgeという名前に変更してください。

次に、ブリッジしたいEthernetアダプタと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の続きの部分に進んでください。

クライアント側の設定

ベースとしてサンプルのクライアント設定ファイルから始めます。dev tunと書かれている行をコメントアウトし、次の行に置き換えます。

dev tap

最後に、クライアント設定ファイルの設定内容とサーバー設定ファイルの設定内容の対応が取れていることを確認します。特に確認すべきなのはproto(udpまたはtcp)が揃っているかどうかです。また、もしcomp-lzofragmentを使用するのであれば、クライアント設定ファイルとサーバー設定ファイルの両方に記述されていることを確認してください。

ブリッジに関する注意事項

ブリッジ構成を使用する場合には、まずEthernetブリッジ(複数の物理NICまたは仮想NICを組み合わせたTAPインターフェイスのような仮想ネットワークインターフェイス)を構築する必要があります。ブリッジインターフェイスはOpenVPNが起動される前にセットアップされている必要があります。

ブリッジインターフェイスの作成方法はOSによって異なります。

一度ブリッジインターフェイスが作成され、Ethernetインターフェイスをブリッジに追加すれば、OpenVPNを開始できます。

  • ブリッジインターフェイスは、VPNトンネリングに使用される複数のEthernetインターフェイス(物理NICか仮想TAPインターフェイス)を組み合わせた仮想ネットワークインターフェイスです。
  • Ethernetブリッジをセットアップするときには、ブリッジインターフェイスのIPアドレスとサブネットを手動で設定する必要があり、OpenVPN設定ファイルでのifconfigディレクティブは設定しません。TUN/TAPインターフェイスとは異なり、OpenVPNはブリッジインターフェイスのIPアドレスとネットマスクは自動的には設定されません。
  • OpenVPNの設定において、devディレクティブにはブリッジインターフェイス自体の名前ではなく、ブリッジインターフェイスで利用するTAPインターフェイスを指定してください。
  • Windowsでは、dev-nodeディレクティブを使用して、ブリッジに追加するTAP-Win32アダプタの名前を指定してください(dev-nodeで指定する名前は[ネットワーク接続]コントロールパネルで表示されているアダプタ名です)。
  • Linux/BSD/Unixでは、dev tapディレクティブにはブリッジに追加したTUN/TAPアダプタの名前を番号付きで(dev tap0のように)指定してください。
  • point-to-pointモードを使用している場合にはifconfigディレクティブを削除してください。また、クライアント/サーバーモードを使用している場合はサーバー側でserver-bridgeディレクティブを使用してください。
  • ブリッジを利用する場合は、ブリッジインターフェイスのTCP/IP設定は手動で行う必要があります。たとえばLinuxの場合はifconfigコマンドを使用します。Windows XPであれば[ネットワーク接続]コントロールパネルからブリッジインターフェイスのTCP/IP設定を行います。
  • TAPインターフェイスとブリッジさせるのは、ファイアウォールで保護されているプライベートEthernetインターフェイスだけにしてください。インターネットに直接接続されているインターフェイスとTAPインターフェイスを絶対にブリッジしないようにしてください。セキュリティホールにつながる可能性があります。
  • localremoteで使用するアドレスはブリッジされたサブネットのアドレス内にならないようにしてください。ルーティングループを引き起こすことになります。
  • ブリッジを使用する場合に重要な点として理解しておくべき点は、ブリッジに追加された各ネットワークインターフェイスが持つそれぞれのIPアドレスやネットマスクなどの設定は無効になるということです。ブリッジインターフェイス自体に設定されたTCP/IP設定のみが有効です。
  • ブリッジの設定を手動で行う場合によく起きる失敗は、ブリッジインターフェイスのIPアドレスやネットマスクを設定する前に、1番目のEthernetアダプタをブリッジに追加してしまうことです。こうしてしまうと、1番目のEthernetインターフェイスの設定は失われ、しかもブリッジ設定も行われていないため、Ethernetインターフェイスでの接続ができなくなる、という結果になります。
  • ほとんどの場合、ブリッジの設定はクライアント側ではなく、サーバー側のイーサネットブリッジの設定だけで済みます。この設定でクライアントからの接続が確立されると、クライアントは標準のEthernetインターフェイスに加え、OpenVPNサーバー側Ethernetインターフェイスにブリッジ接続された新たなTAPインターフェイスを持った「マルチホーム」となります(サーバー設定でclient-to-clientディレクティブが設定されている場合には、他のクライアントのTAPインターフェイスにもブリッジ接続できます)。

sample-scripts/bridge-start

#!/bin/bash

#################################
# Set up Ethernet bridge on Linux
# Requires: bridge-utils
#################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged,
# for example tap="tap0 tap1 tap2".
tap="tap0"

# Define physical ethernet interface to be bridged
# with TAP interface(s) above.
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

####################################
# Tear Down Ethernet bridge on Linux
####################################

# Define Bridge Interface
br="br0"

# Define list of TAP interfaces to be bridged together
tap="tap0"

ifconfig $br down
brctl delbr $br

for t in $tap; do
    openvpn --rmtun --dev $t
done

Copyright © 2002-2006 by OpenVPN Solutions LLC. OpenVPN is a trademark of OpenVPN Solutions LLC. Translated By Plum Systems Inc.

Webmaster: プラムシステムズ株式会社
このサイトはリンクフリーです。
※OpenVPN GUI for Windows 日本語版ダウンロードへの直接リンクはご遠慮ください。