프록시를 사용하는 네트워크에 있습니다. 내 컴퓨터는 어디에서나 HTTP를 통해 서로 액세스하는 많은 스크립트를 사용합니다.
- 네트워크는 10.0.0.0/8입니다.
내 프록시는 10.1.1.1:81이므로 그에 따라 설정했습니다.
export http_proxy=http://10.1.1.1:81/
프록시를 통해 액세스할 수 있도록 내 범위를 제외하고 싶습니다. 나는 가능한 모든 조합을 시도했다.
export no_proxy='10.*' export no_proxy='10.*.*.*' export no_proxy='10.0.0.0/8'
위의 어느 것도 작동하지 않습니다!
테스트 중인데 wget
연결하려는 IP 주소에 관계없이 항상 프록시 쿼리를 시도합니다.
- 많은 스크립트가 모든 시스템 어디에나 있기 때문에 이
--no-proxy
옵션은 실제로는 옵션이 아닙니다. 시스템 전체에 설정하고 싶습니다.
답변1
문제를 보는 방식이 잘못되었습니다. 환경 no_proxy
변수는 접두사가 아닌 도메인 접미사를 나열합니다. ~에서문서:
no_proxy
: 이 변수에는 쉼표로 구분된 도메인 확장 프록시 목록이 포함되어야 합니다.아니요사용.
따라서 IP의 경우 두 가지 옵션이 있습니다.
1) 각 IP를 완전히 추가합니다.
printf -v no_proxy '%s,' 10.1.{1..255}.{1..255};
export no_proxy="${no_proxy%,}";
2) URL이 제공된 호스트의 IP를 찾고 프록시를 사용해야 하는지 결정하는 래퍼 스크립트(라고 함 )의 이름을 바꾸고 wget
작성합니다 .wget-original
wget
#!/bin/bash
ip='';
for arg; do
# parse arg; if it's a URL, determine the IP address
done;
if [[ "$ip" =~ ^10\.1\. ]]; then
wget-original --no-proxy "$@";
else
wget-original "$@";
fi;
답변2
info wget
설명하다:
`no_proxy'
This variable should contain a comma-separated list of domain
extensions proxy should _not_ be used for. For instance, if the
value of `no_proxy' is `.mit.edu', proxy will not be used to
retrieve documents from MIT.
따라서 변수에는 목록이 포함되어야 합니다.영역, 아니요IP 범위. /etc/hosts
파일에서 로컬 시스템에 대한 올바른 로컬 별칭을 설정 해야 합니다 .
그 외에도 환경 변수 설정은보장하다프록시는 사용되거나 사용되지 않습니다. 이건 그냥 메시지야가능한이를 지원하는 프로그램에서 사용됩니다.
답변3
꼭 맞는 솔루션은 아니지만 문제를 해결할 수 있습니다. 프록시 외부에서 액세스되는 항목이 IP 주소가 아닌 DNS 이름을 직접 사용한다고 가정하는 경우 다음과 같이 설정할 수 있습니다.
export no_proxy=0,1,2,3,4,5,6,7,8,9
내가 아는 한, 최상위 도메인 이름은 숫자로 끝나지 않으므로, 숫자가 있다면 IP 주소여야 합니다.
답변4
no_proxy
호스트의 후행 부분과 최소 2개의 문자가 일치하는 것으로 보이므로 no_proxy
ipv4의 후행 부분 100개가 포함된 설정은 모든 ipv4 URL을 건너뜁니다.
printf -v no_proxy '%s,' {10..99}
export no_proxy=".0,.1,.2,.3,.4,.5,.6,.7,.8,.9,$no_proxy"
curl -v http://any-ip/