HOME / 日記 / vnicとipnat・・・

Date: 2009/03/13 |  このエントリーをはてなブックマークに追加  |  Tags: Solaris, OpenSolaris, Howto, 利用法

vnicとipnat・・・

とりあえず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わすれてた・・・

nameserver回りは、また今度。

これ、仕事中の脱線で、めんどくさ・・・といいつつ、30分ぐらいで作ったスクリプトなので、いい加減なのです。はい(笑


不親切なエントリだなぁ・・・

瀧 (2009-03-15 (日) 02:01:20)~~今見直すと、猛烈に不親切なエントリだなぁ・・・~~眠くて溜まらない状態でかいてしまったからですが・・・~


日記

Recent Updates

SONY WH-1000XM3

自分用メモです。 ノイズキャンセラーの性能が良い。 WH-1000Xのころは、ノイズキャンセラーを有効すると、音は聞こえないのに妙な音圧があったが、それがかなり軽減。個人的には気にならなくなった。 また、WH-1000Xのころは、ノイズキャンセラーを無効にしても、なんか作られたような音が出ていたような気がしたが、割と普通に聞こえる。 USB-Cになったのも良い。飛行機でも使う …
»続きを読む

Catalina(10.15)

Catalina Beta を入れ始めたので、自分用のまとめ。 2019/10/8、Catalinaが振ってきたので製品版用に記載を変えました。 32bitアプリを確認すること。 Activity Monitorで32bitアプリがわかるので、そういうアプリがあるなら代替品を見つけておくこと。 /etc以下のいくつかのファイルをバックアップしておくこと。 /etc …
»続きを読む

ディスクの不良を確認する(iostat -EnのError等)

ディスク関係のスタックをざっくり書くと次の様になっています 例、SAS Expanderを使う場合、 例、AHCIなどを使う場合、 これらのエラーは、次の様なコマンドで知ることができます。 出力結果例 このなかで、 たとえば、SATAディスクを利用している際に負荷が上がってしまい、ディスクの応答が間に合わないシチュエーションでは、Transport Errorが一気に …
»続きを読む

2017年、新年明けまして、おめでとうございます。

日記/2017年、新年明けまして、おめでとうございます。

新年明けまして、おめでとうございます。今年もよろしくお願いします。 昨年中は、皆様にお世話になりました。 昨年は、コツコツと3年程前から行ってきた改革がある程度完成された年で、この先5年、10年を見据えて、次のフェーズへと進む為の土台が完成した年でもありました。 それにキャッチアップする形で、個々の従業員一同が、役割を自覚し、明確に動けた年であったかと考えています。 …
»続きを読む

RSA鍵認証のみにし、Password認証を無効化する

意外に覚えきれなくて、いつも忘れるので、メモついでに残しておきます。 古いOpenSSHや、SunSSHの場合は、これも無効にします。 ユーザ目線でのザックリとした説明を。OpenSSHではなく別のSSH実装も含めて考えているので、OpenSSHのソースをじっくり読んだわけではないため、間違ってたらすみません。 まず、Password認証を無効にする場合、 PasswordAut …
»続きを読む

Nexus7 2013をMarshmallow(Android 6.0)化

OTAでない方法で。 だいたい ここに書いてある方法 なんだけど、adbなどが一式使えている状態で。 まずは自分の機種のものをダウンロードする。僕のは、 Android 6.0 Marshmallow for Nexus 7 2013 Wi-Fi 。tgzを展開し、zipも解いておく。 まずはboot loaderへ。 bootloader自体のアップデート。一式、updat …
»続きを読む

OS X 10.11 El Capitanで、phpのモジュールインストール

Yosemiteからのアップデートは割と簡単です。なぜならYosemite時に、すでにapache 2.4になり、php 5.5になっているから(笑 アップデート前に、まずはphp.iniとhttpd.confをバックアップしておきましょう きになるなら、hostsとかapache以下全てをバックアップしておいてもいいかも。 後はEl Capitanにアップデートする。 アッ …
»続きを読む

EasyAcc Powerbank PB4000CB

スマフォTips/モバイルバッテリー/モバイルバッテリー製品レビュー/EasyAcc Powerbank PB4000CB

薄型のモバイルバッテリーEasyAcc Powerbank PB4000CBです。 今や、モバイルバッテリーは大型のものが好まれるのか、隙間無く商品があります。20,000mAh越えで、「でけえ!」とか言ってますけど、大きいのを探せば、100Wh(27,000mAh)、200Wh当たり前、探せば500Wh(135,000mAh)とか、もっともっとあるのです。用途がどんどん異なっていくので …
»続きを読む

最新  |  << 前ページ  |  次ページ >>  |  最初