というわけで、bridgeモードで構築したときのメモ。

■ネットワーク構成


┌───┐
│ sv1 │(VPN越しにアクセスしたいサーバ)
└─┬─┘
│[10.1.2.100]
━━━┷━━━━┯━━━━━━━━ 10.1.2.0/24

│[10.1.2.1]:eth0
┌─┴─┐
│ obs │(OpenVPNサーバ)
└─┬─┘
│[192.168.0.1]:eth1

━━━━━━━━┷━━━━┯━━━━━━━━ 192.168.0.0/24

│[192.168.0.100]
┌─┴─┐
│ WinPC│(OpenVPNクライアント)
  └───┘


ちなみにobsとWinPCをシリアルで繋いでおくと作業が進めやすい。

あと以下のようにしてPINGを飛ばしっぱなしにしておくと、いつつながったか判りやすい。
・sv1から”OpenVPNクライアントに振られる仮想IP”へ
・WinPCから、sv1へ


■OpenBlock側作業
(コンパクトフラッシュにSSDリリース0.4が入っている前提)

ポート転送を有効化。

# sysctl -w net.ipv4.conf.all.forwarding=1
net.ipv4.conf.all.forwarding = 1


ただ、これを恒常的にする方法がわからんです。。
とりあえず/etc/rc.confに直書き。。


次にbridge-utilsをインストール。

Bridgeの構築
ブリッジを使うためには、brctlというコマンドを使う。brctlは「bridge-utils」というパッケージに含まれている。これは次の場所から入手できる。


# autoconf
# ./configure
# make
# make install



■下記のようなファイルを作成。

ブリッジ開始スクリプト bridge-start
#!/bin/bash
# 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.
br="br0"
tap="tap0"
eth="eth0"
eth_ip="10.1.2.1"
eth_netmask="255.255.255.0"
eth_broadcast="10.1.2.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


ブリッジ終了スクリプト bridge-stop
#!/bin/bash
# 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



サーバ側のopenvpn.config

port 5500
proto udp
dev tap0
tls-server
ca /root/easy-rsa/keys/ca.crt
cert /root/easy-rsa/keys/server.crt
key /root/easy-rsa/keys/server.key
dh /root/easy-rsa/keys/dh1024.pem
server-bridge 10.1.2.1 255.255.255.0 10.1.2.200 10.1.2.254
push "route 10.1.2.0 255.255.255.0"
client-to-client
duplicate-cn
keepalive 10 120
persist-key
persist-tun
status openvpn-status.log
log-append openvpn.log
verb 1



クライアント側のコンフィグ(拡張子ovpn、右クリックから起動)

client
proto udp
dev tap0
dev-node "ローカル エリア接続 2"
port 5500
remote ”VPNサーバのIPアドレス”
ca "c:\\keys\\ca.crt"
cert "c:\\keys\\client1.crt"
key "c:\\keys\\client1.key"
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
verb 1
pull
float



■起動
1.サーバ側
(1)bridge-start
(2)openvpn --config openvpn.config

2.クライアント側
(1).ovpnファイルを右クリックからVPN起動


■終了
1.クライアント側
(1).VPNが動いているDOS窓でF4二回押し

2.サーバ側
(1)openvpnを停止
(2)bridge-stop


SSLキーの作成とかは他所のサイトを参考にしてください。多分そこではハマらないと思う。

ログはコンパクトフラッシュには書かないほうが良さげ。RAMに書いて時々捨てるとか。

あと、OpenVPNサーバ上で、ブリッジ開始するタイミングで、デフォルトゲートウエイが消えるので、下記コマンドで追加したほうがいいのかも(だと思う。。ここ自自信無し。デフォゲ消えてても動作上は問題ないみたいですが。。)
route add ”デフォゲのIP” br0




■ifconfigとrouteコマンドの遷移

OBS起動直後
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
10.1.2.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default "デフォゲ" 0.0.0.0 UG 1 0 0 eth0

# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0A:85:03:8F:AF
inet addr:10.1.2.1 Bcast:10.1.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:137 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8296 (8.1 Kb) TX bytes:896 (896.0 b)

eth1 Link encap:Ethernet HWaddr 00:0A:85:03:0F:AF
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:48 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4659 (4.5 Kb) TX bytes:0 (0.0 b)
Interrupt:31 Base address:0xfd00

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)



bridge-start直後
# ./bridge-start
Fri Mar 14 15:52:04 2008 TUN/TAP device tap0 opened
Fri Mar 14 15:52:04 2008 Persist state set to: ON
Bridge firewalling registered
device eth0 entered promiscuous mode
device tap0 entered promiscuous mode
br0: port 2(tap0) entering learning state
br0: port 1(eth0) entering learning state
br0: topology change detected, propagating
br0: port 2(tap0) entering forwarding state
br0: topology change detected, propagating
br0: port 1(eth0) entering forwarding state

freebsd[271]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
10.1.2.0 * 255.255.255.0 U 0 0 0 br0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
# ifconfig
br0 Link encap:Ethernet HWaddr 00:0A:85:03:8F:AF
inet addr:10.1.2.1 Bcast:10.1.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:21 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:966 (966.0 b) TX bytes:0 (0.0 b)

eth0 Link encap:Ethernet HWaddr 00:0A:85:03:8F:AF
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:339 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20416 (19.9 Kb) TX bytes:896 (896.0 b)

eth1 Link encap:Ethernet HWaddr 00:0A:85:03:0F:AF
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:202 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:20944 (20.4 Kb) TX bytes:0 (0.0 b)
Interrupt:31 Base address:0xfd00

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

tap0 Link encap:Ethernet HWaddr 6E:03:0A:17:43:B6
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:21 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

#



bridge-stop直後(eth0のインタフェース設定がなくなってしまう)
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
freebsd[281]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0A:85:03:8F:AF
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:593 errors:0 dropped:0 overruns:0 frame:0
TX packets:207 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:42596 (41.5 Kb) TX bytes:17613 (17.2 Kb)

eth1 Link encap:Ethernet HWaddr 00:0A:85:03:0F:AF
inet addr:.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:506 errors:0 dropped:0 overruns:0 frame:0
TX packets:436 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:73730 (72.0 Kb) TX bytes:65145 (63.6 Kb)
Interrupt:31 Base address:0xfd00

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)



以上です。

bridgeじゃない方のモードの方も時間があったら試す予定。(軽く試したけど、うまくいかなかった。。)