Erro Cntlm: muitos arquivos abertos

1

Como o título diz, eu tenho alguns problemas com o Cntlm. Eu estou trabalhando com a versão 0.92.3 e lançado a partir do código-fonte. O que eu estou tentando fazer é iniciar o Cntlm como um proxy independente com configuração localhost, para navegar na Internet e iniciar aplicativos (por exemplo, o Skype).

Estou trabalhando no Mint e o comando uname -a dá:

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

Esses são os passos que eu fiz antes de perguntar:

./configure
make
sudo make install

tudo corre bem. Eu também exporto http, https e ftp proxy com:

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

e também tudo corre bem. O que resta é lançar o cntlm, fazendo com:

sudo cntlm -v -f

ele mantém as informações passadas pelo cntlm.conf corretamente, e mostra que elas permanecem no primeiro plano.

Eu vou no meu navegador (firefox) e configuro para o proxy, definindo 127.0.0.1 como proxy HTTP e 3128 como a porta.

quando eu inicio uma aba do navegador e faço uma pesquisa de teste sob o proxy, o terminal começa a elaborar dados, mas depois de alguns segundos ele continua dizendo:

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

até que eu pressione ctrl + C.

este é o cntlm.conf que eu tenho:

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

Eu tentei muitas vezes mudar a configuração, mas isso realmente não muda. Se eu colocar 127.0.0.1:3128 como padrão Proxy (o que eu estou tentando fazer) ele começa bem, mas termina em um loop.

o que devo fazer para que funcione e onde está o problema?

não toquei no código-fonte original. Por isso, deve funcionar como pretendido.

Obrigado antecipadamente.

Editar: esta é a saída ulimit -a após 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
    
por Basionkler 11.12.2015 / 13:36

1 resposta

0

Ok, eu acho que descobri o que está acontecendo aqui. Basicamente o problema é colocar no arquivo de configuração a linha

Proxy    127.0.0.1:3128

E a linha:

Listen 3128 (ou 127.0.0.1:3128 também)

Na verdade, acho que essa configuração envia o proxy em um loop no qual os threads nunca são fechados, enviando a solicitação de conexão em um único site, independentemente do limite.

Para uma conexão de navegador simples (por exemplo, Firefox), basta deixar essa linha:

Listen    3128

ou

Listen    127.0.0.1:3128

que são os mesmos. Para o Proxy, você pode seguir este esquema:

Proxy    ipAddress:port

esse par de dados pode ser facilmente encontrado na web.

Configure o Firefox (ou outro navegador) para se conectar ao seu proxy localhost, configurando o host local (ou 127.0.0.1) como Host e o mesmo número de porta que você está ouvindo. Isso funcionou para mim.

Eu ainda não sei como começar com vários aplicativos (já que não sei se eles estão realmente rodando atrás do proxy, não está dizendo nada sobre isso), mas até agora ainda é uma solução.

    
por 12.12.2015 / 00:03