ProxmoxVEのOpenVZコンテナのネットワークについて。 の続き。
- 課題
- ProxmoxVE のHNに UT-VPN クライアントをインストールし、UT-VPNで作成した仮想NICをブリッジする vmbr** を作成し、OpenVZのVEをveth でその作成したvmbr** に接続したら、VPNにのみ接続されているVEが作れるのか。
- 結論
- できた
- 手順概要
-
- UT-VPN クライアントのインストール(これについては省略)
※utvpncmd で作成した仮想NIC名が「vpn0」の場合、OSが認識する仮想NIC名は「utvpn_vpn0」になる。 - vmbr1 (既にある場合は空いている番号)としてブリッジデバイスを作成、utvpn_vpn0 と関連付ける。
- 起動時にUT-VPNクライアントおよびブリッジが自動起動するように設定( /etc/rc.local 利用 )
utvpn_vpn0 や vmbr1 を /etc/network/interfaces で起動させるとタイミングが合わず接続に失敗するので、rc.local で別途起動させるのがキーです。
※utvpn_vpn0 が接続できるためには utvpnclient サービスの起動+インターネット接続が確保された後である必要があり、utvpn_vpn0 が無効の状態では vmbr1 が正常に作成できない。 - UT-VPN クライアントのインストール(これについては省略)
細かい点はおいておいて、最終的に必要なのは下記の2ファイル。
- /etc/network/interfaces
- ついでなのでデフォルトで設定されているものも含めて公開。
auto lo iface lo inet loopback iface eth0 inet manual iface eth1 inet manual iface eth2 inet manual iface eth3 inet manual auto bond0 iface bond0 inet manual slaves eth0 eth1 eth2 eth3 bond_miimon 100 bond_mode active-backup auto vmbr0 iface vmbr0 inet static address xxx.xxx.xxx.xxx netmask 255.255.255.0 gateway xxx.xxx.xxx.xxx bridge_ports bond0 bridge_stp off bridge_fd 0 iface utvpn_vpn0 inet manual iface vmbr1 inet static address zzz.zzz.zzz.zzz netmask 255.255.255.0 gateway zzz.zzz.zzz.zzz bridge_ports utvpn_vpn0 bridge_stp off bridge_fd 0 up route del default gw zzz.zzz.zzz.zzz
「up route del default gw zzz.zzz.zzz.zzz」は、自動的にデフォルトゲートウェイが追加され結果的に2つのデフォルトゲートウェイになってしまいHN自体のネットワークに混乱が発生したため入れたワークアラウンド。
適切かどうかは不明。この時点で管理画面の「システム」でうまいこと認識されていれば成功。
- 起動スクリプト
(名前、置き場所はどこでもいい。 /etc/rc.local に記載し起動時にこれを実行) -
#! /bin/sh /usr/sbin/brctl addbr vmbr1 \ && /usr/bin/utvpnclient start \ && /usr/bin/utvpncmd localhost /client /cmd accountconnect [VPN接続アカウント名] \ && /usr/sbin/brctl addif vmbr1 utvpn_vpn0 \ && ifconfig vmbr1 zzz.zzz.zzz.zzz up \ && ifconfig utvpn_vpn0 up
(やっていること)
- vmbr1 という名前でブリッジを作成
- utvpnclient サービスを起動
- あらかじめ作成してある[VPN接続アカウント名]のVPN接続を実行
- utvpn_vpn0 仮想NICを vmbr1 にブリッジ
- vmbr1 にIPアドレスを設定しながらUP
- utvpn_vpn0 もUP
実際にやってみてから日が開いてしまったので忘れている点もあるかもしれないですが、大枠はあっているはず。
[追記 2011.08.18.]
が、どうもKVMで作成した仮想サーバのNICをブリッジしてもうまく外部へアクセスしてくれない模様。
調査中。
KVMで作成される仮想NICはtapデバイス。
そのtapデバイスを、物理NICをまとめた bond0 がつながっているvmbr0 にブリッジさせると正常動作。
[/追記]
[追記2 2011.08.26.]
ハード自体の再起動をすることでなぜかできるようになった。
何か設定があったんだろうか。
[/追記]
[追記3 2011.09.01.]
どうやら1つのブリッジにOpenVZのVEの仮想NICと、KVMの仮想サーバの仮想NICをつなぐと取り合いなのか、どちらかしかつながらなくなる模様。
そのため、ブリッジとUTVPNの仮想NICをもう1つずつ追加し、OpenVZ用・KVM用としたところ全てのVE・仮想サーバがVPN接続のみで動作するようになった。
[/追記]
[追記4 2011.10.26.]
ここまで長々書いておいて、いまさらながらvenetのテストをしたところ通常のOpenVZと同様、VEとインターネット間の通信が内→外、外→内ともに普通にできることが判明。
その結果、
- HNにUT-VPNの仮想NICを作成(上記の utvpn_vpn0 )、VPN接続
- VEにvenetの設定で、VPNのセグメントのIPアドレスを設定
だけで、テーマの「UT-VPNクライアントでの接続のみのVEを作る」は実現可能でした。
[/追記]
[Blog:技術系メモ http://t.co/irAQ601 ] に新規投稿しました。 「 ProxmoxVEのVEでUT-VPNクライアントで... 」