Date: 2009/03/13 | | Tags: Solaris, OpenSolaris, Howto, 利用法
とりあえずvnicを設定し、VirtualBoxとzoneにそれぞれvnicを委譲することに成功。
コツは、1つのNICを丸ごとzoneにもVirtualBoxにも与えてしまい、親からはdladm show-link以外、一切見えない状態にしておくことなのね。
dladm show-link
結果
LINK CLASS MTU STATE OVER e1000g0 phys 1500 up -- iwk0 phys 1500 down -- vnet0 vnic 1500 up e1000g0 vnet1 vnic 1500 up e1000g0 vnet2 vnic 1500 up e1000g0 vnet3 vnic 1500 up e1000g0
しかしながら・・・
ifconfig -a
結果
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 e1000g0: flags=201104843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,ROUTER,IPv4,CoS> mtu 1500 index 2 inet 192.168.1.50 netmask ffffff00 broadcast 192.168.1.255 iwk0: flags=201140802<BROADCAST,MULTICAST,DEPRECATED,ROUTER,IPv4,CoS> mtu 1500 index 3 inet 0.0.0.0 netmask 0 vnet0: flags=201100843<UP,BROADCAST,RUNNING,MULTICAST,ROUTER,IPv4,CoS> mtu 1500 index 4 inet 192.168.199.1 netmask ffffff00 broadcast 192.168.199.255 lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1 inet6 ::1/128
ね。
あとは、それぞれexclusive zoneにしたり、VirtualBoxにNIC委譲してあげればよい(101ではVirtualBoxに対してMACアドレスを指定してあげること)と・・・・ありがとう、さとかずさん。
で。
nwamとは取っても相性が悪いので、うっかり
pfexec svcadm restart nwam
等とすると、ip exclusive zoneが再起動しようとしたときに、OSがハングアップしてしまいます。vnicの機能は、105まで「裏技」なので致し方がないのかも。Crossbowが入る105以降はどうなのかしら・・・
それぞれの仮想マシンがVNICを使うことになると、あとは仮想マシンからどうやって外に出て行くかが肝になるわけで、やっぱりNATが重要になるわけです。
routeadmでip4をrouting。あとはこんなのを書いて、
% cat /etc/ipf/ipnat.conf map e1000g0 192.168.199.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp map e1000g0 192.168.199.0/24 -> 0/32 portmap tcp/udp auto map e1000g0 192.168.199.0/24 -> 0/32
ipfを起動すればいいわけですが・・・・iwkになったりe1000になったりすると困るよね・・・・ってことで、こんなモノを作っておくワケです。
% cat /etc/nwam/ulp/check-conditions
#!/bin/ksh IFCONFIG=/sbin/ifconfig AWK=/usr/bin/nawk ZENITY=/usr/bin/zenity NICS=`/sbin/dladm show-dev -o LINK | /usr/bin/grep -v LINK | /usr/bin/xargs` while [ -z "$IPADDR" ]; do for NIC in $NICS ; do IPADDR=`ifconfig $NIC | awk '/inet/{print $2}' | grep -v 0.0.0.0` if [ ! -z "$IPADDR" ] ; then break fi done sleep 1 done ifconfig vnet0 plumb ifconfig vnet0 192.168.199.1/24 ifconfig vnet0 up cat > /etc/ipf/ipnat.conf<<EOF map ${NIC} 192.168.199.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp map ${NIC} 192.168.199.0/24 -> 0/32 portmap tcp/udp auto map ${NIC} 192.168.199.0/24 -> 0/32 EOF routeadm -u -e ipv4-forwarding svcadm restart svc:/network/ipfilter:default exit 0
/etc/nwam/ulp/check-conditionsはnwamがNICをプローブするたびに呼ばれるスクリプトなので、これを利用します。
あとは起動時のVNICの作成スクリプト
cat /etc/rc3.d/S99vnic
#!/bin/sh /usr/lib/vna e1000g0 00:0e:37:8e:90:ef vnet0 /usr/lib/vna e1000g0 00:0e:37:8e:90:f0 vnet1 /usr/lib/vna e1000g0 00:0e:37:8e:90:f1 vnet2 /usr/lib/vna e1000g0 00:0e:37:8e:90:f2 vnet3 ifconfig vnet0 plumb ifconfig vnet0 192.168.199.1/24 up
vnicをvnetとしているのは、自動番号付けだと困るため(笑
それからvnicのnwamの為の設定
cat /etc/nwam/llp
e1000g0 dhcp iwk0 dhcp e1000g0 noipv6 iwk0 noipv6 vnet0 static 192.168.199.1/24 vnet1 unplumb vnet2 unplumb vnet3 unplumb
unplumbで良いのかは知らないのだけれども、何となく動いてる気がする(笑)実はソースも5秒ぐらい見たけどunplumbという文字列が目の置くに焼き付いただけで読んでいない・・・。
なんだか、これでもか!というぐらい、vnet0にStaticなアドレスをつけているようにみえるけれども、たまにIPを見失うわけですよ。たぶんnwamのせいだと思うわけですが・・・
以上、これをすると、VirtualBoxもzoneも幸せにネットがアクセスできます。とくにVirtualBoxは、VirtualBoxのNAT機能を使うよりも、外の世界へのアクセスが加速します。
あとはpppに、この辺のスクリプトを対応させれば、相当量、幸せになるかもしれませんね・・・・pppdialerに対応させますか・・・。
nameserver回りは、また今度。
これ、仕事中の脱線で、めんどくさ・・・といいつつ、30分ぐらいで作ったスクリプトなので、いい加減なのです。はい(笑
瀧 (2009-03-15 (日) 02:01:20)~~今見直すと、猛烈に不親切なエントリだなぁ・・・~~眠くて溜まらない状態でかいてしまったからですが・・・~