SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

curlには名前解決を操作できるオプションがある

問題

サーバー移転のテストで、本来のホスト名 example.com で、移転先サーバー 192.0.2.123 にアクセスしたいです。

いちいち /etc/hosts や “C:\Windows\System32\drivers\etc\hosts” に以下のように追記してテストしないといけないでしょうか。

192.0.2.123 example.com

答え

ブラウザでアクセスして表示確認などする場合は hostsファイルの編集が良いですが、curlコマンドで軽くHTMLやレスポンスを確認するだけの場合は、curlコマンドのオプションで対応可能。

以下のような場合に便利。

curlコマンドで確認する場合は、いちいちhostsを編集しなくても名前解決を操作できるオプションがある。

--resolve <host:port:address>

使い方は、名前解決したいドメイン、ポート、解決結果として使用したいIPを指定するだけ。

www.google.com のホスト名で、ローカルの127.0.0.1にアクセスする場合

$ curl -v --resolve www.google.com:80:127.0.0.1 http://www.google.com/
* Added www.google.com:80:127.0.0.1 to DNS cache
* Hostname www.google.com was found in DNS cache
*   Trying 127.0.0.1...
* Connected to www.google.com (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: www.google.com
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Sat, 18 Jan 2020 04:35:22 GMT
< Server: Apache/2.4.18 (Ubuntu)
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=UTF-8
<

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<style type="text/css">

(以下 ローカルの 127.0.0.1 にアクセスしたときのHTML)

127.0.0.1 に対して、ホスト名 www.google.com でアクセスできた。

* Added www.google.com:80:127.0.0.1 to DNS cache
* Hostname www.google.com was found in DNS cache
*   Trying 127.0.0.1...
* Connected to www.google.com (127.0.0.1) port 80 (#0)
> GET / HTTP/1.1
> Host: www.google.com

関連するメモ

コメント