프록시를 사용하는 네트워크에 있습니다. 여기에 많은 스크립트를 사용하는 컴퓨터가 있으며 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
옵션은 실제로 옵션이 아닙니다. 시스템을 넓게 설정하고 싶습니다.
답변
당신은 그것을 잘못보고 있습니다. 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;
답변
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
이 외에도 환경 변수를 설정 한다고해서 프록시 사용 여부가 보장 되는 것은 아닙니다 . 정보 를 지원하는 프로그램에서 사용할 수 있는 정보 일뿐 입니다.
답변
정확한 해결책은 아니지만 문제를 해결할 수 있습니다. 프록시 외부에서 액세스하는 것이 DNS 이름을 사용하고 IP 주소를 직접 사용하지 않는다고 가정하는 경우 다음과 같이 설정할 수 있습니다.
export no_proxy=0,1,2,3,4,5,6,7,8,9
내가 아는 한, 최상위 도메인은 숫자로 끝나지 않으므로 IP 주소 여야합니다.
답변
janmoesen의 솔루션을 기반으로하는 약간 더 간단한 (한 줄) 접근 방식이 있습니다.
export no_proxy=`echo 10.1.1.{1..255} | sed 's/ /,/g'`
이는 Cory Ringdahl의 입력을 기반으로 추가 개선되었습니다.
export no_proxy="`echo 10.1.1.{1..254},` 10.1.1.255"
sed 10.1.{1..255}.{1..255}
는 그의 코드 나 광산 에서의 확장으로 전달 된 모든 주장에 질식했다 . 따라서 실제로 256 * 256 IP 주소로 확장 해야하는 경우 Cory Ringdahl의 접근 방식을 추가로 조정할 수 있지만 256 정도만 필요한 경우 두 가지 중 하나가 완벽하게 작동합니다.
2 옥텟이 확장 된 버전은 다음과 같습니다.
export no_proxy="`echo 10.1.{1..255}.{1..254},` 10.1.255.255"
그러나 iTerm은 인수 목록이 너무 길다는 오류를 표시 하므로이 작업을 수행 할 솔루션이 있는지 확실하게 말할 수 없습니다 …