とうとうOpenVPNでブリッジできました。
試行錯誤の結果、なんとかブリッジできるようになりました。実行環境ではIPフォーワードをしている訳でもなく、今回はiptablesを無視します。将来的にセキュリティー向上のためになにか行うかもしれませんが。。。。
環境
まずはPC2をサーバー化
http://www.senryu.biz/linux/openvpn/openvpn1.htm
を参考にして、server.confスクリプトをベースに訂正を加えていきます。
bridgeタイプにするので、
server-bridge 192.168.100.2 255.255.255.0 192.168.100.51 192.168.100.59
としておきます。eth0と同じIPを振っておきました。
認証キーを作ります。
> cd /etc/openvpn
> openssl req -nodes -new -x509 -keyout ca.key -out ca.crt -days 3650
openssl.cnfを編集します。ファイルはディストリビューションによって異なるでしょう。
変更箇所
dir = /etc/openvpn
new_certs_dir = $dir
certificate = $dir/ca.crt
private_key = $dir/ca.key
default_days = 3650
ファイルを作ります。
> echo 01 > serial
> touch index.txt
> openssl req -nodes -new -keyout server.key -out server.csr
> openssl ca -out server.crt -in server.csr
> openssl dhparam -out dh1024.pem 1024
ホストキーの作成時に「A Challenge password」と「 An optinal company mname」を聞かれますが、入力しません。
これで準備OK。
Bridgeの準備
bridge-utilsをインストールしておきます。するとbrctlコマンドが利用できるようになります。server.confでは、クライアントに51-59のIPを振るように設定してあります。
等も参考にしました。サーバーはDebianを使う事にしたので、/etc/network/interfacesに
iface br0 inet static
address 192.168.100.2
netmask 255.255.255.0
network 192.168.100.0
broadcast 192.168.100.255
gateway 192.168.100.1
bridge_ports eth2 tap0
としておきます。
サーバーを動かしてみましょう。
1 /etc/init.d/openvpn start
2 ifconfig tap0 up ここではまった。。。
3 ifup br0
で完了!!ある所ではbridgeをつくってからVPNをスタートさせていました。別の所では逆。セッションははれても、どうしてもブリッジされないので困っていたのですが、tap0デバイスをupしていない事が判明。いやはや。
クライアントの設定
client.confスクリプトをベースに変更していきます。変更点は
ca ca.crt
cert client1.crt
key client1.key
pull サーバーからのパラメータを引き受ける
float IPアドレスはサーバーからもらう
こんな所ですかね。キーも準備します。サーバーPCで
> openssl req -nodes -new -keyout client1.key -out client1.csr
> openssl ca -out client1.crt -in client1.csr
所属までは同じデーターを入力して、名前は別にしておきます。出来たファイルをクライアントの/etc/openvpnディレクトリにコピーします。*.keyのpermissonを600にしておきましょう。
これで完了!!あとは
> /etc/init.d/openvpn start
で接続してみましょう。
ブリッジをやめるには
やめるのも試行錯誤の間がありましたが、結局
> ifconfig br0
> brctl delbr br0
> sleep 5
> /etc/init.d/openvpn stop
> ifdown eth0
> ifup eth0
でしょうかね。