ISA的http代理有2种形式:
一种是基本的认证方式,即base认证,具体表现为如果http的请求头里没有base_authenticate字段则会返回401错误;要进行base认证的方法很简单,直接把预先提供好的用户名和密码通过base64加密,然后作为http请求头的base_authenticate字段对应的值即可。
不能上网的原因:
而实际上linux下的代理设置只能支持base认证方式,所以如果想要linux机器能通过ISA的Windows用户身份认证的话,则必须要再加一个中间代理,才能实现全网的http请求有效,否则的话只能部分程序能用isa代理服务,比如火狐浏览器,因为它已经内嵌了一个代理程序【其支持的认证方式是Negotiate】,如果发现返回的http头是需要用户认证,则会根据相应的代码来自动进行认证的。
解决方法:
当然,这样的问题很多前辈们早就遇到并已经解决了,通过介绍知道有一个ntlmaps的工具可以实现,【其中NTLM就是其所支持的认证方式】,于是就下了一个进行了简单的配置后就好使了,而且是python编写的,好处嘛:开源,跨平台!其下载地址见: 这里
附配置文件详解:(英文不过关,有些信息理解错误,导致配置不好用,最后还是花了不少时间看源码才解决的问题,郁闷)
#======================================================================== [GENERAL] #NTLM程序要监听的端口 LISTEN_PORT:5865 #实际要需进行验证的代理服务器IP PARENT_PROXY:192.168.80.20 #实际代理服务器的端口号 PARENT_PROXY_PORT:8080 #连接实际代理的超市时间,单位为秒 PARENT_PROXY_TIMEOUT:15 #是否允许其他机器链接该ntlm代理访问外部网络,0为不允许,1为允许任意机器通过该代理对外部访问,只是都会用的你配置文件里的用户 ALLOW_EXTERNAL_CLIENTS:0 #友好的ip,只在上一个设置为0时生效,设置只有特定的ip才可以通过该代理对外部访问 FRIENDLY_IPS:192.168.96.98 192.168.96.6 #是否打开url访问日志,为1时会在url日志中记录所有url的访问记录 URL_LOG:0 #该代理所支持的最大链接数,其实就是该代理允许同时起几个线程来跑远程代理 MAX_CONNECTION_BACKLOG:5 #======================================================================== [CLIENT_HEADER] #在这里设置该代理向实际代理发送http请求时的头部信息,还可以自己加其它的http头信息 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* #User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98) #上面的User-Agent是win98,通常使用下面的这个 User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT5) Accept-Encoding: gzip, deflate #======================================================================== [NTLM_AUTH] #本地机器的名字,为空时会取允许机器的机器名,可以使用别人的机器名 NT_HOSTNAME: #本地机器所在的windows域,不区分大小写 NT_DOMAIN:domainname #本地域中的有效用户名 USER:domain username #本地域用户对应的密码 PASSWORD:domain user's password ########################################################### ##这里是认证的主要配置,配合下面的NTLM_FLAGS一起使用。共有下面3个有效组合,如果均为0时默认会使用下面的第一种情况 # 仅LM_PART为1时,NTLM_FLAGS为06820000 # 仅NT_PART为1时,NTLM_FLAGS为05820000 # LM_PART和NT_PART均为1时,NTLM_FLAGS为07820000 ########################################################### LM_PART:1 NT_PART:1 NTLM_FLAGS: 07820000 #转换基本认证为ntlm认证,默认设置为0即可; #为1时该代理将不使用此配置文件中的用户名和密码,而是从客户端的http请求头中的base认证内容中获取 NTLM_TO_BASIC:0 #======================================================================== [DEBUG] #是否打开进行NTLM认证时所进行的通信内容 DEBUG:0 #是否打开客户端和实际代理代理服务器的请求信息 BIN_DEBUG:0 #是否打开关键时间段日志 SCR_DEBUG:0 #是否打开进行NTLM认证时的认证信息的调试信息,包括message1,message2,message3;对于计算和调试ntlm信息格式有用 AUTH_DEBUG:0
使用:
根据目录下的配置说明配置好了,测试是否可用,不可用的话,确认一下用户名密码是否正确,还有认证方式的3种组合,都可以试试了,我就是没有一个个试,才费了好久时间,成功后在/etc/rc.local文件中添加一个自动启动的命令即可。
/path/to/your/ntlm/main.py &