夜明け前の最も暗いとき

技術的なやったことをメモするブログ

SNMPでネットワーク機器を監視する

SNMP(Simple Network Management Protocol)とはネットワーク機器を監視するためのプロトコルです。SNMPでは、監視対象の機器からtrapと呼ばれる通知を監視端末で受け取り、状態の変化を把握します。

続きを読む

MACアドレス重複によるネットワークトラブル

Xenで作業中になぜかネットワークに接続できなくなりました。構成は以下の通り。

f:id:jianlan:20170719213446j:plain

ゲスト(DebianUbuntu)とはLinuxの仮想ブリッジ(bridge-utils)で接続されています。

kmr@kmr-W35-37ET:~$ brctl show
bridge name bridge id       STP enabled interfaces
xenbr0      8000.0090f5de2c1b   no      enp4s0f2
                            vif1.0
                            vif1.0-emu
                            vif4.0
                            vif4.0-emu

外部からのpingは応答があったり無かったり。

c:\>ping 192.168.10.3 -t
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
要求がタイムアウトしました。
192.168.10.3 からの応答: バイト数 =32 時間 =1ms TTL=63
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
192.168.10.3 からの応答: バイト数 =32 時間 <1ms TTL=63
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。
要求がタイムアウトしました。

pingの応答は非常に不安定。まずは、tracerouteで通信経路を確認します。

c:\>tracert 192.168.10.3

192.168.10.3 へのルートをトレースしています。経由するホップ数は最大 30 です

  1    <1 ms    <1 ms    <1 ms  192.168.11.1
  2    <1 ms    <1 ms    <1 ms  192.168.11.66
  3     *        *        *     要求がタイムアウトしました。
  4     *        *        *     要求がタイムアウトしました。
  5     *        *        *     要求がタイムアウトしました。

ルータのポートまでは正常に到達できていることが確認できました。問題は192.168.10.0/24のネットワークにありそうです。パケットキャプチャでブリッジ(xenbr0)の通信内容を確認してみます。

23:05:05.730363 IP 192.168.11.65 > 192.168.10.3: ICMP echo request, id 1, seq 516, length 40
23:05:10.730667 IP 192.168.11.65 > 192.168.10.3: ICMP echo request, id 1, seq 517, length 40
23:05:15.730628 IP 192.168.11.65 > 192.168.10.3: ICMP echo request, id 1, seq 518, length 40
23:05:20.730326 IP 192.168.11.65 > 192.168.10.3: ICMP echo request, id 1, seq 519, length 40
23:05:25.729839 IP 192.168.11.65 > 192.168.10.3: ICMP echo request, id 1, seq 520, length 40
23:05:30.731034 IP 192.168.11.65 > 192.168.10.3: ICMP echo request, id 1, seq 521, length 40

ICMP echo request(ping)は来ているようですが、応答がありません。ゲスト側のUbuntuからDebianに対してpingを打ってみます。

23:30:25.175909 ARP, Request who-has 192.168.10.3 tell 192.168.10.4, length 28
23:30:25.176112 ARP, Reply 192.168.10.3 is-at 00:16:3e:e1:b0:63 (oui Unknown), length 28
23:30:26.184669 ARP, Request who-has 192.168.10.3 tell 192.168.10.4, length 28
23:30:26.184996 ARP, Reply 192.168.10.3 is-at 00:16:3e:e1:b0:63 (oui Unknown), length 28
23:30:27.208692 ARP, Request who-has 192.168.10.3 tell 192.168.10.4, length 28
23:30:27.208881 ARP, Reply 192.168.10.3 is-at 00:16:3e:e1:b0:63 (oui Unknown), length 28
23:30:28.232947 ARP, Request who-has 192.168.10.3 tell 192.168.10.4, length 28
23:30:28.233213 ARP, Reply 192.168.10.3 is-at 00:16:3e:e1:b0:63 (oui Unknown), length 28

パケットは非常に奇妙な動きをしています。ARP送信先MACアドレスを見つけ出しているのに、すぐにまたARPを使ってMACアドレスの探索をしています。 しばらく眺めていて、あることを思い出しました。Ubuntu仮想マシンDebianの設定ファイルをコピーして作成しました。

jianlan@dom0:~$ cat /etc/xen/hvm-debian.cfg | grep xenbr0
vif         = [ 'mac=00:16:3E:E1:B0:63,bridge=xenbr0' ]
jianlan@dom0:~$ cat /etc/xen/hvm-ubuntu.cfg | grep xenbr0
vif         = [ 'mac=00:16:3E:E1:B0:63,bridge=xenbr0' ]

ネットワークインターフェイスを抜粋したところ、使用しているMACアドレスが同一のものであることが判明しました。ネットワーク上に同じMACアドレスが存在していたためARPが正しく動作しなかったのです。外部からのpingが不安定であったのも、ARPをするたびにDebianUbuntuのどちらかが選ばれ、正しいIPを持っている時だけ正常に応答し、それ以外はパケットを破棄していたためタイムアウトになっていました。

MACアドレスは一意になるよう割り当てられていますが、仮想環境では自分で設定することが可能です。今回のトラブルは仮想環境ならではの原因でした。

Cisco 892Jを使ったネットワーク構築

ネットワークの構築を覚えるには実際に実機に触って、コンフィグ作成とトラブルシューティングをするのが一番です。 C892JはBGPやOSPFのような大規模ネットワークで使われる動的ルーティングプロトコルをサポートしています。また、VLANやVRFをサポートしているので、一台で複数の論理的なネットワークとルータを作成することができます。他にもVPNQoSなどサポートしており勉強用にいじってみるのには最適だと思います。

CISCO892J-K9

CISCO892J-K9

続きを読む

夜明け前の直前に最も暗いときが来る

「夜明け前の直前に最も暗いときが来る」という諺がアンダルシアにはあるらしい。

少年は自分の国の古いことわざを思い出した。それは、夜明けの直前に、最も暗い時間がくる、というものだった。

パウロ・コエーリョ; 山川 紘矢; 山川 亜希子. アルケミスト 夢を旅した少年 (角川文庫)