背景
誰かが間違って、いらないスタティックルーティングを入れてしまった。
結果的には↓になる。
[root@momo ~]# ip route
0.0.0.0/2 via 192.168.100.1 dev ens34 proto static metric 100
default via 192.168.100.254 dev ens34 proto static metric 100
コマンド準備
「ip route」の結果をみて、「この作業が一瞬で終われる」を思いながら、↓のコマンドを準備した。
ip route
nmcli c mod ens34 -ipv4.routes "0.0.0.0/2 192.168.100.1"
nmcli c u ens34
ip route
作業
実際に作業に行ってみたら、↑のコマンドでうまくいけなかった。
# ip route
0.0.0.0/2 via 192.168.100.1 dev ens34 proto static metric 100
マジかと思って、grepしてみたら、ヒットしなかった。
# grep "0.0.0.0" /etc/sysconfig/network-scripts/route-ens34
トラブルシューティング
①一応XX作業なので、少し焦って、「history」で誤ったコマンドを探そうとしたけど、見つからなかった
②「ip route」の仕様も忘れて、↓を実行した
# ip route del 0.0.0.0/2 via 192.168.100.1
これで「ip route」を確認すると、「0.0.0.0/2 via 192.168.100.1 dev ens34 proto static metric 100」が削除された。
「nmcli c u ens34」を実行してみたら、「ip route」の仕様通り、設定が元に戻った。
③「/etc/sysconfig/network-scripts/」配下にある全ファイルをgrepしてみたら、怪しいところがなさそう
# grep "0.0.0.0" /etc/sysconfig/network-scripts/
④なんとなく冷静になって、「/etc/sysconfig/network-scripts/route-ens34」とルーティングテーブルを比較してみた。
50何行もあったが、目視で犯人が発見
ネットワークマスクが「/2」で、対象ネットワークが全然別だ
ADDRESS=10.10.10.0
NETMASK=192.0.0.0
GATEWAY=192.168.100.1
コマンドを編集して、対象ネットワークを「10.10.10.0」を指定して、削除できた!!
nmcli c mod ens34 -ipv4.routes "10.10.10.0/2 192.168.100.1"
振り返
①ルーティング追加コマンドがそのままで「/etc/sysconfig/network-scripts/route-xxx」に追記される
②当然だけど、ルーティングテーブルに表示されるのがネットワークアドレス
③↓のコマンドは、「/etc/sysconfig/network-scripts/route-xxx」を操作できる。
(恐らくnmcliは「/etc/sysconfig/network-scripts/」配下にある全ファイルを操作できると思われる)
nmcli c mod xxx +ipv4.routes/-ipv4.routes "x.x.x.x/x x.x.x.x"
「-ipv4.routes "x.x.x.x/x x.x.x.x"」はルーティングテーブルではなく、「/etc/sysconfig/network-scripts/route-xxx」の中身を探して、完全一致の場合だけ削除する。
スタティックルーティングの事前調査として、「/etc/sysconfig/network-scripts/route-xxx」を確認して、その結果で誤ったルーティング設定を探して、コマンドを作成する
④「ip route」は「/etc/sysconfig/network-scripts/route-xxx」を触らず、ルーティングテーブルに対する操作だけなので、再起動すると設定が戻る
⑤↓でサブネットマスクで計算すると、ネットワークアドレスが確かに「0.0.0.0」なので、「ip route」で「0.0.0.0/2 via 192.168.100.1」に表示される
ADDRESS=10.10.10.0
NETMASK=192.0.0.0
GATEWAY=192.168.100.1
以上