今回はAWSのEC2でAmaonLinux2からRDSへ接続しようとすると
「Name or service not known」
となってしまい繋がらない場合の確認ポイントと解決策を書きたいと思います。
このエラー、今まで繋がっていたのに急に発生して繋がらなくなることがあるのでびっくりします。
原因はエラーの通りで、RDSの”xxxxx.xxxxx.ap-northeast-1.rds.amazonaws.com”のようなDNS名を使って接続しようとしたときに、名前解決できなくて宛先わからずエラーになっています。
サーバーはこういった文字列から宛先を知るために、ネームサーバーという場所に問い合わせをして、宛先のIPを教えてもらいます。
このエラーが発生したときは↓こちらのファイルをまず開いてみてください。
/etc/resolv.conf
恐らくファイルが空になっていると思います。
本来であればDHCPでネットワークが更新されたときに自動で更新されるのですが、たまに失敗するのか空っぽになってしまう事があります。
なので一旦ネットワークを更新してみると正常にファイルが更新されるかもしれません。
systemctl restart network.service
それでもまだ空っぽの場合は、直接書いてしまいましょう。
/etc/resolv.confに直接↓を記述します。
nameserver のところのIPはEC2の配置されているVPCのネットワーク範囲に+2したIPを書いておきます。(VPCの範囲が10.0.0.0であれば10.0.0.2)
; generated by /usr/sbin/dhclient-script
search ap-northeast-1.compute.internal
nameserver XXX.XXX.XXX.2
これでまずはRDSに繋がるようになると思います。
この/etc/resolv.confを自動で更新されたくない!という場合は、
/etc/sysconfig/network-scripts/ifcfg-eth0 というファイルで PEERDNS=no を追加すると、DHCP で /etc/resolv.conf を更新されないようにできます。
コメント