Ошибка Cntlm: слишком много открытых файлов

Как сказано в заголовке, у меня есть некоторые проблемы с Cntlm. Я работаю с версией 0.92.3 и запускаю из исходного кода. Я пытаюсь запустить Cntlm как автономный прокси-сервер с конфигурацией localhost, чтобы просматривать Интернет и запускать приложения (например, Skype).

Я работаю над Mint, и команда uname -a дает:

Linux Jarvis 3.16.0-38-generic #52~14.04.1-Ubuntu SMP Fri May 8 09:43:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

Вот шаги, которые я сделал, прежде чем спросить:

./configure
make
sudo make install

все идет нормально. Я также экспортирую прокси http, https и ftp с:

export http_proxy = http://127.0.0.1:3128 
export https_proxy = https://127.0.0.1:3128 
export ftp_proxy = https://127.0.0.1:3128

, и все идет нормально. Остается запустить cntlm, выполнив:

sudo cntlm -v -f

он правильно сохраняет информацию, переданную cntlm.conf , и отображает ее, оставаясь на переднем плане.

Я захожу в свой браузер (firefox) и настраиваю его для прокси, устанавливая 127.0.0.1 в качестве http-прокси и 3128 в качестве порта.

когда я открываю вкладку браузера и провожу тестовое исследование под прокси-сервером, терминал начинает обрабатывать данные, но через несколько секунд он продолжает говорить, что:

cntlm[11605]: Serious error during accept: Too many open files

, пока я не нажму ctrl + C.

это cntlm.conf, который у меня есть:

#
# 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    myUsername
Domain      localhost
Password    password
# 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>
#

Listen      127.0.0.1:3128
#Listen     192.168.0.1:3128

#Proxy      10.0.0.41:8080
#Proxy      10.0.0.42:8080
Proxy       127.0.0.1:3128

# 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
#

# 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 5000
#SOCKS5User username: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/

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

Я много раз пытался изменить конфигурацию, но он действительно не меняется. Если я использую 127.0.0.1:3128 в качестве прокси по умолчанию (что я пытаюсь сделать), он запускается хорошо, но заканчивается циклом.

что мне делать, чтобы он работал, и в чем проблема?

у меня есть не трогал оригинальный исходный код. Так что все должно работать, как задумано.

Заранее спасибо.

Изменить: это результат ulimit -a после su :

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15079
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15079
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
1
задан 11 December 2015 в 14:49
1 ответ
-

Хорошо, я думаю, я понял, что здесь происходит. В основном проблема в том, чтобы поместить в конфигурационный файл строку

Proxy    127.0.0.1:3128

И строку:

Listen 3128 (или 127.0.0.1:3128 тоже)

На самом деле я думаю, что конфигурация посылает прокси в цикле, в котором потоки никогда не закрываются, посылая запрос на соединение на одном сайте, вне зависимости от лимита.

Для простого соединения с браузером (например, Firefox), просто оставьте ту же строку:

Listen    3128

или

Listen    127.0.0.1:3128

которые совпадают. Для прокси вы можете следовать следующей схеме:

Proxy    ipAddress:port

эта пара данных может быть легко найдена в web.

Настройте Firefox (или другой браузер) на подключение к локальному прокси, установив localhost(или 127.0.0.1) в качестве Host и тот же номер порта, который вы слушаете. Это сработало для меня.

Я до сих пор не знаю, как заставить его работать с различными приложениями (так как я не знаю, работают ли они на самом деле за прокси, это ничего не говорит об этом), но на данный момент это все еще решение.

Я все еще не знаю, как заставить его работать с различными приложениями (так как я не знаю, работают ли они на самом деле за прокси, это ничего не говорит об этом).
0
ответ дан 4 December 2019 в 06:47

Теги

Похожие вопросы