잘못 구성된 DNS 항목(실험 중이고 당시에는 알려지지 않음)을 해결하기 위해 컬을 사용하려고 시도할 때 --resolve
올바른 방법인 것처럼 보였습니다. 그러나 인수는 내가 예상한 방식과 (성공적으로) 404의 방식으로 작동하지 않았습니다.
적절한 항목을 추가하기 위해 시스템 /etc/hosts
파일을 편집하면 제대로 작동하므로 이것이 컬이 DNS를 해결하는 방법의 일부인 것 같습니다. 실제로 IP를 유효하지 않은 것으로 변경하는 것도 arg 및 404 /etc/hosts
보다 우선순위를 받습니다 .--resolve
내장 인수를 통해 시스템이 제공하는 모든 것에 대해 컬이 이름에 대한 특정 IP를 확인하도록 강제할 수 있습니까? (그리고 --resolve
다른 것과 결합되어 있습니까 ?)
아래 예; 유죄를 보호하기 위해 이름과 주소가 변경되었습니다.
% curl -L -vv --resolve "foo.example.com:80:10.14.0.1" "https://foo.example.com/path"
* Added foo.example.com:80:10.14.0.1 to DNS cache
* Trying 10.15.0.1
* TCP_NODELAY set
* Connected to foo.example.com (10.15.0.1) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/cert.pem
CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, unknown CA (560):
* SSL certificate problem: unable to get local issuer certificate
* Closing connection 0
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
답변1
방금 답을 찾았습니다. --resolve
올바른 포트를 지정해야 합니다(여러 포트일 수 있음).
또한 *
호스트(포트는 아님!)에 사용될 수 있으므로 인수가 단순화됩니다. 맨페이지에는 모든 내용이 매우 명확하게 나와 있습니다.
% curl -L -vv --resolve "*:80:10.14.0.1" --resolve "*:443:10.14.0.1" "https://foo.example.com/path"
* Added foo.example.com:443:10.14.0.1 to DNS cache
* Trying 10.14.0.1