it-swarm-ko.tech

no_proxy 환경 변수에서 네트워크 범위 설정

프록시를 사용하는 네트워크에 있습니다. 여기에 많은 스크립트를 사용하고 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 옵션은 실제로 옵션이 아닙니다. 시스템을 넓게 설정하고 싶습니다.
61
SamK

당신은 그것을 잘못보고 있습니다. no_proxy 환경 변수는 접두사가 아닌 도메인 접미사를 나열합니다. 문서 에서 :

no_proxy :이 변수는 쉼표로 구분 된 도메인 확장 목록을 포함해야합니다. 프록시는 사용하지 않아야합니다 .

따라서 IP의 경우 두 가지 옵션이 있습니다.

1) 각 IP를 완전히 추가하십시오.

printf -v no_proxy '%s,' 10.1.{1..255}.{1..255};
export no_proxy="${no_proxy%,}";

2) wget의 이름을 wget-original하고 지정된 URL의 호스트에 대한 IP를 조회하고 프록시를 사용해야하는지 여부를 결정하는 랩퍼 스크립트 (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 "[email protected]";
else
   wget-original "[email protected]";
fi;
45
janmoesen

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 파일에서 로컬 컴퓨터에 적절한 로컬 별칭을 설정해야합니다.

이 외에도 환경 변수를 설정해도 프록시가 사용되거나 사용되지 않는다는 것을 guarantee는 아닙니다. 정보를 지원하는 프로그램에서 may를 사용한다는 것은 단지 정보 일뿐입니다.

19
rozcietrzewiacz

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은 인수 목록이 너무 길다는 오류를 표시 하므로이 작업을 수행 할 수있는 솔루션이 있는지 확실하게 말할 수 없습니다 ...

13
iconoclast

정확한 해결책은 아니지만 문제를 해결할 수 있습니다. 프록시 외부에서 액세스하는 것이 DNS 이름을 사용하고 IP 주소를 직접 사용하지 않는다고 가정하는 경우 다음과 같이 설정할 수 있습니다.

export no_proxy=0,1,2,3,4,5,6,7,8,9

내가 아는 한, 최상위 도메인은 숫자로 끝나지 않으므로 IP 주소 여야합니다.

12
Lars Berntzon