![配置 Cntlm,若无可用代理则不使用代理](https://linux22.com/image/611373/%E9%85%8D%E7%BD%AE%20Cntlm%EF%BC%8C%E8%8B%A5%E6%97%A0%E5%8F%AF%E7%94%A8%E4%BB%A3%E7%90%86%E5%88%99%E4%B8%8D%E4%BD%BF%E7%94%A8%E4%BB%A3%E7%90%86.png)
白天我在公司防火墙后面,晚上则使用开放的互联网连接。我已将 cntlm 配置为转发到我的公司代理,但当我从开放连接进行连接时,我必须重新配置我的代理设置。
当没有可用代理时,有没有办法让 cntlm 回退到不使用代理?
# List of parent proxies to use. More proxies can be defined
# one per line in format <proxy_ip>:<proxy_port>
#
Proxy 10.73.55.44:80
# <~~ something here to fallback to a direct connection when no proxy is available
答案1
cntlm 在其路线图上有这个功能,但我认为我使用 squid 以一种简单的方式解决了这个问题:1. 在与 cntlm 相同的机器上安装 squid,在端口 3129 上(只需在 squid.conf 中将 3128 更改为 3129)2. 将“Proxy localhost:3129”添加到 cntlm 代理列表中
就是这样。
希望这可以帮助。
答案2
cntlm.conf
此解决方案根据您当前的IP地址重写相关部分:http://mirkoweber.blogspot.hu/2011/10/using-cntlm-in-changing-environment.html
#!/bin/sh
case "$2" in
up|vpn-up)
IP=`/sbin/ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`
case $IP in
172.*)
logger "setNoProxy.sh -set NoProxy for enterprise net"
NoProxy="NoProxy localhost, 127.0.0.*, 10.*, 192.168.*,enterprise-intranet"
;;
*)
logger "setNoProxy.sh - set NoProxy for direct net"
NoProxy="NoProxy *"
;;
esac
sudo sed "s/^NoProxy.*$/$NoProxy/g" -i /etc/cntlm.conf
sudo service cntlm restart
;;
esac