Set a network range in the no_proxy environment variable
You're looking at it the wrong way. The no_proxy
environment variable lists the domain suffixes, not the prefixes. From the documentation:
no_proxy
: This variable should contain a comma-separated list of domain extensions proxy should not be used for.
So for IPs, you have two options:
1) Add each IP in full:
printf -v no_proxy '%s,' 10.1.{1..255}.{1..255};
export no_proxy="${no_proxy%,}";
2) Rename wget
to wget-original
and write a wrapper script (called wget
) that looks up the IP for the given URL's host, and determines if it should use the proxy or not:
#!/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
says:
`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.
So the variable should contain a list of domains, not IP ranges. You'll need to set up proper local aliases for your local machines in /etc/hosts
file(s).
Apart from this, bear in mind that setting an environment variable does not guarantee that a proxy will or will not be used. It is just an information that may be used by programs that support it.
Not exactly a correct solution but it might solve the problem for you. If you assume that accessing anything from the outside of the proxy will be using DNS-names and not directly using IP-addresses, you can set it like:
export no_proxy=0,1,2,3,4,5,6,7,8,9
As far as I know, no top domain ends with a number so if it does, it must be an IP-address.