タイトル通り謎の状況を調べることになったので備忘録しておきます。
AWS上、CentOS6.5。
経緯
インスタンススペック上げるために2年ぶりくらいにOS止めて起動したらスタティックルートが掃除されて無くなってた。
旧いやつだと再現しないがスペック上げる直前にとったAMIだと再現する。
予測
・設定まちがい →GATEWAYとか変えてみてdigできなかったのはできるようになったが再現する
・PEERDNSがyesなのがだめ →noにしてみたけど再現する
・BOOTPROTOがdhcpなのがおかしい →変えるとAMIとったあと使いまわすのがめんどくさそう
・awscliでだれかなんかした →CloudTrailは無効なので追いようがない
・cloud-initのしわざ →はいってなかった
・ネットワーク系の攻撃 →そういう話はググった結果とくにない
ログ
$ sudo view /var/log/messages
Jun 13 12:38:21 myhost01 ntpdate[1417]: name server cannot be used: Temporary failure in name resolution (-3)
Jun 13 12:38:21 myhost01 s3fs: init $Rev$
Jun 13 12:38:21 myhost01 ntpd[986]: 0.0.0.0 c618 08 no_sys_peer
Jun 13 12:54:03 myhost01 ntpd[986]: 0.0.0.0 c612 02 freq_set ntpd 18.745 PPM
Jun 13 12:54:03 myhost01 ntpd[986]: 0.0.0.0 c615 05 clock_sync
Jun 13 13:00:01 myhost01 ntpdate[1535]: name server cannot be used: Temporary failure in name resolution (-3)
Jun 13 13:07:44 myhost01 dhclient[821]: DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 6 (xid=0x56931317)
Jun 13 13:07:44 myhost01 dhclient[821]: DHCPOFFER from 172.18.1.1
Jun 13 13:07:44 myhost01 dhclient[821]: DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x56931317)
Jun 13 13:07:44 myhost01 dhclient[821]: DHCPACK from 172.18.1.1 (xid=0x56931317)
Jun 13 13:07:45 myhost01 ntpd[986]: Deleting interface #2 eth0, 172.18.1.156#123, interface stats: received=33, sent=33, dropped=0, active_time=1766 secs
Jun 13 13:07:45 myhost01 ntpd[986]: 172.18.1.20 interface 172.18.1.156 -> (none)
Jun 13 13:07:46 myhost01 dhclient[821]: bound to 172.18.1.156 -- renewal in 1734 seconds.
Jun 13 13:07:47 myhost01 ntpd[986]: Listen normally on 3 eth0 172.18.1.156 UDP 123
Jun 13 13:07:48 myhost01 ntpd[986]: 0.0.0.0 0618 08 no_sys_peer
対応した内容など
ログはntpdがDeleting interfaceしてるように見える。
→ntpdが落ちてても再現するのでdhcpがスタティックルートを消してそうなことが判明(同じアドレスなのに再度上書きしようとしてIFリスタートしてルート消してる風)
検索するとntpdのオプション-Lでインターフェース指定しろという公式見解ぽいのが見つかったのでそのとおりにしてみる
→Deleting interfaceが再現する
→rc.localで初回のアドレスを引っ張ったあとにdhclientをkillする方向に。→OS再起動後、翌日もルート消失は再現せず安定。
→ntpdがstartと同期まで時間がっかかるので起動スクリプト内でntpdateは一発かましておいて、
OS起動後にservice network restartするとdhclientもあがるしntpdも上がるしルートも消えないしいい感じで
手動でservice network restartしたあとにしばらく大丈夫だったらrc.localにservice network restart書こうかなっということに落ち着きそうです。
# vi /etc/rc.local
/bin/kill `cat /var/run/dhclient-eth0.pid`
ほか確実に効かなかった等
→ntpdのsysconfigに-L追加(ちなみに"-L eth0"とIFを指定するとntpdが起動しなくなった)
→なぜかntpdは起動したままrc.localとcronのntpdate設定がされてたのでntpdate側をコメント化
(旧いのはntpdateでntpdに途中で変えた名残とのこと)
→ntpdをバージョンアップ(ntp-4.2.6p5-10.el6.centos.1.x86_64 → ntp-4.2.6p5-10.el6.centos.2.x86_64)
→/etc/sysconfig/network-scripts/ifup-ethのdhcpclientの起動時のログの抑制を解除(変化なし)
→networkのGATEWAY無効化(これはdigはできるようになったしメッセージが変わったので試験環境としての効果)
→ifcfg-eth0{,1}のPEERDNSをyesからnoに(本来はたぶん内部DNS立てた時にやるやつ)
→ntpdをやめてntpdateにしようかなと思ったがdhclientが上書きしてる風で静的ルート消失が再現。
→NetworkManagerは入ってなかった(CentOS6.5)。
参考(大感謝)
http://qiita.com/toshihirock/items/fbb9c74e63eab3a6c9a1
http://xjsunjie.blog.51cto.com/999372/1886600
https://access.redhat.com/solutions/261123
https://serverfault.com/questions/554536/ntpd-seems-to-delete-all-network-interfaces
http://qiita.com/kooohei/items/b0931ae210911cc52adc
http://dev.classmethod.jp/cloud/ec2-linux-network-conf-tips/
http://d.hatena.ne.jp/limitusus/20150619/1434740035
https://hack-le.com/networktrouble/
https://bugs.launchpad.net/ubuntu/+source/ntp/+bug/1069543
http://cloudinit.readthedocs.io/en/latest/topics/network-config.html