Cntlm安装和配置心得

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

对于那些使用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解决的问题。

转载于:https://my.oschina.net/pangzhuzhu/blog/327160

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401393.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vim插件之cscope的安装与配置

本文参考自&#xff1a; http://easwy.com/blog/archives/advanced-vim-skills-cscope/ http://blog.csdn.net/dengxiayehu/article/details/6330200 http://blog.csdn.net/daofengdeba/article/details/7606616 插件介绍&#xff1a; cscope是用来查看源代码的工具&#xff0c…

字符串编辑距离(转载)

Levenshtein Distance (LD, 来文史特距离)也叫edit distance(编辑距离)&#xff0c;它用来表示2个字符串的相似度&#xff0c;LD定义为需要最少多少步基本操作才能让2个字符串相等&#xff0c;基本操作包含3个&#xff1a;插入, 删除, 替换&#xff1b;比如&#xff0c;kiteen和…

css媒体查询(手机、平板、PC)

List item css媒体查询PC端按屏幕尺寸整理? 通过上面的电脑屏蔽及尺寸的例表上我们得到了几个宽度 1024 1280 1366 1440 1680 1920 超小屏幕 手机 (<768px) 小屏幕 平板 (≥768px) 中等屏幕 桌面显示器(≥992px) 大屏幕 大桌面显示器 (≥1200px) /* 超小屏幕&#xff08…

C/C++面试题(一)

1、局部变量能否和全局变量重名&#xff1f;答&#xff1a;能&#xff0c;局部会屏蔽全局。局部变量可以与全局变量同名&#xff0c;在函数内引用这个变量时&#xff0c;会用到同名的局部变量&#xff0c;而不会用到全局变量。对于有些编译器而言&#xff0c;在同一个函数内可以…

读书摘录(二)

人们只能听到自己喜欢听的&#xff0c;只能看到自己喜欢看的。博弈论中的一个关键教训&#xff1a;你需要了解对方的想法。你需要考虑他们知道些什么&#xff0c;是什么在激励着他们&#xff0c;甚至他们是怎么看你的。无论你多努力&#xff0c;你都很有可能完全没有机会做到富…

hbase配置详解(转)

转自&#xff1a;http://www.cnblogs.com/viviman/archive/2013/03/21/2973539.html 1 准备工作 因为我只有一台机器&#xff0c;所以&#xff0c;一切都成为了伪分布&#xff0c;但是&#xff0c;其实和集群是一样的啦。 在hbase配置之前&#xff0c;先确定自己的linux上有两个…

js rem 单位适配(手机、平板、PC)?

js rem单位适配<script type"text/javascript">// 设备区分 &#xff08;安卓、火狐、平板、PC&#xff09;var os function() {var ua navigator.userAgent,isAndroid /(?:Android)/.test(ua),isFireFox /(?:Firefox)/.test(ua),isTablet /(?:iPad|Pl…

hdu 4160 Dolls (最大独立)

点击打开链接 需要排下序。。 #include"stdio.h" #include"string.h" #include"stdlib.h" #define N 501 struct node {int a,b,c; }aa[N]; int map[N][N],v[N],link[N]; int n; int cmp(const void*a,const void*b) {struct node *c,*d;c(struc…

破解中国电信华为无线猫路由(HG522-C)自己主动拨号+不限电脑数+iTV

中国电信总是把好好的一个路由猫阉割过后放在我的E家套餐里到处兜售&#xff08;垄断市场也就罢了&#xff0c;还有非常多霸王条款&#xff0c;比方必须使用它们的手机&#xff0c;同一时候最多多少台电脑上网等等&#xff09;&#xff0c;曾经破解过另外一个中国电信的路由猫&…

移动端适配(必须要知道的,亲测有效)

关于移动端适配&#xff08;必须要知道的&#xff0c;亲测有效&#xff09;一、各种单位概念理解二、移动&#xff0c;web开发三、移动端适配1、视口(viewport)概念2、视口(viewport)适配&#xff08;代码&#xff09;3、rem单位适配flexible方案竖屏、横屏、ipad、PC最全的适配…

silverlight 如何在浏览器的新页面里打开一个xaml

这个问题搜了大半天&#xff0c;综合各方观点&#xff0c;还是把它给实现了&#xff0c;小有成就感 打开一个新的浏览器窗口&#xff0c;silverlight并不支持这种做法。打开一个新的浏览器窗口意味着打开另一个应用页面。只需要获得那个应用的url&#xff08;如http://www.163.…

如何安装MySQL软件

1 双击EXE进行安装&#xff0c;在"Developer Components&#xff08;开发者部分&#xff09;"上左键单击&#xff0c;选择"This feature, and all subfeatures, will be installed on local hard drive."&#xff0c;即"此部分&#xff0c;及下属子部…

使用curl登陆上网账号

我们学校要上外网必须要使用校园账号登陆&#xff0c;一般都是使用客户端&#xff0c;但是也可以使用web版登陆。最近装了一台服务器&#xff0c;因为是纯字符界面的ubuntu&#xff0c;所以要想安装软件&#xff0c;得联外网&#xff0c;没办法使用客户端或网页形式&#xff0c…

KM 最优匹配 讲解

转&#xff1a; 基本原理 该算法是通过给每个顶点一个标号&#xff08;叫做顶标&#xff09;来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[ i ]&#xff0c;顶点Yj的顶标为B[ j ]&#xff0c;顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻…

前端开发问题记录

小程序开发问题记录多行省略&#xff08;小程序&#xff09;image 图片底部留白单元素如何实现&#xff1a;文本、边框渐变&#xff1b;且边框满足移动端细边框效果&#xff08;小程序&#xff09;在util.js中使用getApp()这个函数&#xff0c;打印显示undefined多行省略 &…

长沙理工大学校园网客户端无法卸载解决办法

2019独角兽企业重金招聘Python工程师标准>>> 删除X:\Program Files (x86)\InstallShield Installation Information\{。。。}目录即可。&#xff08;&#xff09; 转载于:https://my.oschina.net/ZaneYoung/blog/330747

Struts2——namespace、action、以及path问题

简单的介绍下Struts2中的几个简单的问题&#xff08;namespace、action、以及path问题&#xff09; namespace&#xff08;命名空间&#xff09; Namespace决定了action的访问路径&#xff0c;默认为“”&#xff0c;意味着可以访问所有目录下的/ass/sss/ss/index;囊括了所有pa…

About IndexDB(转)

IndexedDB是用于客户端的大量的结构化数据存储和使用索引高效率搜索数据的API&#xff0c;它是基于W3C拟定的草案索引数据库的API。相对DOM存储的小存储数据量&#xff0c;IndexedDB具有大容量的数据存储功能&#xff0c;它分别为同步数据和异步数据提供的API&#xff0c;但目前…

文章收藏(一)

用 Yarn 你还能做这 5 件事 [译] 在 JavaScript 领域中有几个包管理器: npm&#xff0c;bower&#xff0c;component&#xff0c;和 volo。到本文为止&#xff0c;最受欢迎的包管理器是 npm。npm 客户端提供了对 npm 注册库中成千上万代码的访问。Facebook 推出了一款名叫 Yarn…

前端 进阶

前端 进阶一、HTMLmetaviewport[题] meta标签&#xff0c;实现页面自动刷新/跳转二、CSSCSS选择器CSS选择器匹配原理CSS优先级 / 权重可继承 / 不可继承属性盒模型offsetWidth、clientWidth、scrollWidth**box-sizing属性BFC块级格式化上下文position定位实现水平居中实现垂直居…