きょうは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