no_proxy 환경 변수에서 네트워크 범위 설정 스크립트를 사용하는 컴퓨터가 있으며 HTTP를 통해 서로

프록시를 사용하는 네트워크에 있습니다. 여기에 많은 스크립트를 사용하는 컴퓨터가 있으며 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은 인수 목록이 너무 길다는 오류를 표시 하므로이 작업을 수행 할 솔루션이 있는지 확실하게 말할 수 없습니다 …