对于那些谁使用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,代理server是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

服务启动之后,我们就能够在第三方应用的代理配置上这样设定了:代理server:127.0.0.1 (即本机),代理server端口: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.

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmx1aXNoZ2xj/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

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

2. cntlm: Parent proxy address missing

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

版权声明:本文博主原创文章,博客,未经同意不得转载。

Cntlm安装和配置体验的更多相关文章

  1. 香蕉派(or 皮?)上手初体验 -- 外观鉴赏,安装,配置&amp;总结

    一.前言及简单介绍 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbG9uZ2Vyem9uZQ==/font/5a6L5L2T/fontsize/400/f ...

  2. Maven的安装、配置及使用入门

    Maven的安装.配置及使用入门 本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与 ...

  3. Linux(Ubuntu)下MySQL的安装与配置

    转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...

  4. ArchLinux安装与配置小结

    最近无意间发现一个基于ArchLinux的发行版--BlackArch,主题十分炫酷(中二).当然渗透类的Linux 发行版已经有BackTrack和Kali了,不过都是源于Debian的,使用者众多 ...

  5. LXD 2.0 系列(二):安装与配置

    导读 简单来说,LXD是一个守护进程,为LXC容器的管理提供一组REST API.主要目标是提供一种类虚拟机的用户体验,是一种第三方的容器管理工具.下面呢,我们来介绍LXD 2.0 的安装与配置 安装 ...

  6. g4e基础篇#3 Git安装与配置

    g4e 是 Git for Enterprise Developer的简写,这个系列文章会统一使用g4e作为标识,便于大家查看和搜索. 章节目录 前言 1. 基础篇: 为什么要使用版本控制系统 Git ...

  7. 安装与配置Flutter开发环境

    这篇博客我们介绍了Flutter,并且对比了H5,React Native,Flutter. 由于Flutter是跨平台的开发框架,开发一次可以同时运行在Android和iOS上面,所以我们开发时最好 ...

  8. Ubuntu16.04下Hadoop的本地安装与配置

    一.系统环境 os : Ubuntu 16.04 LTS 64bit jdk : 1.8.0_161 hadoop : 2.6.4 部署时使用的用户名为hadoop,下文中需要使用用户名的地方请更改为 ...

  9. emacs安装及配置

    目录 平台 安装 基本配置 配置文件结构 elpa仓库管理 主题配色 字体显示配置(解决中文卡顿) 插件配置 markdown 简介 markdown-mode markdown-toc org导出m ...

随机推荐

  1. python语言学习1——初识python

    Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 龟叔给Python的定位是“优雅”.“明确”.“简单”,所以Python ...

  2. java 线程 ProducerAndConsumer

    package j2se.thread.demo; /** * <p>Project:J2SE 的基础知识</p> * <p>Tile:多线程模拟 生产者 和 消费 ...

  3. 使用jquery+一般处理程序异步载入信息

    需求:有时候.web界面对性能要求比較高.我们就不考虑使用asp.net控件.而是使用html标签+jquery+一般处理程序来进行异步处理. watermark/2/text/aHR0cDovL2J ...

  4. httl开源JAVA模板引擎,动态HTML页面输出

    HTTL(Hyper-Text Template Language)是一个适用于HTML输出的开源JAVA模板引擎,适用于动态HTML页面输出,可用于替代JSP页面,它的指令类似于Velocity. ...

  5. iText操作word文档总结

    操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...

  6. ubuntu下ssh使用 与 SCP 使用

    1 ssh远程登录服务器 ssh username@remote_ip #将username换成自己的用户名,将remote_ip换成远程服务器的ip地址 2 将文件/文件夹从远程服务器拷至本地(sc ...

  7. poj3126解题报告

    题意:简单的说就是:有一个人门牌号是一个四位数的整数,并且还是一个素数,现在他想要换成另外一个四位数且是素数的门牌号,而且,每次都只能更换这个四位数的一个位置的数 ,也就是每换一次都只改变一个数字,而 ...

  8. 配置JVM内存 查看内存工具

    一.配置JVM内存 1.配置JVM内存的參数有四个: -XmxJavaHeap最大值.默认值为物理内存的1/4.最佳设值应该视物理内存大小及计算机内其它内存开销而定. -XmsJavaHeap初始值, ...

  9. Android至ViewPager添加切换动画——使用属性动画

    转载请注明出处:http://blog.csdn.net/allen315410/article/details/44200623 ViewPager作为Android最经常使用的的组件之中的一个.相 ...

  10. MYSQL中取当前年份的第一天和当前周,月,季度的第一天/最后一天

    mysql 获取当年第一天的年月日格式:SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY); MySQL里获取当前week.month ...