ESXi を使っていろいろ調査するのに(自分が使ったものも含めて)いろいろまとめてみました。
vmkping
vmkping は VMkernel ポートから ping 打つことが出来ます。
基本的にコマンドの一覧としては以下。
[root@hoge:~] vmkping -h
vmkping [args] [host]
args:
-4 use IPv4 (default)
-6 use IPv6
-A vmkernal TCP stack debug mode for all netstacks
where -D option is required for -A option to work.
-c <count> set packet count
-d set DF bit (IPv4) or disable fragmentation (IPv6)
-D vmkernel TCP stack debug mode
-i <interval> set interval (secs)
-I <interface> outgoing interface - for IPv6 scope or IPv4
bypasses routing lookup
-N <next_hop> set IP*_NEXTHOP - bypasses routing lookup
for IPv4, -I option is required
-R <respool> The resource pool option name. The valid respool
names are default, hol, vmotion, iscsi, nfs,
ft, vm, mgmt, hbr, vsan, vdp
-s <size> set the number of ICMP data bytes to be sent.
The default is 56, which translates to a 64 byte
ICMP frame when added to the 8 byte ICMP header.
(Note: these sizes does not include the IP header).
-t <ttl> set IPv4 Time To Live or IPv6 Hop Limit
-v verbose
-W <timeout> set timeout to wait if no responses are
received (secs)
-X XML output format for esxcli framework.
-S The network stack instance name. If unspecified
the default netstack instance is used.
NOTE: In vmkernel TCP debug mode, vmkping traverses
VSI and pings various configured addresses.
-4 IPv4 オプション
デフォルトだと IPv4 で使うことが多いと思うのでこれで。
何も指定しなければこれなのでわざわざこれをつけてコマンドを打つことは無いと思う。
[root@nhost03:~] vmkping -4 192.168.51.21
PING 192.168.51.21 (192.168.51.21): 56 data bytes
64 bytes from 192.168.51.21: icmp_seq=0 ttl=64 time=0.310 ms
64 bytes from 192.168.51.21: icmp_seq=1 ttl=64 time=0.253 ms
64 bytes from 192.168.51.21: icmp_seq=2 ttl=64 time=0.247 ms
-6 IPv6 オプション
IPv6 で確認したい場合の引数。
基本的にローカルの ESXi で構築することが多いのでほとんど IPv4 で使うことが多いと思う。
逆に IPv6 で使うことあるんだろうか。もしかしたらあるのかもしれないけどすごいレアケースな気がする。自分の環境では使うことはないけど…
-I インターフェース指定
インターバルの時間を指定して ping を送ることができる機能。
vMotion 用など、特定の VMkernel インターフェース(vmk1
)を使って通信を確認したい場合
vmkping -I vmk1 192.168.51.20
一番これがよく使いたい項目かも。VMkernel 側で確認するにはこの引数を使って届くか届かないかを確認をするのがセオリーな気がします。
ーs パケットサイズ指定
ネットワークの MTU(最大転送単位)を確認するために、パケットサイズを指定して ping を送ることができる。
たとえば、8972 のパケットサイズを 192.168.51.42
に送ることができるか確認するには
vmkping -I vmk1 -s 8972 192.168.51.42
このような形で送ればOK。
[root@nhost01:~] vmkping -I vmk1 -s 8972 192.168.51.42
PING 192.168.51.42 (192.168.51.42): 8972 data bytes
8980 bytes from 192.168.51.42: icmp_seq=0 ttl=64 time=0.526 ms
8980 bytes from 192.168.51.42: icmp_seq=1 ttl=64 time=0.542 ms
8980 bytes from 192.168.51.42: icmp_seq=2 ttl=64 time=0.586 ms
--- 192.168.51.42 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.526/0.551/0.586 ms
vSAN 構築時にパケットが通らなくて、これ使って疎通確認をいろいろやってました。障害時に調べるのもありですが、構築時の調査にも使うことができるので非常に有用ではあると思います。
疎通確認でこれだけ出来れば大体のことはできるので、次回はパケットキャプチャーの話を…