文档章节

Cntlm安装和配置心得

猪刚烈
 猪刚烈
发布于 2014/10/12 11:47
字数 1409
阅读 67
收藏 0
对于那些使用NTLM进行身份验证的网络代理环境(即设置上除需要代理主机和端口之外还需要提供域用户和密码)来说,通过代理上网是一件头痛的事情,这主要是因为很多软件不支持NTLM验证的代理(比如目前的GIT就不能支持NTLM验证,即使在代理中指定了域帐号和密码,在连接过程中依然报: Received HTTP code 407 from proxy after CONNECT ,说明验证并未通过),如果有这样一种工具能封装NTLM验证然后对外提供普通的HTTP代理服务,那么第三方应用就可以通过配置普通的代理访问网络了,这就是Cntlm (项目官网:http://cntlm.sourceforge.net/)所要解决的问题! 由于Cntlm也有linux版本,这意味着在linux系统上通过NTLM身份验证的网络代理也是可行的。本文原文出处: http://blog.csdn.net/bluishglc/article/details/37600773 严禁任何形式的转载,否则将委托CSDN官方维护权益!

配置


下载安装Cntlm之后,只需要修改cntlm.ini文件,提供身份认证必要的信息,然后以服务的方式启动cntlm就可以了。在cntlm.ini中有如下几个重要的配置是可能需要修改的:
  • Username - your domain/proxy account name

  • Domain - the actual domain name

  • Workstation - NetBIOS name of your workstation; Cntlm tries to autodetect it, but you might want to set it explicitly should dialect detection fail (see below)

  • Proxy - IP address (or ping-able hostname) of your proxy; if you use several alternative proxies or know of backup ones, use this option multiple times; if one stops working, Cntlm will move on to the next

  • Listen - local port number which Cntlm should bind to; the default is OK, but remember you can't have more than one application per port; you can use netstat to list used up ports (lines with LISTEN)

其中Listen配置项是cntlm将在本地打开的作为普通代理的端口,假如我的windows域是abc,帐号是laurence,密码是123,代理服务器是192.168.0.1:80,则cntlm.ini应该如下配置:


#
# Cntlm Authentication Proxy Configuration
#
# NOTE: all values are parsed literally, do NOT escape spaces,
# do not quote. Use 0600 perms if you use plaintext password.
#

Username	laurence
Domain		abc
Password	123
# NOTE: Use plaintext password only at your own risk
# Use hashes instead. You can use a "cntlm -M" and "cntlm -H"
# command sequence to get the right config for your environment.
# See cntlm man page
# Example secure config shown below.
# PassLM          1AD35398BE6565DDB5C4EF70C0593492
# PassNT          77B9081511704EE852F94227CF48A793
### Only for user 'testuser', domain 'corp-uk'
# PassNTLMv2      D5826E9C665C37C80B53397D5C07BBCB

# Specify the netbios hostname cntlm will send to the parent
# proxies. Normally the value is auto-guessed.
#
# Workstation	netbios_hostname

# List of parent proxies to use. More proxies can be defined
# one per line in format <proxy_ip>:<proxy_port>
#
Proxy		192.168.0.1:80

# List addresses you do not want to pass to parent proxies
# * and ? wildcards can be used
#
NoProxy		localhost, 127.0.0.*, 10.*, 192.168.*

# Specify the port cntlm will listen on
# You can bind cntlm to specific interface by specifying
# the appropriate IP address also in format <local_ip>:<local_port>
# Cntlm listens on 127.0.0.1:3128 by default
#
Listen		3128

# If you wish to use the SOCKS5 proxy feature as well, uncomment
# the following option. It can be used several times
# to have SOCKS5 on more than one port or on different network
# interfaces (specify explicit source address for that).
#
# WARNING: The service accepts all requests, unless you use
# SOCKS5User and make authentication mandatory. SOCKS5User
# can be used repeatedly for a whole bunch of individual accounts.
#
#SOCKS5Proxy	8010
#SOCKS5User	dave:password

# Use -M first to detect the best NTLM settings for your proxy.
# Default is to use the only secure hash, NTLMv2, but it is not
# as available as the older stuff.
#
# This example is the most universal setup known to man, but it
# uses the weakest hash ever. I won't have it's usage on my
# conscience. :) Really, try -M first.
#
#Auth		LM
#Flags		0x06820000

# Enable to allow access from other computers
#
#Gateway	yes

# Useful in Gateway mode to allow/restrict certain IPs
# Specifiy individual IPs or subnets one rule per line.
#
#Allow		127.0.0.1
#Deny		0/0

# GFI WebMonitor-handling plugin parameters, disabled by default
#
#ISAScannerSize     1024
#ISAScannerAgent    Wget/
#ISAScannerAgent    APT-HTTP/
#ISAScannerAgent    Yum/

# Headers which should be replaced if present in the request
#
#Header		User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)

# Tunnels mapping local port to a machine behind the proxy.
# The format is <local_port>:<remote_host>:<remote_port>
# 
#Tunnel		11443:remote.com:443


其中对于监听端口使用默认的端口3128就可以了。我们可以通过命令来验证配置是否正确:

cntlm -c /path/to/cntlm.ini -I -M http://www.baidu.com

如果能正常返回就表示各项配置都是正确的,接下就可以启动cntlm服务在后台运行了,使用命令:

net start cntlm

服务启动之后,我们就可以在第三方应用的代理配置上这样设定了:代理服务器:127.0.0.1 (即本机),代理服务器端口:3128(即cntlm.ini文件中配置的Listen端口)

日志与常见错误


cntlm绝大多数错误表现为服务无法启动,具体原因有很多,好在cntlm有较好的日志信息可以帮助我们找到问题的根源,查看cntlm日志的方法是:Start -> Settings -> Control Panel -> Administrative Tools -> Event Viewer, 然后在左侧面板的目录树中选择:Windows Logs -> Application, 再在右侧面板中配置一下过虑项,将事件源设定为cntlm就可以过滤出所有的cntlm日志了。

这里我们介绍两种可能的错误:

1. cntlm: PID XXXX: Possible duplicate cygwin1.dll: /socat-1.7.2.1/cygwin1.dll.



类似这样的错误是由于cygwin1.dll冲突引起的,有多种工具会携带自己的cygwin1.dll,如果版本不兼容就会报如上的错误,最简单的方是先移除它们。

2. cntlm: Parent proxy address missing



这是一个容易造成误导的错误,如果多数情况下并不是因为你在cntlm.ini中错误地制定了Proxy而是cntlm程序启动时根本没用找到cntlm.ini文件,造成这种问题的可能诱因之一是在安装cntlm时修改了默认的安装目录,这应该是cntlm的一个bug。不知道在启动cntlm服务的配置界面(Control Panel -> Administrative Tools -> Services)上指定-c参数是否有效,有兴趣的朋友可以尝试一下,我是按默认配置重装了cntlm解决的问题。

本文转载自:http://blog.csdn.net/bluishglc/article/details/37600773

共有 人打赏支持
猪刚烈
粉丝 22
博文 708
码字总数 110
作品 1
海淀
程序员
认证代理上网工具--Cntlm

问题: 公司网络使用了域账号管理机制,上网必须配指定的机器名和域名,最头痛的是还需要密码,访问网站经常弹出输入用户名密码的窗口,很多软件都不能自动升级。 解决办法: 是使用 Cntlm ...

匿名
2012/08/28
2.8K
0
Sbt 使用技巧

要做scala开发,sbt是绕不过去的一个坎,里面有许多坑,接下来看我怎么一一解决。 sbt 之 网络问题 Q: 首次执行sbt,程序停着不动,是个什么情况? A: 一般来说,这就是网络不是很通畅所导致...

pearma
2017/04/10
18
0
ITDB究竟怎么才能使用

我觉得它还是一个很不错的软件,为了尝试它的新功能 我安装了CentOS 5.5 X64 安装了php 5.2 httpd2.2 Sqlite也安装了3.7.4 一步一步按照安装说明设置了权限和配置了conf.php , 为啥该死的操...

Judezhu
2011/01/16
5.7K
8
apache的URL重写使用心得

apache的URL重写使用心得 整合PHP和Apache   第一步,安装好apache服务器   第二步,在apache安装目录下的conf文件夹下用记事本打开httpd.conf     1、修改DocumentRoot为网站根目录...

冯京宝
2012/08/02
0
1
虚拟机测试必备虚拟机之VirtualBox 使用

安装,windowns在官网上对应版本下载下一步安装结束即可,配置有seting可以选择中文,方便理解,其实英文也好功能 不多。 安装linux:ubuntu,如果有网sudo apt-get install VirtualBox rea...

天马行空的鱼
2016/02/23
48
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

C++ gflags

gflags是google一个开源的处理命令行参数的库,相比getopt,更加容易使用。 定义参数 gflags主要支持的参数类型包括 DEFINEbool: boolean DEFINEint32: 32-bit integer DEFINEint64: 64-bit ...

SibylY
31分钟前
0
0
intellij IDEA Properties中文unicode转码问题

在IDEA中创建了properties文件,发现默认中文不会自动进行unicode转码。如下 在project settings - File Encoding,在标红的选项上打上勾,确定即可 效果图如下: unicode转码后效果...

muzi1994
31分钟前
0
0
Java IO类库之PipedWriter

一、PipedWriter介绍 PipedWriter是字符管道输出流,继承自Writer,功能与PipedOutputStream类似,通过与PipedReader组合使用实现类似管道的功能,在多线程环境下,一个线程使用PipedWriter...

老韭菜
35分钟前
0
0
精简分页组件(手写)

需要引入CSS(没错就是这4行) .pagelist { text-align: center; color: #666; width: 100%; clear: both; margin: 20px 0; padding-top: 20px }.pagelist a { color: #666; margin: 0 2px;......

AK灬
36分钟前
3
0
29 岁成为阿里巴巴 P8,工作前 5 年完成晋升 3 连跳,他如何做到?

泡泡是我的好朋友。今年 31 岁,毕业后就进了阿里巴巴,工作五年内从 P4 晋升至 P6、P7、P8。 和他很少聊到工作,但总觉得他有很棒的职场心得,应该分享出来,于是有了这次采访。希望对职场新...

Java填坑之路
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部