tweet:2023:1015_01
差分
このページの2つのバージョン間の差分を表示します。
| — | tweet:2023:1015_01 [2023/10/16 11:40] (現在) – 作成 - 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== CiscoとVMwareとFreeBSD CARP ====== | ||
| + | |||
| + | 某所で少し変な挙動を見かけたので、ちょっと手元の環境で再現試験。 | ||
| + | 結果を先に書くと、再現しなかったんだけど、環境構築から試験まで色々やったので、ここにまとめておく。 | ||
| + | |||
| + | ===== 試験環境 ===== | ||
| + | * VMware ESXi 6.7 [[https:// | ||
| + | * FreeBSD 14.0-Beta5 | ||
| + | * Cisco 2960X-48TD-L | ||
| + | |||
| + | ==== ESXiおよびFreeBSD設定 ==== | ||
| + | |||
| + | === ESXi === | ||
| + | * vSwitchを2つ作成 | ||
| + | |||
| + | ^ name ^ MTU ^ NIC ^ 無差別 ^ 偽装 ^ MAC ^ | ||
| + | | Test-sw1 | 1500 | vmnic3 | ✕ | ||
| + | | Test-sw2 | 1500 | vmnic4 | ✕ | ||
| + | |||
| + | * PortGroupを2つ作成 | ||
| + | |||
| + | ^ name ^ vLAN ^ vSW ^ 無差別 ^ 偽装 ^ MAC ^ | ||
| + | | test-pg1 | 601 | Test-sw1 | ✕ | ||
| + | | test-pg2 | 601 | Test-sw2 | ✕ | ||
| + | |||
| + | 言葉の定義 (VMware ESXi 6.7 のマニュアルより抜粋し編集) | ||
| + | * MAC変更を許可 | ||
| + | * VMが受け取るトラフィックに影響を及ぼす | ||
| + | * [承諾] ESXi は有効な MAC アドレスを初期 MAC アドレスとは異なるアドレスに変更する要求を受け入れる | ||
| + | * [拒否] ESXi は有効な MAC アドレスを、初期 MAC アドレスとは異なるアドレスに変更する要求を拒否する | ||
| + | * この設定により、MAC のなりすましに対してホストが保護される | ||
| + | * 仮想マシンアダプタが要求の送信に使用したポートは無効になる | ||
| + | * 仮想マシンアダプタは、有効な MAC アドレスが初期 MAC アドレスと一致しない限り、それ以上のフレームを受け取らない | ||
| + | * ゲスト OS は、MAC アドレスの変更要求が拒否されたことを検知しない | ||
| + | * 偽装転送を許可 | ||
| + | * VMから転送されるトラフィックに影響を及ぼす | ||
| + | * [承諾] ESXi はソースと有効な MAC アドレスを比較しない | ||
| + | * [拒否] ホストはゲスト OS から転送されるソース MAC アドレスと、その仮想マシンアダプタの有効な MAC アドレスを比較して、それらが一致するかどうかを確認する | ||
| + | * アドレスが一致しない場合、ESXi ホストはパケットをドロップする | ||
| + | * ゲスト OS は、仮想マシンアダプタが、なりすましている MAC アドレスを使用したパケットの送信を実行できないことは検知しない | ||
| + | * ESXi ホストは、なりすましているアドレスのパケットが配信される前に、そのパケットを遮断する | ||
| + | * ゲスト OS は、そのパケットがドロップされたとみなす可能性がある | ||
| + | * 無差別モードを許可 | ||
| + | * 仮想マシンアダプタが実行するすべての受信フィルタリングが除去される | ||
| + | * ゲスト OS は回線で監視されるすべてのトラフィックを受信する | ||
| + | |||
| + | === FreeBSD === | ||
| + | FreeBSDは普通にInstall。 | ||
| + | |||
| + | * ''/ | ||
| + | * '' | ||
| + | * ''/ | ||
| + | * < | ||
| + | hostname=" | ||
| + | moused_nondefault_enable=" | ||
| + | # Set dumpdev to " | ||
| + | dumpdev=" | ||
| + | zfs_enable=" | ||
| + | sshd_enable=" | ||
| + | |||
| + | vmware_guest_kmod_enable=" | ||
| + | vmware_guest_enable=" | ||
| + | |||
| + | ifconfig_vmx0=" | ||
| + | ifconfig_vmx1=" | ||
| + | ifconfig_vmx1_alias0=" | ||
| + | # CARP設定 | ||
| + | </ | ||
| + | |||
| + | * Installed package | ||
| + | * '' | ||
| + | |||
| + | * おまけ | ||
| + | * Multicast状態の確認には、'' | ||
| + | * '' | ||
| + | * CARPの状態変更には '' | ||
| + | * ただし、advbase/ | ||
| + | |||
| + | ==== Cisco Configuration ==== | ||
| + | < | ||
| + | version 15.2 | ||
| + | no service pad | ||
| + | service tcp-keepalives-in | ||
| + | service tcp-keepalives-out | ||
| + | service timestamps debug datetime msec localtime | ||
| + | service timestamps log datetime msec localtime | ||
| + | service password-encryption | ||
| + | service sequence-numbers | ||
| + | service unsupported-transceiver | ||
| + | no service dhcp | ||
| + | ! | ||
| + | hostname swc1 | ||
| + | ! | ||
| + | boot-start-marker | ||
| + | boot-end-marker | ||
| + | ! | ||
| + | ! | ||
| + | username seirios privilege 15 password 7 ****************** | ||
| + | aaa new-model | ||
| + | ! | ||
| + | aaa authentication login CONSOLE local-case | ||
| + | ! | ||
| + | aaa session-id common | ||
| + | clock timezone JST 9 0 | ||
| + | switch 1 provision ws-c2960x-48td-l | ||
| + | no ip source-route | ||
| + | ip routing | ||
| + | ! | ||
| + | ip domain-name mgmt.example.com | ||
| + | ip name-server 8.8.8.8 | ||
| + | ip name-server 8.8.4.4 | ||
| + | vtp mode off | ||
| + | ! | ||
| + | spanning-tree mode pvst | ||
| + | spanning-tree extend system-id | ||
| + | no spanning-tree vlan 1-4094 | ||
| + | no errdisable detect cause gbic-invalid | ||
| + | ! | ||
| + | vlan internal allocation policy ascending | ||
| + | ! | ||
| + | vlan 601 | ||
| + | name " | ||
| + | ! | ||
| + | no cdp run | ||
| + | ! | ||
| + | interface FastEthernet0 | ||
| + | ip address XXX.XXX.XXX.XXX mmm.mmm.mmm.mmm | ||
| + | no ip route-cache | ||
| + | ! | ||
| + | interface GigabitEthernet1/ | ||
| + | ! | ||
| + | (snip) | ||
| + | ! | ||
| + | interface GigabitEthernet1/ | ||
| + | ! | ||
| + | interface GigabitEthernet1/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | ! | ||
| + | interface GigabitEthernet1/ | ||
| + | ! | ||
| + | interface GigabitEthernet1/ | ||
| + | | ||
| + | | ||
| + | | ||
| + | ! | ||
| + | interface GigabitEthernet1/ | ||
| + | ! | ||
| + | interface GigabitEthernet1/ | ||
| + | ! | ||
| + | interface TenGigabitEthernet1/ | ||
| + | ! | ||
| + | interface TenGigabitEthernet1/ | ||
| + | ! | ||
| + | interface Vlan1 | ||
| + | no ip address | ||
| + | | ||
| + | ! | ||
| + | interface Vlan601 | ||
| + | ip address 192.168.1.254 255.255.255.0 | ||
| + | ip information-reply | ||
| + | no ip route-cache | ||
| + | ! | ||
| + | no ip http server | ||
| + | no ip http secure-server | ||
| + | ! | ||
| + | ip route 0.0.0.0 0.0.0.0 xxx.xxx.xxx.xxx | ||
| + | ip ssh version 2 | ||
| + | ! | ||
| + | ip access-list extended MGMT | ||
| + | | ||
| + | ! | ||
| + | no vstack | ||
| + | configuration mode exclusive | ||
| + | ! | ||
| + | line con 0 | ||
| + | | ||
| + | line vty 0 4 | ||
| + | | ||
| + | | ||
| + | | ||
| + | login authentication CONSOLE | ||
| + | exec prompt timestamp | ||
| + | | ||
| + | | ||
| + | line vty 5 15 | ||
| + | | ||
| + | | ||
| + | | ||
| + | login authentication CONSOLE | ||
| + | exec prompt timestamp | ||
| + | | ||
| + | | ||
| + | ! | ||
| + | ntp server ntp.nict.jp | ||
| + | end | ||
| + | </ | ||
| + | |||
| + | なお、HSRP Configurationは | ||
| + | |||
| + | < | ||
| + | interface Vlan601 | ||
| + | ip address 192.168.1.254 255.255.255.0 | ||
| + | ip broadcast-address 192.168.1.255 | ||
| + | ip information-reply | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | no ip route-cache | ||
| + | </ | ||
| + | |||
| + | ===== テスト内容 ===== | ||
| + | * ESXi上のvSwitch/ | ||
| + | * CARPが正常に動くために必要な設定の明確化 | ||
| + | * VM <-> vSwitch <-> Cisco <-> vSwitch <-> VM でのCARPの挙動確認 | ||
| + | * HSRPがとCARPがCisco上で共存できるかの確認 | ||
| + | |||
| + | ===== Test手順と結果 ===== | ||
| + | |||
| + | ==== 同一PG内でのCARP 動作試験 ==== | ||
| + | * 2台のVMのNICをTest-pg1に接続し、表にあるようなPG Security設定をした上で、CARPの状態を確認、変更し、正しく切り替わるか確認する | ||
| + | |||
| + | ^ 無差別 ^ 偽装転送 ^ MAC変更 ^ 結果 ^ 備考 ^ | ||
| + | | ✕ | ✕ | ✕ | ✕ | CARPは正しく動作しなかった。外からのICMPに返答もしない。 | | ||
| + | | 〇 | 〇 | 〇 | 〇 | CARPは正しく動作した | | ||
| + | | ✕ | 〇 | 〇 | ✕ | CARPのStateは正しく動作した(Master/ | ||
| + | | 〇 | ✕ | 〇 | ✕ | CARPは正しく動作しなかった。外からのICMPに返答もしない。 | | ||
| + | | 〇 | 〇 | ✕ | 〇 | CARPは正しく動作した | | ||
| + | |||
| + | === 結論 === | ||
| + | * 無差別モードと偽装転送はPGレベルで承諾する必要がある。何かの影響があるのは望ましくないので、MAC変更も承諾しておいた方が無難 | ||
| + | * なお、vSwitchの設定よりもPGの設定の方が優先されるので、vSWの設定は気にしなくて良い | ||
| + | |||
| + | ==== 異なるPG間でのCiscoを経由したCARP動作試験 ==== | ||
| + | * test-1 の NIC を Test-pg1 に接続 | ||
| + | * test-2 の NIC を Test-pg2 に接続 | ||
| + | * **__ 注意 __** pg1/ | ||
| + | * Cisco側でHSRPをOn/ | ||
| + | |||
| + | ^ HSRP ^ Group ^ auth ^ 結果 ^ 備考 ^ | ||
| + | | ✕ | ✕ | ✕ | 〇 | | | ||
| + | | 〇 | 10 | ✕ | 〇 | | | ||
| + | | 〇 | 10 | 〇 | 〇 | | | ||
| + | | 〇 | 1 | 〇 | 〇 | | | ||
| + | | 〇 | 1 | ✕ | 〇 | | | ||
| + | |||
| + | === 結論 === | ||
| + | * Cisco 2960で試験した限りでは、HSRPは問題なく動作したと言える。 | ||
| + | * CARPのVHIDとHSRPのGroupが同じでも異なっていても問題はなかった | ||
| + | * 認証の影響もなかった | ||
| + | |||
tweet/2023/1015_01.1697372916.txt.gz · 最終更新: (外部編集)
