Splunk Version 9.2.1
簡単なルーティング検査であればさくっと調べる事ができる。
ルーティングループ有無の事前調査などに活用できるかも。
(ソースルーティングも可能、ロードバランシングは未対応)
必要な情報
・Lookup1:対象ネットワークの全ルーティングテーブル
- node
- dest_network
- source_network
- next_hop_ip
- next_hop_node
・Lookup2:検査したいパケット
- source_ip
- dest_ip
- 1_node (※どのノードからパケットをスタートさせるか)
サンプル構成図
Lookup1:対象ネットワークの全ルーティングテーブル
①下記例のようにLookupファイルとして纏める。
検査したいネットワークのルーティングテーブルを、1つのLookupファイルに纏める。
ソースルーティングしない場合は、全て 0.0.0.0/0 で良い。(または登録しない、Lookupの条件から外す)
node | dest_network | source_network | next_hop_ip | next_hop_node |
---|---|---|---|---|
node1 | 172.16.0.0/24 | 0.0.0.0/0 | 192.168.1.2 | node3 |
node1 | 172.16.1.0/24 | 0.0.0.0/0 | 192.168.1.2 | node3 |
node1 | 192.168.0.0/24 | 0.0.0.0/0 | connected | connected |
node1 | 192.168.1.0/24 | 0.0.0.0/0 | connected | connected |
node2 | 172.16.0.0/24 | 0.0.0.0/0 | 192.168.3.2 | node4 |
... | ... | ... | ... | ... |
②ルックアップ定義で CIDRを指定。
Lookup2:検査したいパケット
デバッグしたいパケット情報を登録する。
例として3種類のパケットがnode1からスタートした場合、
どのようにルーティングされるか検査する。
source_ip | dest_ip | 1_node |
---|---|---|
10.0.0.1 | 172.16.0.11 | node1 |
10.0.0.10 | 172.16.0.11 | node1 |
10.0.0.16 | 172.16.1.22 | node1 |
各パケットのルーティング結果
パケット毎に、どのノードを経由してルーティングされるか検査できる。
この場合、最後が「connected」だとパケットが目的のネットワークに到達できたことを示す。
それ以外の場合、到達できずに捨てられている。
SPL例 (調査したいhop数だけ lookupをコピーしてください)
| inputlookup packet.csv
| lookup routing node AS 1_node dest_network AS dest_ip source_network AS source_ip OUTPUT next_hop_node AS 2_node
| lookup routing node AS 2_node dest_network AS dest_ip source_network AS source_ip OUTPUT next_hop_node AS 3_node
| lookup routing node AS 3_node dest_network AS dest_ip source_network AS source_ip OUTPUT next_hop_node AS 4_node
| lookup routing node AS 4_node dest_network AS dest_ip source_network AS source_ip OUTPUT next_hop_node AS 5_node
| table dest_ip source_ip *_node
試しにルーティングループさせてみるとこうなる。
Node3 で、宛先 172.16.1.0/24の nexthopを逆(node4 → node1)にしてみると、、、
いつまでも node1 ~ node3 間をピンポンして、宛先にたどり着かない様子が確認できる。
以上、現場からルーティングの検査でした!