Python でネームサーバーを指定して情報を取得する
sockrt ライブラリでもドメイン名から IP アドレスが取得可能だが、もう少し詳しい情報を取得したい場合がある。 そんな時に利用できるのが Python 用の DNS ライブラリである。
インストール
インストールする場合には、パッケージとしてインストールするか PIP でインストールする方法がある。パッケージとしてインストールした場合は、アップデートが容易になる利点がある。
パッケージとしてインストール
$ sudo dnf install python3-dns
PIP でインストール(全ユーザー対象)
$ sudo pip install dnspython
PIP でインストール(個人ユーザーのみ)
$ pip install dnspython
アドレスの取得
IPv4 アドレスや IPv6 アドレスの取得
>>> import dns.resolver
>>> # ネームサーバーの指定
>>> resolver = dns.resolver.Resolver()
>>> resolver.nameservers = ['8.8.8.8', '8.8.4.4']
>>>
>>> # 割り当てられている全ての IPv4 アドレスの取得
>>> for record in resolver.resolve('google.com', 'A'):
... print(record.address)
...
142.250.206.238
>>> # 割り当てられている全ての IPv6 アドレスの取得
>>> for record in resolver.resolve('google.com', 'AAAA'):
... print(record.address)
...
2404:6800:4004:827::200e
>>>
この様に問い合わせで返って来るのがレコード形式なので、MX レコードや TXT レコードの問い合わせも可能である。
また、主要な情報だけが必要な場合は「str(record)」とすれば良いだけなので使い勝手も良い。
詳しくは dnspython (https://dnspython.readthedocs.io/en/stable/index.html) のページで確認して
欲しい。
また、使用方法のサンプルプログラムも多数存在しているので、こちらも確認すると良いだろう。
DNS サーバー対して細かな操作が必要な場合は、試してみてはどうだろうか?