Neste artigo, mostraremos a configuração do 3proxy em um servidor dedicado alimentado pelo sistema operacional ArchLinux/CentOS. O 3proxy é uma das ferramentas mais relevantes e funcionais. Ele suporta vários tipos de protocolos: HTTP, HTTPS, FTP, SOCKS e outros. Ele ajudará você a configurar seu próprio servidor proxy em questão de minutos.
Este artigo contém um guia passo a passo sobre a instalação do utilitário e sua configuração posterior. São abordados tópicos como instalação a partir de uma fonte oficial, configuração de arquivos, abertura de portas não padrão, além da descrição de erros comuns e recomendações práticas para solucioná-los. Antes de iniciar o programa, você deve contratar um VPS ou servidor dedicado com o sistema operacional CentOS ou Arch Linux. Todas as ações deste exemplo serão realizadas em um servidor dedicado com o sistema operacional CentOS 7 e um endereço IP público estático dedicado.
Instalação
Etapa 1
O 3proxy é instalado diretamente a partir dos fontes. O gcc será usado como compilador. Conectamos ao servidor como root (superusuário) e instalamos o compilador.
yum install gcc
Etapa 2
Agora é necessário baixar os arquivos-fonte do 3proxy. Você pode fazer isso acessando o site oficial e copiando o link para a versão atual:
Caso precise de uma versão arquivada, você também pode baixar o link diretamente do GitHub :
No momento em que este artigo foi escrito, a versão atual é 0.9.3. Baixe-a e descompacte-a imediatamente:
wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz
tar -xvzf 0.9.3.tar.gz
Etapa 3
Vá para o diretório com o projeto descompactado e compile:
cd 3proxy-0.9.3/
make -f Makefile.Linux
Etapa 4
Criamos diretórios e copiamos o arquivo 3proxy para /usr/bin:
mkdir -p /var/log/3proxy
mkdir /etc/3proxy
cp bin/3proxy /usr/bin/
Etapa 5
Criamos um usuário para trabalhar com o catálogo. Nesse caso, o nome de usuário é 3proxyuser:
useradd -s /usr/sbin/nologin -U -M -r 3proxyuser
Concedemos os direitos de trabalhar com diretórios ao usuário criado:
chown -R 3proxyuser:3proxyuser /etc/3proxy
chown -R 3proxyuser:3proxyuser /var/log/3proxy
chown -R 3proxyuser:3proxyuser /usr/bin/3proxy
Agora vamos criar um arquivo de configuração usando o comando:
touch /etc/3proxy/3proxy.cfg
Se necessário, você pode definir permissões no arquivo de configuração para o usuário root. Esta etapa não é obrigatória, mas adicionará proteção:
chmod 600 /etc/3proxy/3proxy.cfg
Configuração 3proxy
Etapa 6
É necessário preencher corretamente o arquivo de configuração que foi criado anteriormente. Primeiro, descubra o uid e o gid do usuário pelo comando:
id 3proxyuser
No nosso caso, estes são os seguintes valores:
Para preencher o arquivo de configuração, você pode usar configurações prontas ou consultar a documentação no site oficial. Um arquivo com um exemplo já vem pré-instalado por padrão; você pode encontrá-lo no caminho: /cfg/3proxy.cfg.sample
Como exemplo, consideraremos dois tipos de configuração: com e sem registro de logs . Cada linha será acompanhada de comentários (marcados com o símbolo “#”).
Este é um exemplo de uma configuração pronta sem registro de logs :
# We specify the user's data that we found out in the previous command
setgid 995
setuid 997
# Type the NS-servers. It is possible to clarify your own servers at /etc/resolv.conf
nserver 1.1.1.1
nserver 8.8.8.8
# Cache size
nscache 65536
# Timeouts
timeouts 1 5 30 60 180 1800 15 60
# Authorization of users by login/password (if required). You may not to use it or specify the path to the file in which authorization data is stored, for example, users $/etc/3proxy/.authfile
# If you insert a password in md5 format, replace “CL” with “CR”, as indicated in the example. You can use 2 methods at the same time.
auth cache strong
users "userproxy:CL:passwordproxy"
users "userproxy2:CR:b89097a7ad0b94f13b3c313ae76699d4 "
# Launch mode. Daemon only.
Daemon
# We write the port through which the http connection will take place. The example shows the standard one. To establish a socks connection, use the command specified in the second line, the port is also standard.
proxy -p3128
socks -p1080
Consideramos a opção de um arquivo de configuração sem registro de logs. Agora, criaremos um arquivo de configuração com registro de logs e autorização de usuários ; ele será usado posteriormente durante a configuração do servidor.
Certifique-se de fornecer as informações de autorização, pois o servidor pode ser detectado mesmo em portas não padrão.
# Configuring the server to launch from the userproxy user and the passwordproxy password.
users userproxy:CL:passwordproxy
# Specify the user's uid and gid
setgid 995
setuid 997
# Nameservers (NS-servers)
nserver 1.1.1.1
nserver 8.8.8.8
# Timeouts
timeouts 1 5 30 60 180 1800 15 60
# Cache size (standard)
nscache 65536
# Indicate the launch mode
daemon
# We install http proxy on a non-standard 50001 port. If there are several IP addresses on the server, be sure to specify a specific address for connecting the network. For example, "-e91.150.32.146". The argument "i" is a local address.
proxy –p50001
# In a same way as socks proxy, we conduct the installation on a 50002 port.
socks –p50002
# Path to the directory with logs, logs format and proxy rotation
Log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
Isso conclui a configuração do arquivo de configuração principal. Passamos para o estágio final e lançamos.
Etapa 7
Crie um arquivo de inicialização para o systemd:
touch /etc/systemd/system/3proxy.service
Emitir os direitos necessários:
chmod 664 /etc/systemd/system/3proxy.service
Copie e cole os seguintes valores no arquivo e salve:
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
ExecStop=/bin/kill `/usr/bin/pgrep 3proxyuser`
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target»
Observação: no valor “ExecStop”, você deve especificar o nome de usuário criado na etapa nº 5.
Depois disso, você precisa atualizar a configuração do Daemon com o comando:
systemctl daemon-reload
Etapa 8
A única coisa que precisamos é iniciar o 3proxy configurado, adicioná-lo à inicialização automática e também abrir portas no firewall.
Adicione-o para iniciar automaticamente, iniciar e verificar status:
systemctl enable 3proxy
systemctl start 3proxy
systemctl status 3proxy
Após verificar o status, vemos informações de que o 3proxy foi iniciado com sucesso:
Só falta abrir as portas:
firewall-cmd --zone=public --add-port=50001/tcp
firewall-cmd --zone=public --add-port=50002/tcp
firewall-cmd –reload
Se necessário, reinicie o servidor. É possível verificar se as portas estão abertas com o comando:
firewall-cmd --list-all
O que deveria ser:
Como podemos ver, ambas as portas foram abertas com sucesso e estão sendo escutadas. A conexão http está na primeira porta, o socks está na segunda porta.
Verifique a conexão através de qualquer serviço conveniente:
Tudo está funcionando. Da nossa parte, não recomendamos o uso de uma conexão não segura sem autenticação por login/senha, bem como com um conjunto padrão de portas . Ao configurar o arquivo de configuração, certifique-se de especificar um login e criar uma senha complexa, além de alterar as portas para portas não padrão . Em casos excepcionais, é possível usar a autenticação por endereço IP.
Problemas comuns
Algo deu errado e o proxy não está funcionando? Talvez a configuração do 3proxy tenha sido feita incorretamente. Vamos considerar os problemas mais comuns e suas soluções durante a instalação e configuração do utilitário.
Sem conexão
O problema mais comum para muitos usuários é uma conexão inacessível quando os arquivos de configuração parecem estar configurados corretamente. Se você tem certeza de que todas as configurações foram configuradas corretamente, o provedor de hospedagem não limita a porta selecionada e todos os dados indicam um serviço funcionando, o problema pode estar no Firewall ou, mais precisamente, sua configuração incorreta. Por exemplo, pode haver mais de dois programas instalados no sistema que entrarão em conflito entre si. Para resolver o problema, basta usar um Firewall específico. Aconselhamos que você selecione apenas iptables ou firewall-cmd.
O serviço não inicia
O serviço não inicia após a configuração de todos os arquivos necessários. Isso ocorre quando uma etapa de configuração é omitida, as permissões apropriadas não são concedidas ou um pequeno erro é cometido nos arquivos de configuração. Recomendamos que você revise cuidadosamente as instruções passo a passo, pois talvez tenha perdido alguma etapa. Se nada funcionar, uma boa ideia é reinstalar o sistema operacional e seguir todos os passos desde o início. Recomendamos usar o arquivo de exemplo localizado em /cfg/3proxy.cfg.sample como configuração de teste e o firewall-cmd pré-instalado como firewall.
Logging
A questão final, mas não menos importante, está relacionada ao armazenamento de arquivos. O 3proxy ocupa vários mb durante a instalação, mas o tamanho pode ser aumentado significativamente apenas por meio de log com o passar do tempo. O fato é que muitos usuários habilitam a gravação de log em um arquivo separado, mas não configuram a rotação e não excluem logs irrelevantes. Três opções podem ser usadas para a solução deste problema:
- Habilitar registro;
- Exclua periodicamente registros irrelevantes;
- Habilite a rotação, como foi feito na configuração acima. Por exemplo, "rotate 30" no arquivo de configuração significa que o 3proxy armazenará apenas os últimos 30 arquivos.
Conclusão
Instalar e configurar o 3proxy nos sistemas operacionais CentOS e ArchLinux é uma tarefa bastante simples, mas ao mesmo tempo eficaz. O artigo cobriu as etapas para instalar os pacotes necessários, configurar arquivos de configuração e iniciar o serviço. O conhecimento adquirido permitirá que você instale e configure seu servidor proxy sozinho, sem nenhuma dificuldade.