概要
/var/log/messages
IPv4: martian source 10.0.1.5 from 10.0.10.3, on dev ens161
みたいなログが出力されて、想定通りに通信できない時の一つの対応方法
前提
- NICを複数持っている
- セグメントごとにStatic Routeを設定している
- この例では以下のようなNIC設定のイメージ
- ens161: 10.0.1.5/24
- ens192: 10.0.10.5/24
- Static Route: 10.0.10.0/16 -> 10.0.1.1 via ens192
原因
送信元のセグメントがStatic Routeの設定上、別NICから送信されるようになっているとこのエラーとなる
今回のケースだと、ens192向けで広めにStatic Routeを設定していたが、
部分的にはens161を通るべきセグメントがあり、その箇所が設定不足でこの状況になってしまっていた
route
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 103 0 0 ens161
10.0.10.0 10.0.10.1 255.255.0.0 UG 100 0 0 ens192
~~
本当はDefault GWの設定に従ってens161から送信されて欲しいが、
Static Routeとして設定されている2行目のRouting Tableに従ってens192から送信すべきとなる
そのため、**あれ?受信NICがそもそもおかしくね?**となって、
martian sourceがこんにちはしていた
解決方法
Static Routeを追加しましょう
このケースだとこういった形で設定追加
設定永続化
この場合一時的にens161を通る通信がDownするため、注意が必要
sudo nmcli con mod ens161 +ipv4.routes "10.0.10.0/24 10.0.1.1"
sudo nmcli con reload
sudo nmcli con down ens161; sudo nmcli con up ens161
一時的な反映
こちらの場合は即時で反映されるが、再起動等行うと設定が消えてしまうため、
永続化する場合は↑とセットで行う
sudo ip route add 10.0.10.0/24 via 10.0.1.1 dev ens161