きょうはIPMPでもやってみますか。
まず2本NICを刺しておきます。起動したら両方ともDHCPでIPアドレスが振られてました。
root@solaris:~# dladm LINK CLASS MTU STATE OVER net0 phys 1500 up -- net1 phys 1500 up --
root@solaris:~# ipadm show-addr ADDROBJ TYPE STATE ADDR lo0/v4 static ok 127.0.0.1/8 net0/v4 dhcp ok 192.168.0.7/24 net1/v4 dhcp ok 192.168.0.8/24 lo0/v6 static ok ::1/128 net0/v6 addrconf ok fe80::20c:29ff:fe19:3f14/10 net0/v6 addrconf ok 2001:c90:8224:afe:20c:29ff:fe19:3f14/64 net1/v6 addrconf ok fe80::20c:29ff:fe19:3f1e/10 net1/v6 addrconf ok 2001:c90:8224:afe:20c:29ff:fe19:3f1e/64 root@solaris:~#
これらを link-based IPMP にして、IPアドレスを1つ付けるように変えてみます。
まずいま付いているIPアドレスを削除。
root@solaris:~# ipadm delete-addr net0/v4 root@solaris:~# ipadm delete-addr net1/v4 root@solaris:~# ipadm delete-addr net0/v6 root@solaris:~# ipadm delete-addr net1/v6 root@solaris:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip down -- -- net1 ip down -- --
次にIPMPインタフェースを作成します。
root@solaris:~# ipadm enable-if -t net0 root@solaris:~# ipadm enable-if -t net1 root@solaris:~# ipadm create-ipmp ipmp0 root@solaris:~# ipadm add-ipmp -i net0 -i net1 ipmp0 root@solaris:~# ipmpstat -g GROUP GROUPNAME STATE FDT INTERFACES ipmp0 ipmp0 ok -- net1 net0
root@solaris:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR ipmp0 ipmp down -- -- lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip ok ipmp0 -- net1 ip ok ipmp0 --
IPMPに対してIPアドレスを振ります。ここでは 192.168.0.220 にしました。
root@solaris:~# ipadm create-addr -T static -a 192.168.0.220/24 ipmp0/v4 root@solaris:~# ipadm NAME CLASS/TYPE STATE UNDER ADDR ipmp0 ipmp ok -- -- ipmp0/v4 static ok -- 192.168.0.220/24 lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip ok ipmp0 -- net1 ip ok ipmp0 --
いまは inbound に net0、outbound に net0 と net1 の両方が使われていることがわかります。
root@solaris:~# ipmpstat -a ADDRESS STATE GROUP INBOUND OUTBOUND :: down ipmp0 -- -- 192.168.0.220 up ipmp0 net0 net1 net0
VMware で net0 を止めてみます。
ssh で接続していたのですが、セッションが切れずに net1 だけが使われるようになりました。
root@solaris:~# ipmpstat -a ADDRESS STATE GROUP INBOUND OUTBOUND :: down ipmp0 -- -- 192.168.0.220 up ipmp0 net1 net1
syslog には次のように記録されます。
Jan 7 15:56:27 solaris mac: [ID 486395 kern.info] NOTICE: e1000g0 link down Jan 7 15:56:27 solaris in.mpathd[84]: [ID 215189 daemon.error] The link has gone down on net0 Jan 7 15:56:27 solaris in.mpathd[84]: [ID 968981 daemon.error] IP interface failure detected on net0 of group ipmp0
戻しておきます。接続復旧時の syslog はこんな感じ。
Jan 7 16:00:17 solaris mac: [ID 435574 kern.info] NOTICE: e1000g0 link up, 1000 Mbps, full duplex Jan 7 16:00:17 solaris in.mpathd[84]: [ID 820239 daemon.error] The link has come up on net0
(参考文献)
(補足)
そのままでは外に出ないようになっていました。
root@solaris:~# netstat -r Routing Table: IPv4 Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ---------- --------- solaris solaris UH 2 2868 lo0 192.168.0.0 192.168.0.220 U 3 1818 ipmp0 Routing Table: IPv6 (略)
デフォルトゲートウェイを追加しておきます。
root@solaris:~# route -p add default 192.168.0.1 add net default: gateway 192.168.0.1 add persistent net default: gateway 192.168.0.1
root@solaris:~# netstat -r Routing Table: IPv4 Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ---------- --------- default 192.168.0.1 UG 1 0 solaris solaris UH 2 2892 lo0 192.168.0.0 192.168.0.220 U 3 2079 ipmp0
外には出ることができるようになりましたが、名前が引けないので設定しておきます。
root@solaris:~# svccfg -s svc:/network/dns/client setprop \ > config/nameserver=net_address: '(192.168.0.1)' root@solaris:~# root@solaris:~# svccfg -s svc:/network/dns/client listprop config config application config/value_authorization astring solaris.smf.value.name-service.dns.client config/nameserver net_address 192.168.0.1
root@solaris:~# svcadm refresh svc:/network/dns/client root@solaris:~#
これで名前も引けるようになりました。
root@solaris:~# ping sugimura.cc sugimura.cc is alive