カテゴリ

PacketiX VPN / UT-VPN Proxmox VE

ProxmoxVEのOpenVZコンテナのネットワークについて。 の続き。

課題
ProxmoxVE のHNに UT-VPN クライアントをインストールし、UT-VPNで作成した仮想NICをブリッジする vmbr** を作成し、OpenVZのVEをveth でその作成したvmbr** に接続したら、VPNにのみ接続されているVEが作れるのか。
結論
できた
手順概要
  1. UT-VPN クライアントのインストール(これについては省略)
    ※utvpncmd で作成した仮想NIC名が「vpn0」の場合、OSが認識する仮想NIC名は「utvpn_vpn0」になる。
  2. vmbr1 (既にある場合は空いている番号)としてブリッジデバイスを作成、utvpn_vpn0 と関連付ける。
  3. 起動時にUT-VPNクライアントおよびブリッジが自動起動するように設定( /etc/rc.local 利用 )
  4. utvpn_vpn0 や vmbr1 を /etc/network/interfaces で起動させるとタイミングが合わず接続に失敗するので、rc.local で別途起動させるのがキーです。
    ※utvpn_vpn0 が接続できるためには utvpnclient サービスの起動+インターネット接続が確保された後である必要があり、utvpn_vpn0 が無効の状態では vmbr1 が正常に作成できない。

細かい点はおいておいて、最終的に必要なのは下記の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を作る」は実現可能でした。
[/追記]

コメント

いただいたコメント
  1. [Blog:技術系メモ http://t.co/irAQ601 ] に新規投稿しました。 「 ProxmoxVEのVEでUT-VPNクライアントで... 」