共计 1732 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 有些公司,上网有限制,却没有统一配置网关和路由,只是提供了上外网的代理。IT 设施的不完善,只能让员工自己想办法。当然,也有些情况是特殊的网络策略与权限管理所致。 |
Cntlm 是一个 HTTP 二级代理软件。它主要的作用,是在能代理上网的前提下,给这个代理再做一个代理,提供给更多的下级用户。下级用户不需要、也不可能知道代理的账户密码,这样既保障了安全、又实现了方便。
以 Debian 系的安装为例:
sudo apt install cntlm
非 Debian 系的安装,也是类似的形式。Cntlm 是一个很老的软件,在各大 Linux 发行版都有发布。甚至,连 Windows 下也有发布,可以通过 choco 安装。
choco install cntlm
下面的介绍以 Linux 为例。Windows 下的配置,和 Linux 大同小异,只是文件位置不同。
Cntlm 安装后,在 /etc/cntlm.conf 就有一份默认配置。如果需要在线查看配置,可以参考 cntlm.conf。
以下配置,几乎是 /etc/cntlm.conf 的最简配置。
Username USERNAME
Domain COMPANY_DOMAIN
Password ********
Proxy proxy.company.com:8080
Proxy proxy2.company.com:8080
NoProxy localhost, 127.0.0.*, 10.*, 192.168.*, .company.com
Listen 3128
注意:其中 USERNAME、proxy.company.com:8080 等,应该换成自己的场景适用的值。此外,如果使用下一节【获取 Auth】的手段,Password 配置可省略。
这个配置,仅能让本机访问。如果要允许 localhost 以外的机器访问,则需要再添加 Gateway yes。
Gateway yes
如果需要限制外部访问,可以设置黑(Deny)白(Allow)名单。
Allow 127.0.0.1
Deny 0/0
以上配置修改完成后,需要重载或重启 cntlm。具体方法见重载或重启。
$ sudo cntlm -vc /etc/cntlm.conf -M http://baidu.com
section: global, Username = 'USERNAME'
section: global, Domain = 'COMPANY_DOMAIN'
section: global, Proxy = 'proxy.company.com:8080'
section: global, Proxy = 'proxy2.company.com:8080'
section: global, NoProxy = 'localhost, 127.0.0.*, 10.*, 192.168.*, .company.com'
section: global, Listen = '3128'
...
HEAD: HTTP/1.1 200 OK
OK (HTTP code: 200)
----------------------------[Profile 1]------
Auth NTLM
PassNT 7FA051B4B85F0E7EEBB24D3CD73E52B0
PassLM 23A1E1A7276E84EA4846D4C9FF957C35
------------------------------------------------
cntlm: Terminating with 0 active threads
添加以下内容到刚才修改过的 /etc/cntlm.conf:
Auth NTLM
PassNT 7FA051B4B85F0E7EEBB24D3CD73E52B9
PassLM 23A1E1A7276E84EA4846D4C9FF957C31
在使用包管理器安装的情况下,Cntlm 默认由 systemd 来守护,开机自启。
修改配置后,重载即可生效:
sudo systemctl reload cntlm
若仍未生效,可以尝试重启:
sudo systemctl restart cntlm