Как настроить 3proxy на windows

How to set up logging

3proxy can log to stdout, file, ODBC datasource and
syslog (Unix/Linux/Cygwin only). For using ODBC under Unix/Linux you must
compile 3proxy with Unix ODBC libraries, see Compilation.
You can control logging from 3proxy.cfg for all services or you can control
logging of individual service, for example
/usr/local/sbin/socks -l/var/log/socks.log starts SOCKS proxy with logging to file.
For universal proxy (3proxy) log file rotation and archiving is supported.
Log type is defined with «log» configuration file command or with
-l switch on individual service invokation. log or -l is stdout logging.

	log filename

and

	-lfilename

specify filename for logging

	log @ident

and

	-l@ident

specify ident for syslog logging. If filename within «log» command contains
‘%’ characters, it’s processes as format specificator (see «logformat»). E.g.
log c:\3proxy\logs\%y%m%d.log D creates file like c:\3proxy\logs\060729.log,
date is generated based on local time.

	log &connstring

specifies ODBC connection string, connstring is in format
datasource,username,password (2 last are optional of
datasource does not require or already has authentication information).
Also, you must specify logformat to build SQL query, to insert recod into
log, see How to setup logging format

Rotation and archiving may be set up with log, rotate � archiver commands

	log filename LOGTYPE

sets rotation type. LOGTYPE may be:

  • M, monthely
  • W, weekly
  • D, daily
  • H, hourly
  • C, minutely
	rotate NUMBER

specifies number of files in rotation (that is how many files to keep).

	archiver EXT COMMAND PARAMETERS

Sets external archiver. EXT is extention of archived files
(for example zip, gz, Z, rar etc) COMMAND and PARAMETERS are command
to execute and command line PARAMETERS. Originale file is not deleted by
3proxy, this work is left for archiver.
You can pass original filename to archiver with %F macro and archive filename with %A.
Examples are located in
3proxy.cfg.sample

How to setup logging format

Since 0.3 version log format may be set with «logformat» command.
First symbol of log format specifies format of date and time and
should be L (LOCAL) or G (GMT — Grinwitch Meridian Time). Format
string may contains some macro substitutions:

  • %y — Year (2 digits)
  • %Y — Year (4 digits)
  • %m — Month (2 digits)
  • %o — mOnth (3 letter abbriviation)
  • %d — Day (2 digits)
  • %H — Hour (2 digits)
  • %M — Minute (2 digits)
  • %S — Second (2 digits)
  • %t — Timestamp (seconds since January, 1 1970 00:00:00 GMT)
  • %. — Milliseconds
  • %z — Timezone in mail format (from GMT, ‘+’ east, ‘-‘ west HHMM), For example Moscow winter time is +0300.
  • %U — Username (‘-‘ if unknown).
  • %N — Service name (PROXY, SOCKS, POP3P, etc)
  • %p — Service port
  • %E — Error code (see. Log error codes reference)
  • %C — client IP
  • %c — client port
  • %R — target IP
  • %r — target port
  • %e — external IP address used to establish connection
  • %Q — requested IP
  • %q — requested port
  • %I — bytes received from target
  • %O — bytes sent to target
  • %n — host name from request
  • %h — hops before target (if redirection or chaning is used).
    see How to use chains and parent proxies)
  • %T — service specific text (for example URL requested). %X-YT
    where X and Y are positive numbers, only displays fields
    (space delimited) X to Y of the text. An example is %1-2T.

Example:

logformat "L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"

generates something like


1042454727.0296 SOCK4.1080 000 3APA3A 127.0.0.1:4739 195.122.226.28:4739 505 18735 1 GET http://3proxy.org/ HTTP/1.1


(no line breaks)

If ODBC used, logformat should specify SQL command,
to insert record into log, for example

logformat "-\'+_GINSERT INTO proxystat  VALUES (%t, '%c', '%U', %I)"

(no line breaks)

-\’+_ instructs to replace characters \ and ‘ with _

A: Use one of proxy, connect+, socks4+ or socks5+ as a parent type. 3proxy
itself still performs a name resolution, it’s required e.g. to ACLs matching.
So, if no name resolution must be performed by 3proxy itself add a command

  fakeresolve

this command resolves any name to 127.0.0.2 address.

  • How to setup FTP proxy
  • There is FTP over HTTP (what is called FTP proxy in browsers) and FTP over FTP �ப�
    (what is called FTP proxy in file managers and FTP clients). For browsers, there is no need to start additional
    proxy service, ‘proxy’ supports FTP over HTTP, configure ‘proxy’ port as an FTP proxy. For ftp clients and file
    managers use ftppr. FTP proxy supports both active and passive mode with client, but always use passive mode with FTP servers.

  • How to setup SNI proxy (tlspr)
  • SNI proxy can be used to transparently redirect any TLS traffic with external router or local redirection rules. It can also be used
    to extract hostnames from TLS to use in ACLs in combination with SOCKS or HTTP(s) proxy and/or Transparent plugin. It can also be used to require TLS or mTLS between services. TLS hadshake contains no
    port information, if tlspr is used as a standalone service, destination port may be either detected with Transparent plugin or configured with -P option (default 443).

    -c option is used to specify level of TLS check:

    0 (default) - allow non-TLS traffic
    1 - require TLS, only check client HELLO packet
    2 - require TLS, check both client and server HELLO
    3 - require TLS, check server send certificate (not compatible with TLS 1.3)
    4 - require mutual TLS, check server send certificate request and client sends certificate (not compatible with TLS 1.3)    
    

    configuration examples:
    1. port 1443 may be used to redirect traffic to destination port 143). SNI is used to find destination host

    tlspr -p1443 -P443 -c1
    

    2. used as parent tls to detect destination hostname from TLS in socks

    allow * * * 80
    parent 1000 http 0.0.0.0 0
    allow * * * * CONNECT
    parent 1000 tls 0.0.0.0 0
    deny * * some.not.allowed.host
    allow *
    socks
    
  • How to limit service access

    First, always specify internal interface to accept incoming connection with
    ‘internal’ configuration command or ‘-i’ service command. (See
    How to start any of proxy services (HTTP, SOCKS etc)). If
    no internal interface is specified your proxy will act as open one.

    It’s also important to specify external interface to prevent access to
    internal network with ‘external’ or -e.

    3proxy with configuration files allows to use authentication and
    authorization for user’s access. Authentication is possible by
    username/password or user’s NetBIOS name. Authentication type is specified by
    ‘auth’ command.

    auth none
    

    Disables both authentication and authorization. You can not use ACLs.

    auth iponly
    

    Specifies no authentication, ACLs authorization is used.

    auth nbname
    

    Authentication by NetBIOS name + ACLs. NetBIOS name of ‘messenger’ service
    is obrained before ACL validation. If no name is obtained it’s assumed to be
    empty. Messenger is started by default in Windows NT/2000/XP. For Win9x
    WinPopUP need to be launched. This type of authentication may be spoofed
    by privileged local user.

    auth strong
    

    Authentication by username/password. If user is not registered his
    access is denied regardless of ACLs.

    Different services can have different authentication levels.

    auth none
    pop3p
    auth iponly
    proxy
    auth strong
    socks
    

    It’s possible to authorize access by client IP address, IP address or requested resource,
    target port, time, etc after authentication.
    (See How to limit resource access).

    Since 0.6 version double authentication is possible, e.g.

    auth iponly strong
    allow * * 192.168.0.0/16
    allow user1,user2
    proxy
    

    strong authentication will only be used if ACL requires username to deside if
    access must be granted. That is, in example, strong username authentication
    is not required to access 192.168.0.0/16

    0.6 version introduces authentication (username) caching to increase
    productivity. It’s recommended to use authentication caching with resource
    or time consuming authentication types, such as nbname or external plugins
    (WindowsAuthentication).
    Caching can be set with ‘authcache’ command with 2 parameters: caching type
    and caching time (in seconds). Caching type defines the type of cached access:
    ‘ip’ — after successful authentication all connections during caching time
    from same IP are assigned to the same user, username is not requested.
    «ip,user» — username is requested and all connections from the same IP are
    assigned to the same user without actual authentication. «user» — same as above,
    but IP is not checked. «user,password» — username and password are checked
    against cached ones. For authentication special authentication type ‘cache’
    must be used.
    Example:

    authcache ip 60
    auth cache strong windows
    proxy -n
    

    Please note, that caching affects security. Never use caching for access to
    critical resources, such as web administration.

    authcache can be used to bind user’s sessions to ip with ‘limit’ option, with

      autchcache ip,user,pass,limit 120
      auth cache strong

    user will not be able to use more than a single IP during cache time (120 sec).

  • How to create user list

    Userslist is created with ‘users’ command.

    users USERDESC ...
    

    With a single command it’s possible to define few users, or you
    can use few ‘users’ commands. USERDESC is user description. Description
    consists of three semicolon delimited parts — login, password type and

    users admin:CL:bigsecret test:CL:password test1:CL:password1
    users "test2:CR:$1$lFDGlder$pLRb4cU2D7GAT58YQvY49."
    users test3:NT:BD7DFBF29A93F93C63CB84790DA00E63
    

    Please note the usage of quotation sign: it’s required to comment out $ sign
    overwise used as a file inclusion macro.
    Next password types are available:

    • No password type: use system authentication.
    • CL — cleartext password
    • CR — crypt password, only MD5 crypt passwords are supported
    • NT — NT-hashed (MD4) passwords in hex, as used in pwdump or SAMBA

    NT and crypt passwords can be used to import accounts from Windows/SAMBA or
    Unix. For Windows you can use pwdump family of utilities.
    It’s convenient to store accounts apart and include account file with $ macro.
    Because for included files newlines are treated as a space, it’s possible to
    use atandard passwd file format:

    users $/etc/.3proxypasswd
    

    or

    users $"c:\Program Files\3proxy\passwords"
    

    It’s possible to create NT and crypt passwords with mycrypt utility included
    in distribution.

    Userlist is system-wide. To manage user access to specific service use ACLs.

  • How to limit user access to resources

    Commands allow, deny and flush are used to manage ACLs:


    allow <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist> <weekdaylist> <timeperiodlist>

    deny <userlist> <sourcelist> <targetlist> <weekdaylist> <timeperiodlist>

    flush

    ‘flush’ command is used to finish with existing ACL and to start new one.
    It’s required to have different ACLs for different services.
    ‘allow’ is used to allow connection and ‘deny’ to deny connection. ‘allow’
    command can be extended by ‘parent’ command to manage redirections (see How to manage redirections)). If ACL
    is empty it allow everything. If ACL is not empty, first matching ACL entry
    is searched for user request and ACL action (allow or deny) performed. If
    no matching record found, connection is denied and user will be asked to
    re-authenticate (requested for username/password). To prevent this request
    add ‘deny *’ to the end of list.

    • <userlist> — comma delimited list of users
    • <sourcelist> — comma delimited list of source (client) networks.
      Networks can be defined as single IP address or in CIDR form
      xxx.yyy.zzz.mmm/l, where l — is the length of network mask
      (a number of non-zero bits). 192.168.1.0/24
      means network with 255.255.255.0 mask.
    • <targetlist> — comma delimited list of target (server) networks.
      In 3proxy 0.6 and above it’s allowed to use hostnames with wildmasks
      in targetlist. Wildmask may only present in the begginning or at the
      end of the hostname, e.g.
      192.168.0.0/16,www.example.com,*wrongsite.com,*wrongcontent*.
    • <targetportlist> — comma delimited list of ports. I
      It’s possible to define port ranges with -, e.g. 80,1024-65535
      means port 80 and all unprivileged ports.
    • <commandlist> — the list of allowed actions

      CONNECT — establish outgoing TCP connection. e.g. POP3 or SOCKSv5

      BIND — allow incoming TCP connection (SOCKSv5)

      UDPASSOC — create UDP association (SOCKSv5)

      ICMPASSOC — create ICMP association (not implemented)

      HTTP_GET — HTTP GET request (HTTP proxy)

      HTTP_PUT — HTTP PUT request (HTTP proxy)

      HTTP_POST — HTTP POST request (HTTP proxy)

      HTTP_HEAD — HTTP HEAD request (HTTP proxy)

      HTTP_CONNECT — HTTP CONNECT, aka HTTPS request (HTTP proxy)

      HTTP_OTHER — another HTTP request (HTTP proxy)

      HTTP — any HTTP request except HTTP_CONNECT (HTTP proxy)

      HTTPS — alias to HTTP_CONNECT (HTTP proxy)

      FTP_GET — FTP get request (http, ftp proxy)

      FTP_PUT — FTP put request (ftp proxy)

      FTP_LIST — FTP list request (http, ftp proxy)

      FTP — any FTP request

      ADMIN — administration interface access
    • <weeksdays> — week days numbers or periods (0 or 7 means Sunday, 1 is Monday, 1-5 means Monday through Friday).
    • <timeperiodlists> — a list of time periods in HH:MM:SS-HH:MM:SS format. For example,
      00:00:00-08:00:00,17:00:00-24:00:00 lists non-working hours.

    * in ACL means «any».
    Usage examples could be found in 3proxy.cfg.sample.

  • How to manage redirections

    Redirections are usefull to e.g. forward requests from specific clients
    to different servers or proxy server. Additionally, redirections are usefull
    to convert proxy interface from ont format to another, e.g. requests from
    SOCKS proxy can be redirected to parent HTTP proxy, or SOCKSv5 client can be
    redirected to SOCKSv4 proxy.

    Because 3proxy understand «transparent» web request, it can be used as an
    intermediate software between HTTP proxy and NAT server for transparent HTTP
    forwarding, because it can convert «Web server» request issued by client to
    «proxy request» required by proxy server. A simplest redirection is:

    auth iponly
    allow *
    parent 1000 http 192.168.1.1 3128
    proxy
    

    All trafiic of HTTP proxy is redirected to parent proxy 192.168.1.1 port 3128.

    If port number is ‘0’, IP address from ‘parent’ is used as external address
    for this connection (that is like -eIP, but only for connections matching
    ‘allow’).

    Special case of redirection are local redirections. In this case both IP is
    0.0.0.0 and port is 0. It’s only usseful with SOCKS service. In this case no
    new connection is established, but request is parsed by corresponding local
    service. E.g.:

    auth iponly
    allow * * * 80
    parent 1000 http 0.0.0.0 0
    allow * * * 21
    parent 1000 ftp 0.0.0.0 0
    allow * * * 110
    parent 1000 pop3 0.0.0.0 0
    socks
    

    In this case all SOCKS traffic with destination port 80 is forwarded to local
    ‘proxy’ service, destination port 21 to ‘ftppr’ and 110 to ‘pop3pr’. There is
    no need to run these services expicitly. Local redirections are usefull if
    you want to see and control via ACLs protocol specific parameters, e.g.
    filenames requests thorugh FTP while clients are using SOCKS.

  • ��� �ࠢ���� ������묨 ��७��ࠢ����ﬨ

    Q: What is it for?

    A: To have control based on request and to have URLs and another protocol specific parameters to be logged.

    Q: What are restrictions?

    A: It’s hard to redirect services for non-default ports; Internet Explorer supports only SOCKSv4 with no password authentication (Internet Explorer sends username, but not password), for SOCKSv5 only cleartext password authentication is supported.

    Q: What are advantages?

    A: You need only to setup SOCKS proxy in browser settings. You can use socksifier, i.e. FreeCAP or SocksCAP with application which is not proxy aware.

    Q: How to setup?

    A: You should specify parent proxy with IP of 0.0.0.0 and port 0. Examples:

    auth iponly
    allow * * * 80,8080-8088
    parent 1000 http 0.0.0.0 0
    allow * * * 80,8080-8088
    #redirect ports 80 and 8080-8088 to local HTTP proxy
    #Second allow is required, because ACLs are checked
    #twice: first time by socks and second by http proxy.
    
    allow * * * 21,2121
    parent 1000 ftp 0.0.0.0 0
    allow * * * 21,2121
    #redirect ports 21 and 2121 to local 
    #ftp proxy
    
    
    allow *
    #allow rest of connections directly
    
    socks
    #now let socks server to start
    

    Q: How it affects different ACL rules

    A: After local redirections rules are applied again to protocol-level request. Redirection rule itself is skipped. It makes it possible to redirect request again on the external proxy depending on request itself.

    allow * * * 80,8080-8088
    parent 1000 http 0.0.0.0 0
    #redirect http traffic to internal proxy
    
    allow * * $c:\3proxy\local.nets 80,8080-8088
    #allow direct access to local.nets networks
    allow * * * 80,8080-8088
    parent 1000 http proxy.3proxy.org 3128
    #use parent caching proxy for rest of the networks
    
    allow *
    #allow direct connections for rest of socks
    #requests
    
  • How to balance traffic between few external channgels?

    Proxy itself doesn’t manage network level routing. The only way to control
    outgoing channel is to select external interface. It’s possible to make
    external interface (what is usually selected with ‘external’ command or
    ‘-e’ option) random by using local redirection with external port 0.

    auth iponly
    allow *
    parent 500 http 10.1.1.101 0
    parent 500 http 10.2.1.102 0
    

    Now external interface is randomly selected with 0.5 probability between
    10.1.1.101 and 10.2.1.102. To work as expected, different default routes
    must between 2 interfaces.
    used

    If both interface addresses are in same network, e.g. 10.1.1.101 and 10.1.1.102
    and you want to select random gateway between 10.1.1.1 and 10.1.1.2, you must
    control it by using routing table, in case there is no default gateway route
    for Windows:

     route add -p 10.1.1.1 10.1.1.101
     route add -p 10.1.1.2 10.1.1.102
     route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.1
     route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.2
    

    If you have no second address yet, just add it. Under Linux/Unix it’s better
    to use source routing.

  • How to manage proxy chains

    parent command may also be used to build a proxy chains. In this case
    few ‘parent’ commands are used for single ‘allow’ rule with different
    weights (first argument of parent command). Chain may contain any number
    of proxy servers, but it should be noted that every hope significantly
    reduces productivity. It’s possible to mix different types of proxy within
    single chain: HTTPS (HTTP connect), SOCKS4, SOCKS5. Weight different from
    1000 is used to build random chains. if weight W is below 1000, this proxy
    will be used as a next chain hop with probability of W/1000. That is, if
    the weight is 250 probability this proxy will be used for the next hope is
    25%. ‘parent’ records with common weight of 1000 establish a group, one of
    these record will be used for the hop with probability according to weight.
    Warning: each group must have a weight even of 1000. As follows, common
    weight of all ‘parent’ records must also be even of 1000. If common weight
    of ‘parent’ records in te chain is 3000, chain has 3 hops and must be formed
    of 3 groups. Example:

    allow *
    parent 500 socks5 192.168.1.1 1080
    parent 500 connect 192.168.10.1 3128
    

    In this case we have 1 parent proxy (1 hop) which is randomely choosen between
    2 hosts: 192.168.1.1 and 192.168.10.1. 2 records form a single group.

    allow * * * 80
    parent 1000 socks5 192.168.10.1 1080
    parent 1000 connect 192.168.20.1 3128
    parent 300 socks4 192.168.30.1 1080
    parent 700 socks5 192.168.40.1 1080
    

    In this case we have 3 groups (3 hops in the chain). First hop is 192.168.10.1,
    second hop is 192.168.20.1 and 3rd one is either 192.168.30.1 with probability
    of 30% or 192.168.40.1 with probability of 70%.

  • How to limit bandwidth

    3proxy supports bandwidth filters. To manage filters bandlimin/bandlimout and
    nobandlimin/nobandlimout. ‘in’ means incoming and ‘out’ — outgoing traffic.


    bandlimin <bitrate> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>

    nobandlimin <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>

    Commands are applied to all services. Imagine bandwidth filters as a series of
    pipes. Bitrate is a pipe’s width and ACLs controls the flow thorugh this pipe.

      bandlimin 57600 * 192.168.10.16
      bandlimin 57600 * 192.168.10.17
      bandlimin 57600 * 192.168.10.18
      bandlimin 57600 * 192.168.10.19
    

    Create 4 separete pipes for 4 client with emulation of modem connection.

      bandlimin 57600 * 192.168.10.16/30
    

    Create single pipe for all 4 clients. That is 4 clients share modem connection.
    In this example:

      nobandlimin * * * 110
      bandlimin 57600 * 192.168.10.16/32
    

    mail traffic from POP3 servers bypasses the pipe and has no bandwidth
    limitation.

  • How to limit traffic amount


    counter <filename> <type> <reportpath>

    countin <number> <type> <amount> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>

    nocountin <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>

    countout <number> <type> <amount> <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>

    nocountout <userlist> <sourcelist> <targetlist> <targetportlist> <commandlist>

    You can set traffic limit per day (D), week (W), month (M), year (Y) or
    absolute (‘N’), as specified by ‘type’ argument of counterin command.
    Traffic information is stored in binary file specified by ‘filename’ argument.
    countersutil utility can be used to manage this file.
    reportpath specifies location of text reports, type parameter of ‘counter’
    command controls how often text reports are created. amount is amount of
    allowed traffic in Megabytes (MB). nocountin allows you to set exclusions.

  • How to fix incorrect traffic accounting

    3proxy accounts protocol level traffic. Provider counts channel or IP-level traffic with network and transport headers. In additions, 3proxy doesn’t counts DNS resolutions, pings, floods, scans, etc. It makes approx. 10% of difference. That’s why you should have 15% reserve if you use 3proxy to limit your traffic. If difference with your provider is significantly above 10% you should look for traffic avoiding proxy server, for example connections through NAT, traffic originated from the host with proxy installed, traffic from server applications, etc.

  • How to configure name resolution and DNS caching

    For name resolution and caching use commands nserver, nscache / nscache6 and nsrecord.

      nserver 192.168.1.2
      nserver 192.168.1.3:5353/tcp

    sets DNS resolvers. 192.168.1.3 will be used via TCP/5353 (instead of default UDP/53)
    only if 192.168.1.2 fails. Up to 5 nservers may be specified.
    If no nserver is configured, default system name resolution functions are used.

      nscache 65535
      nscache6 65535

    sets name cache size for IPv4 and IPv6. Name cache must be large enouth, if presents.
    name cache is only used if nserver is configured.

      nsrecord server.mycompany.example.com 192.168.1.1
      nsrecord www.porno.com 127.0.0.2
      ...
      deny * * 127.0.0.2

    adds static nsrecords. Also, static nsrecords are used for dnspr, unless -s option is specified.
    Since 0.8 version, parent proxy may be configured for dnspr.

  • How to use IPv6

    IPv6 is supported since 0.8. Please note, some proxy protolos, e.g. SOCKSv4,
    do not support IPv6. SOCKSv5 supports IPv6 with special request type (must be
    implemented by client).

    3proxy supports proxying from IPv4 and IPv6 networks to IPv4,
    IPv6 and mixed networks. IPv6 address may be used in
    internal, external, parent commands, ACLs, -i and -e options,etc.
    external command and -e options may be given twice for each service — once with IPv4
    and once with IPv6 address. internal can be given only once, to bind to all IPv4 and
    IPv6 addresses use [0:0:0:0:0:0:0:0] or [::].

    Any service may be configured with -4, -46, -64, -6 options to specify decied
    priority for name to IPv4/IPv6 address resolution (IPv4 only, IPv4 priority,
    IPv6 priority, IPv6 only).

  • How to use connect back

    In example, users needs access from external network to proxy server located
    on the host 192.168.1.2. This host can not be accessed from external network,
    but it has access to external network with with external address 1.1.1.1.
    Also, user has access to the host 2.2.2.2 (IP address may be dynamic) with
    hostname host.dyndns.example.org via external network. User needs 2 instances
    of 3proxy, first one on the host 192.168.1.2 with config

      users user:CL:password
      auth strong
      allow user
      proxy -rhost.dyndns.example.org:1234

    second one on the host.dyndns.example.org (2.2.2.2) with config

      auth iponly
      allow * * 1.1.1.1
      tcppm -R0.0.0.0:1234 3128 1.1.1.1 3128

    For browser settings proxy is host.dyndns.example.org:3128.

  • Понадобилось мне дома быстро настроить прокси. С помощью 3proxy, за авторством Vladimir ‘3APA3A’ Dubrovin, удалось всё сделать за 5 минут.

    https://3proxy.ru

    3proxy — бесплатный кроссплатформенный прокси-сервер. Основными отличительными особенностями являются небольшой размер и поддержка нескольких операционных систем. Программа не имеет графического интерфейса, её настройка производится путём написания конфигурационного файла. Существует возможность запуска программы как в консольном режиме, так и в фоновом режиме в виде службы или демона.

    Установка 3proxy

    Работаем в ОС Windows 11. Здесь мы не рассматриваем установку прокси как службу, всё это можно найти в документации. Нам нужен прокси за 5 минут. Просто качаем последний релиз:

    https://github.com/3proxy/3proxy

    Я взял версию 3proxy-0.9.4-lite.zip, несмотря на то, что сборка предназначена для старых версий Windows, и в новых она заработала.

    • 3proxy-0.9.4.zip — binaries for Windows Vista, 7, 8, 10 / Server 2003,2008,2012,2016,2019 (32 bit)
    • 3proxy-0.9.4-x64.zip — binaries for Windows Vista, 7, 8, 10 / Server 2003,2008,2012,2016,2019 (64 bit)
    • 3proxy-0.9.4-lite.zip — binaries for old Windows versions (Windows 95, 98, ME, NT 4.0, Windows 2000, Windows XP)
    • 3proxy-0.9.4-arm64.zip — binaries for Windows on ARM
    • 3proxy-0.9.4.x86_64.deb — deb package for x86_64 Debian-based Linux (experimental!)
    • 3proxy-0.9.4.x86_64.rpm — rpm package for x86_64 Red Hat based Linux (experimental!)
    • 3proxy-0.9.4.aarch64.rpm — rpm package for arm64 (aarch64-linux-gnu) Red Hat based Linux (experimental!)
    • 3proxy-0.9.4.arm.rpm — rpm package for arm (arm-linux-gnueabi) Red Hat based Linux (experimental!)
    • 3proxy-0.9.4.aarch64.deb — deb package for arm64 (aarch64-linux-gnu) Debian based Linux (experimental!)
    • 3proxy-0.9.4.arm.deb — rpm package for arm Debian based Linux (experimental!)

    Добавил его в Сборку для системного администратора.

    Распаковываем, вот и вся установка.

    proxy

    Настройка 3proxy

    В папке bin создаём конфигурационный файл 3proxy.cfg.

    3proxy

    Помним, нам нужен прокси за 5 минут. Самый простой конфигурационный файл:

    auth none
    log
    proxy
    • auth none — авторизация не требуется
    • log — вывод лога на экран
    • proxy — стандартный прокси на порту 3128

    3proxy

    Запуск 3proxy

    Запускаем 3proxy.exe, открывается консоль. Проверим, что 3128 порт прослушивается:

    netstat -tan | findstr "3128"

    3proxy

    Попробуем подключиться к прокси с соседнего компа:

    3proxy

    Что-то заработало. В консоли побежали строчки лога.

    3proxy

    Мы подняли прокси-сервер 3proxy за пять минут.

    Рассмотрим процедуру установки и запуска великолепного прокси-сервера 3proxy под Windows.
    В скобках заметим, что установка под Linux не требует, кажется, никаких дополнительных комментариев… просто ставим из репов, затем редактируем под себя конфиг:

    Code:

    [aleksej@localhost ~]$ su
    Пароль:
    [root@localhost aleksej]# yum install 3proxy
    Загружены модули: langpacks, presto, refresh-packagekit
    Подготовка к установке
    Разрешение зависимостей
    —> Проверка сценария
    —> Package 3proxy.i686 0:0.6.1-11.fc15 will be для установки
    —> Проверка зависимостей окончена

    Зависимости разрешены

    ===================================================================================================================================
    Пакет Архитектура Версия Репозиторий Размер
    ===================================================================================================================================
    Установка:
    3proxy i686 0.6.1-11.fc15 fedora 146 k

    Результат операции
    ===================================================================================================================================
    Установить 1 пакет(а,ов)

    Объем загрузки: 146 k
    Будет установлено: 466 k
    Продолжить? [y/N]:

    А вот под Windows не все и не всегда проходит гладко… особенно, если впервые устанавливаешь 3proxy. ОК, а теперь — по порядку.

    3proxy это маленький многоплатформный набор прокси-серверов (под Linux/Unix и Windows, включая 64-битные версии).

    Он включает в себя HTTP прокси с поддержкой HTTPS и FTP (proxy/proxy.exe), SOCKSv4/SOCKSv4.5/SOCKSv5 прокси (socks/socks.exe), POP3 прокси (pop3p/pop3p.exe), SMTP прокси (smtpp/smtpp.exe), AIM/ICQ прокси (icqpr/icqpr.exe), MSN messenger / Live messenger proxy (msnpr/msnpr.exe), FTP proxy, кэширующий DNS прокси, TCP и UDP портмапперы (tcppm, udppm) а так же комбинированный прокси-сервер с поддержкой дополнительных возможностей, таких как управление доступом, ограничение ширины потребляемого канала, ограничение трафика на день, неделю и месяц, перенаправление соединений, построение цепочек соединений (proxy chaining), ротацию лог-файлов, ведение журналов через ODBC и syslog и т.д. (3proxy).

    Он создан в рассчете на то, чтобы быть маленьким и простым и в то же время функциональным. Он может быть скомпилирован как с помощью Visual C так и с помощью gcc. Версия под Win32 использует родные библиотеки (т.е. не требуется Cygwin или другие POSIX-эмуляторы), поддерживается установка в качестве сервиса. На сегодняшний день работоспособность проверена на Windows 98/NT/2000/2003/2008/XP/Vista/Windows 7 включая версии x64, FreeBSD/i386, NetBSD/i386, OpenBSD/i386, Linux/i386, Linux/PPC, Linux/Alpha, Mac OS X/PPC, Solaris 10/i386.

    3proxy является FreeWare и может быть использован по лицензии GNU/GPL или под собственной лицензией. Начиная с версии 0.6 Используется лицензия типа BSD, позволяющая, так же, использовать LGPL, Apache License и многие другие совместимые типы лицензирования.

    Загружаем архив с
    сайта разработчика
    и распаковываем. Копируем из каталога \cfg\sql файл 3proxy.cfg, помещаем его в одну директорию с 3proxy.exe. Или же — из каталога \cfg копируем 3proxy.cfg.sample, переименовываем в 3proxy.cfg и помещаем туда же, в бинарники. Одно из двух; все одно в дальнейшем этот конфиг нам придется редактировать, а сейчас заработает по-любому.

    Открываем cmd, переходим в каталог, содержащий файл 3proxy.exe (я положил директорию 3proxy в корень диска С):

    и запускаем инсталляцию:

    Code:

    3proxy.exe —install

    [img

    Как видите, все несложно.

    Но здесь нас поджидает (возможно) нежданная и незаслуженная неприятность — 3proxy установлен, но не запущен; и даже зайдя в Администрирование -> Службы — мы не можем запустить его вручную:

    [img

    Почему так происходит? Вам придется внимательно изучить вот этот раздел FAQ:

    Почему 3proxy не запускается как служба?

    Наиболее вероятные причины:

    • Отсутствие команды service в файле конфигурации — команда необходима в 3proxy 0.5.2 и более ранних, чтобы 3proxy вел себя как системная служба Windows
    • Использование относительных (неполных) путей файлов в файле конфигурации При использовании файлов журналов, файлов вставок ($filename) используйте полные пути, например, $»c:\3proxy\include files\networks.local». Тоже самое относится к файлам журналов и любым другим. Для отладки лучше запускать 3proxy с ведением журнала на стандартный вывод. Не забудьте в таком случае отключить daemon и service в файле конфигурации. Для чистоты эксперимента запускать 3proxy из командной строки в таком случае следует, находясь в другой папке.
    • Отсутствие у системной записи прав на доступ к исполняемому файлу, каким-либо файлам конфигурации, журнала и т.п.
    • Отсутствие файла конфигурации по стандартному расположению — 3proxy.cfg в одном каталоге с исполняемым файлом. Если файл расположен по другому пути, необходимо использовать команду

    Code:

    3proxy —install path_to_configuration_file

    • Отсутствие у пользователя прав на установку или запуск службы
    • Служба уже установлена или запущена

    Справедливости ради следует отметить, что FAQ написан очень подробно и на все случаи жизни… мне же, чтобы запустить 3proxy как службу, понадобилось всего лишь создать по указанному в конфиге пути папку logs, и в ней — пустой файл лога (возможно, файл создавать было и необязательно). После этого 3proxy стартует уже без малейших проблем:

    [img

    Теперь, убедившись, что все работает, можно снова остановить 3proxy и спокойно заняться правкой конфига под себя. Останавливаться на этом не будем, т.к., повторюсь, к вашим услугам — прекрасно написанное руководство на русском, доступное на сайте разработчика. Enjoy!

    Последнее редактирование: 13 года 7 мес. назад пользователем Aleksej.

    3proxy — это бесплатный прокси-сервер, позволяющий юзерам поддерживать необходимый уровень конфиденциальности и безопасности в Интернете. Гибкая настройка позволяет адаптировать его под различные системы, сети и цели использования.

    3proxy — кроссплатформенный прокси-сервер, который можно настроить по своему усмотрению. Хотя иногда антивирусное ПО распознаёт его как вредоносную программу, он всё же очень полезен. Благодаря 3proxy вы сможете обезопасить свою локальную сеть и отфильтровать трафик.

    3proxy — это прокси-сервер (бесплатное ПО) для Windows, Linux и Unix. Он используется для защиты сети, ведения журнала логов, сокрытия IP-адреса, фильтрации трафика, кеширования данных и объединения нескольких прокси-серверов в одну цепочку.

    «3 прокси» не имеет графического интерфейса. Поэтому настройка данного программного обеспечения производится через написание команд. Возможен запуск этого ПО как в консольном режиме, так и в фоновом режиме в виде дополнительной службы. Для его настройки можно воспользоваться простой командной строкой (терминалом).

    Преимущества использования программы 3proxy

    1. Работает быстрее других прокси-серверов, обеспечивает высокую скорость обработки запросов с минимальными задержками.
    2. Занимает мало места на компьютере и потребляет небольшое количество ресурсов, что делает программу доступной для владельцев различных устройств.
    3. Поддерживает разные виды протоколов, включая HTTP, HTTPS, SOCKS4/5, что делает её универсальным инструментом в руках системного администратора.
    4. Включает в себя множество полезных функций.
    5. Настраивается за несколько минут через терминал или командую строку.
    6. Обеспечивает высокий уровень защиты данных благодаря функции шифрования и аутентификации.
    7. Доступна на ОС Windows, Linux/Unix.

    Минусы этого программного обеспечения

    1. Не подходит для тех, кто предпочитает работать в привычном интерфейсе. Пользователи считают эту программу неудобной из-за отсутствия графического интерфейса и необходимости редактировать конфигурационные файлы вручную.
    2. 3proxy уступает более продвинутому прокси-серверному ПО. В этой программе не предусмотрены дополнительные функции по защите данных, да и в сети мало рассказывается о том, как настроить данное ПО вручную.

    3proxy подходит для тех, кому нужен простой, надёжный прокси-сервер, который весит совсем немного.

    Требования к системе

    Перед установкой «3 прокси» убедитесь в том, что у вас есть:

    1. Сервер, который будет функционировать как «выходная нода», с одним ядром, 5-10 Гб дискового пространства и 1 Гб ОЗУ.
    2. Высокоскоростное подключение к Интернету и не тарифицируемый по объёму данных трафик.
    3. Свободные порты.
    4. Доступ к серверу и командой строке с расширенными правами.
    5. Актуальная операционная система.

    Если вы убедились в том, что ваши устройства соответствуют минимальным требованиям, то тогда вы можете перейти к setup 3proxy socks.

    Как настроить программу

    Установка 3proxy осуществляется из базовых исходников. Для её выполнения вам необходимо загрузить недостающие пакеты. Если вы пользуетесь AlmaLinux и CentOS 7, то введите следующую команду:

    # yum -y install gcc wget tar make

    В случае с Debian и Ubuntu, загрузите пакеты путем ввода:

    apt update: # apt install -y build-essential wget tar

    После загрузки базовых пакетов вам нужно будет скачать proxy и распаковать архив посредством следующего кода:

    # wget https://github.com/z3APA3A/3proxy/archive/0.9.4.tar.gz
    # tar -xvzf 0.9.4.tar.gz

    Если вы уже ввели соответствующую команду, то распакуйте всё в директорию и скомпилируйте посредством следующего кода:

    # cd название прокси-0.9.4/
    # make -f Makefile.Linux

    Далее сформируйте папку для конфигов и логов, а затем перенесите исполняемый файл proxy через команду:

    # mkdir /etc/название прокси
    # mkdir -p /var/log/ наименование прокси
    # cp bin/ название прокси /usr/bin/

    Затем создайте юзера:

    # useradd -s /usr/sbin/nologin -U -M -r proxyuser

    Предоставьте ему права доступа через команду:

    # chown -R proxyuser:proxyuser

    Ее нужно будет ввести три раз, поменяв лишь ее концовку:

    /etc/ название прокси
    /var/log/ наименование прокси
    /usr/bin/ название прокси

    После создайте новый конфиг:

    # touch /etc/3proxy/3proxy.cfg

    И предоставьте доступ к конфигурации лишь суперпользователю:

    # chmod 600 /etc/3proxy/3proxy.cfg

    Далее заполните созданный вами конфиг. Но перед этим определите пользовательский uid и gid через команду:

    # id proxyuser
    uid=991(proxyuser) gid=991(proxyuser) groups=991(proxyuser)

    Запомните uid и gid. Вставьте текст из примера configuration file и сохраните его с помощью специального редактора.

    Пример конфигурационного файла 3proxy.cfg от proxyuser и заданным паролем password
    users proxyuser:CL:password
    , который должен у вас получиться после его редактирования:

    # Вставляем uid и gid пользователя, которые указали ранее
    
    setgid 991
    setuid 991
    
    # Указываем правильные NS. Просмотреть их можно в /etc/resolv.conf
    
    nserver 8.8.8.8
    nserver 8.8.4.4
    
    # Используем таймауты и размер кеша для запросов DNS по умолчанию
    
    timeouts 1 5 30 60 180 1800 15 60
    nscache 65536
    
    # Указываем режим запуска как daemon
    
    daemon
    
    # Настраиваем http proxy на порте 3128
    
    proxy -p3128 -n -a -i127.0.0.1 -e81.146.57.249
    
    # В параметре -p укажите собственный порт. Предварительно проверьте, что он работает. В параметре -i укажите внутренний IP-адрес (подойдёт указанный в примере). В параметре -e укажите внешний айпи (белый IP), или не указывайте параметры -i и -e, чтобы прослушивались все доступные IP-адреса
    
    # Настраиваем socks proxy на стандартном порте 1080
    
    socks -p1080
    
    # Параметры порта и интерфейсов задаются аналогично proxy. Указываем путь к логам, формат лога и ротацию
    
    log /var/log/3proxy/3proxy.log D
    logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
    rotate 30

    После ознакомления и ввода дополнительных команд, сформируйте initialization file для systemd и настройте права доступа:

    # touch /etc/systemd/system/название прокси.service
    # chmod 664 /etc/systemd/system/ наименование прокси.service

    Затем скопируйте в него:

    [Unit]
    Description= название прокси Proxy Server
    After=network.target
    [Service]
    Type=simple
    ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
    ExecStop=/bin/kill `/usr/bin/pgrep proxyuser`
    RemainAfterExit=yes
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target

    Сохраните и обновите конфиг systemd:

    # systemctl daemon-reload

    Запустите прокси и перенесите его в Autorun:

    # systemctl start Название программы
    # systemctl enable Наименование прокси

    Откройте порты. После этого настройка 3proxy будет завершена.

    Проверка результата

    Неопытные пользователи устанавливают 3proxy далеко не с первого раза. Поэтому они инициируют проверку его работы посредством введения соответствующего кода.

    Для проверки работоспособности прокси выполните следующую команду:

    curl -I -x socks5://<пользователь>:<пароль>@<IP-адрес_сервера>:<порт_прокси> https://serverspace.ru | grep HTTP

    Если перед вами появится сообщение «Код 200», это означает, что ваш сервер работает нормально. Теперь его можно подключить через браузер или программу-клиент.

    Если же в командной строке вы увидели следующее сообщение:

    HTTP 403 Forbidden

    То это значит, что доступ к запрошенному ресурсу запрещен, или прокси не получил соответствующие права для выполнения команды.

    При появлении надписи

    HTTP 404 Not Found

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

    Возникновение этой ошибки:

    HTTP 502 Bad Gateway

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

    Появление этого сообщения об ошибке:

    HTTP 504 Gateway Timeout

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

    Ошибка 502 Bad Gateway: когда возникает и как убрать

    А возникновение следующего текста на экране:

    curl: (7) Failed to connect to ...

    говорит о том, что появилась проблема с подключением к самому proxy. Возможные причины появления этой ошибки:

    • сервер не отвечает,
    • были указаны некорректные настройки айпи или порта,
    • произошла блокировка на уровне сети.

    Внимание!

    Проверка работоспособности 3proxy важна, так как использование нерабочих прокси может навредить вашим учётным записям.

    Исправление распространённых проблем

    Пользователю нужно не только уметь настраивать и проверять работоспособность прокси-сервера, но и своевременно исправлять ошибки, связанные с его запуском.  Ниже будут рассмотрены примеры решения распространенных проблем, связанных с программой 3proxy.

    HTTP 403 Forbidden

    Устранить эту проблему можно несколькими способами. Чтобы избавиться от ошибки, выполните следующие действия.

    1. Проверьте индексный файл и убедитесь, что вы правильно ввели все команды. Если вы увидите пропущенные символы или заглавные буквы, то причина проблемы найдена. Осталось лишь исправить текст.
    2. Расширьте права доступа.
    3. Проверьте настройки безопасности или файрвола на стороне сервера. Он может блокировать доступ. Подкорректируйте параметры при необходимости.

    Что значит ошибка 403 и как её исправить

    HTTP 404 Not Found

    Чтобы решить данную проблему, сделайте следующее.

    1. Проверьте, правильно ли введен URL-адрес. Если вы заметили, что допустили ошибки при его введении, то просто исправьте адрес и повторите попытку запуска.
    2. Убедитесь, что ресурс доступен и открывается через другие прокси. Возможно, сайт был перемещён на другой домен, и вы сделали все правильно.

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

    HTTP 502 Bad Gateway

    Чтобы устранить эту ошибку:

    1. Проверьте, нормально ли работает Интернет, перезагрузите роутер.
    2. Попробуйте выполнить команду чуть позже (это может быть временный сбой со стороны сервера).
    3. Проверьте конфигурацию proxy и убедитесь, что он правильно настроен для отправки запросов.
    4. Почистите кеш и куки. Нередко ошибка 502 возникает из-за неправильно загруженных cash/cookies. Поэтому вам нужно сначала очистить данные в настройках. Еще в кеше сохраняются старые айпи-адреса. Поэтому полезно выполнить сброс данных DNS.

    Важно!

    Ваше новое доменное имя может оказаться недоступным из-за кеширования. Поэтому вам нужно дождаться обновления записей ДНС или указать в файле hosts айпи и обновленный domain.

    Для очистки кеша необходимо воспользоваться терминалом. Запустите его и введите нижеуказанную команду для выполнения операции:

    sudo service network-manager restart

    После выполнения этой команды данные будут автоматически удалены.

    Как перезагрузить сервер

    HTTP 504 Gateway Timeout

    Чтобы избавиться от этой проблемы:

    1. Проверьте и измените настройки сервера vds 3proxy. Возможно, вы выставили неверные параметры.
    2. Очистите кеш и куки через команду в терминале.
    3. Проверьте состояние соединения. Убедитесь, что Интернет работает стабильно и без сбоев (попробуйте открыть через прокси другие веб-сайты). Снизьте нагрузку на сеть, чтобы улучшить соединение.
    4. Обновите настройки брандмауэра (межсетевого экрана или МЭ).
    5. Ненадолго отключите антивирусные программы. Как и брандмауэр, они также могут блокировать доступ к веб-ресурсам.
    6. Попробуйте выполнить запрос чуть позже. Возможно, сайт перегружен или на него была совершена хакерская атака, и позднее вы сможете получить к нему доступ без особых проблем.
    7. Увеличьте таймаут ожидания на прокси-сервере, если это возможно.

    Так как причинами ошибки 504 могут стать проблемы с интернет-соединением, программным обеспечением и самим шлюзом, важно комплексно подходить к её устранению.

    Ошибка «curl: (7) Failed to connect to …»

    Как устранить данную ошибку:

    1. Проверьте правильность айпи-адреса или порта сервера в команде curl. Внесите коррективы.
    2. Просмотрите настройки файрвола или брандмауэра и измените их при необходимости.
    3. Проверьте, открыты ли порты через команду netstat и nc. Если они закрыты, и вы знаете причину, то внесите изменения в конфиг и перезапустите прокси через команду: «sudo systemctl restart 3proxy».
    4. Убедитесь, что сервер работает и доступен по указанному адресу. Введите в терминале команду ping или telnet для диагностики сетевых проблем и их последующего решения.
    5. Очистите кеш и куки, а затем повторите запуск. Нередко ошибки возникают из-за скопления ненужных копий данных. Поэтому их нужно удалять вовремя.

    На заметку

    Если в вашей сети используется корпоративный файрвол, например, Kerio, вам нужно будет создать соответствующее правило, которое при обращении на внешний айпи будет перенаправлять на внутренний с указанием порта, на котором функционирует служба 3proxy. Это позволит трафику, направленному на внешний IP-адрес, автоматически перенаправляться на ваш внутренний сервер. После создания правила обязательно проведите тестирование, чтобы убедиться, что трафик правильно перенаправляется и прокси работает. Попробуйте подключиться к вашему серверу через внешний IP и убедитесь, что все запросы корректно обрабатываются.

    Почему важно уметь настраивать прокси-сервер

    Вот основные причины, почему стоит научиться настраивать 3proxy:

    1. 3proxy обеспечивает анонимность и защиту личных данных в сети.
    2. C помощью этого программного обеспечения удобнее заниматься SEO-продвижением своей площадки в Интернете и раскруткой аккаунтов в социальных сетях.
    3. Данное ПО может действовать как промежуточное звено в вашей системе, защищая её внутренние серверы от внешних угроз и блокируя прямой доступ к важным файлам.
    4. Proxy может кешировать часто запрашиваемые данные, что снижает время загрузки страниц сайта и уменьшает нагрузку на главный сервер.
    5. Серверная программа позволяет управлять сетевым трафиком (распределять его между несколькими серверами в целях повышения производительности устройства).
    6. Proxy позволяет устанавливать политики доступа для различных групп пользователей, что снижает риски утечки информации внутри конкретной организации.
    7. С помощью данного программного обеспечения можно внедрить аутентификацию для контроля доступа к внутренним системам и важным ресурсам.
    8. Через proxy вы можете собирать данные о производительности приложений и активности пользователей в целях последующей оптимизации.
    9. Это программное обеспечение позволяет вести логи всех сетевых запросов, что помогает в последующем проведении аудита и анализе безопасности сети.

    И это ещё не всё. Благодаря пониманию того, как настраивать 3proxy, вы сможете эффективнее управлять сетевой безопасностью на предприятии. Если на вас лежит большая ответственность по обеспечению сохранности данных, обязательно воспользуйтесь данной серверной программой и изучите все нюансы её применения.

    Кто может помочь с настройки прокси-сервера

    Сегодня настройкой proxy занимаются:

    1. Системные администраторы. Эти специалисты отвечают за настройку и поддержку всех серверов и сетевой инфраструктуры на объекте.
    2. Сетевые инженеры. Данные сотрудники специализируются на проектировании и обслуживании инфраструктуры сети. Настройка прокси-сервера может быть частью их работы по оптимизации архитектуры.
    3. Программисты и другие специалисты IT-компаний. Большинство айтишников знают, как настраивать прокси, так как это тоже является частью их работы. Поэтому вы можете привлечь для выполнения задачи любого сотрудника, который уже долгое время занимается настройкой компьютерного программного обеспечения на объекте.

    Если вы не хотите тратить деньги из своего бюджета на найм, воспользуйтесь нашей инструкцией и забудьте про лишние хлопоты.

    Заключение

    Настроить простой и не ресурсоёмкий кроссплатформенный прокси 3proxy не так уж сложно. На настройку этого сервера у вас уйдет всего 20-30 минут, а проверка будет выполнена вами меньше, чем за минуту.

    Читайте в блоге:

    • Как установить и настроить веб-сервер Nginx на Ubuntu
    • Шесть способов узнать версию Nginx
    • Команда «пинг»: для чего нужна и как пингуют серверы

    Сегодня мы рассмотрим еще один бесплатный прокси сервер — 3proxy. Не смотря на то, что крайняя версия была выпущена в конце 2009 года, программа примечательна своим широким функционалом. Дистрибутивы доступны как для Windows различной разрядности так и для Linux. 3proxy очень похож на монстра всех прокси серверов squid, однако более легок в конфигурировании и прост в эксплуатации на Windows.
    Дистрибутив весит каких-то полмегабайта. 3proxy умеет работать с HTTP/HTTPS, FTP over HTTP, SOCKS, можно делать разные правила разрешений и запретов, даже скорость ограничивать персонально для выбранного пользователя. Можно настраивать формат ведения логов, что позволяет в последствии анализировать их сторонними анализаторами. При желании журнал можно вести в базу данных через ODBC. Однако, прокси сервер не умеет кэшировать трафик, что в общем то уже не так актуально в условиях безлимитных тарифов на интернет.

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

    На официальном сайте 3proxy можно найти не только дистрибутивы, но и ответы на часто задаваемые вопросы, плагины, примеры настройки.Скачиваем дистриб и распаковываем куда нужно, я это сделал в C:3proxy. На момент написания обзора крайняя версия была 0.6.1. В каталоге мы увидим три папки и еще всякие файлики. В папке bin хранится сама программа прокси сервера и всякие плагины, в папке cfg хранится пример файла конфигурации и sql скрипт для создания базы данных, если есть желание хранить журнал в БД. В папке doc справка.

    Мы идем в папку bin, там создаем файлик 3proxy.cfg. Открываем его на редактирование, вписываем туда всего три строчки:

    auth none
    log
    proxy

    Cохраняем и закрываем. Так выглядит конфиг прокси сервера в минимальном варианте.

    Первая строка говорит, что авторизация не требуется, строка log — вывод журнала прямо в окно программы, строка proxy без параметров включает сам прокси сервер на стандартном порту 3128. Запускам 3proxy.exe, настраиваем браузер на прокси сервер localhost и порт 3128 и захоим на какой-нибудь сайт.

    В окне 3proxy сразу увидим много строк, это собственно и есть журнал, который мы включили параметром log.

    Если на компьютере с 3proxy одна сетевая карта смотрит в локальную сеть, а другая в интернет, то не лишним будет принудительно указать какая из сетевых карт какая. Это делается так:

    internal 192.168.1.2
    external 10.10.54.22

    Суть следующая: internal — это сетевуха локальной сети и её IP-адрес, а external — внешняя. Если внешний интерфейс не постоянный, т.е. подключение к интернет осуществляется, например, по PPPoE, то надо писать так — external 0.0.0.0

    Не лишним будет указать IP-адреса DNS серверов провайдера и кэширование, делает это так:
    nserver ip-адрес-dns-сервера-1
    nserver ip-адрес-dns-сервера-2
    nscache 65536

    Если необходимо, можно делать статические DNS-записи, в некоторых случаях это тоже помогает что-нибудь заблокировать:
    nsrecord www.porno.com 127.0.0.1

    Далее настроим запись лог-файлов. В каталоге 3proxy создайте папку logs, а в конфиге измените строку log на следующее:
    log C:3proxylogs3proxy.log D
    rotate 30

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

    В итоге наш конфигурационный файл будет иметь следующий вид:
    auth none
    log C:3proxylogs3proxy.log D
    rotate 30
    proxyinternal 192.168.1.2
    external 10.10.54.22

    nserver ip-адрес-dns-сервера-1
    nserver ip-адрес-dns-сервера-2
    nscache 65536
    nsrecord www.porno.com 127.0.0.1

    Теперь рассмотрим способы авторизации. Сейчас у нас доступ в интернет разрешен всем, т.к. указан параметр auth none. Это можно поменять на следующие варианты: пользователей можно определять по IP-адресам их компьютеров, в этом случае в конфиг пишется auth iponly, можно по логину и паролю (которые задаем в файле 3proxy) — в этом случае пишем auth strong, а можно использовать более тесную интеграцию с Windows и разрешать доступ в интернет по признаку принадлежности пользователя к определенной группе в Windows. В последнем случае в конфиге надо написать так:
    auth windows
    authcache user,pass 900
    authcache windows
    plugin «WindowsAuthentication.dll» WindowsAuthentication «3ProxyAllowedGroup»
    и у параметра прокси добавить -n:
    proxy -n

    В Windows нужно создать группу 3ProxyAllowedGroup и затем добавлять туда пользователей. Можно поменять название группы на что-нибудь свое, изменив соответствующий параметр выше.

    В случае с auth strong логины и пароли задаются в следующем формате:
    users user1:CL:password1

    Пароли можно задавать и в зашифрованном виде, кому интересно как это делается — велкам в мануал к 3proxy.
    Следующий на очереди инструмент ограничения скорости. Синтаксис команды достаточно простой:
    bandlimin
    bitrate — скорость в битах
    userlist — список пользователей через запятую без пробела, если у вас авторизация auth strong, в противном случае ставится звездочка
    sourcelist — если у вас авторизация auth iponly, то тут указывается список IP-адресов через запятую без пробела, в других случаях ставится звездочка
    targetlist — IP-адреса назначения через запятую без пробела. если хотим просто ограничить скорость, то можно не заполнять
    targetportlist — порты адресов назначения
    commandlist — дополнительные команды
    Пример правила:
    bandlimin 240000 * 192.168.0.2,192.168.0.3

    Здесь мы ограничиваем скорость до 24 Кбит/c для двух IP-адресов локальной сети. При этом т.к. IP-адреса перечислены через запятую, то 24 Кбит будет делиться между ними.

    Чтобы на какой-то ресурс принудительно снять ограничение скорости существует следующая команда:
    nobandlimin Теперь мы дошли до самого главного — создание правил доступа. Для этого используются команды allow, deny и flush. Синтаксис имеет следующий вид:
    allow
    deny
    flush

    Команда flush используется для сброса существующего списка доступа (это необходимо для того, чтобы можно было задать различные списки доступа для различных служб). allow служит для разрешения соединения, deny — для запрета соединения. В момент установки исходящего соединения просматривается список доступа и находится первая запись, соответствующая запрошенному клиентом соединению. Если запись соответствует allow — соединение разрешается, deny — запрещается. Если список пуст, то соединение разрешается. Если список не пуст, но подходящей записи нет, то соединение запрещается. При этом:
    — список логинов пользователей через запятую
    — список сетей клиентов через запятую. Сеть задается в формате xxx.yyy.zzz.mmm/l, где l — длина маски сети (количество ненулевых байт). Например, 192.168.1.0/24 соответствует сети с маской 255.255.255.0.
    — список сетей назначения через запятую
    — список портов назначения через запятую. можно задать диапазон портов через -, например, 80,1024-65535
    — список команд, через запятую, для которых применяется правило:

    CONNECT — установить исходящее TCP соединение (например, SOCKSv4/5, POP3 proxy, и т.д.)
    BIND — разрешить входящее TCP соединение (SOCKSv5)
    UDPASSOC — создать UDP-ассоциацию (SOCKSv5)
    ICMPASSOC — создать ICMP-ассоциацию (не реализовано)
    HTTP_GET — HTTP GET запрос (HTTP proxy)
    HTTP_PUT — HTTP PUT запрос (HTTP proxy)
    HTTP_POST — HTTP POST запрос (HTTP proxy)
    HTTP_HEAD — HTTP HEAD запрос (HTTP proxy)
    HTTP_CONNECT — HTTP CONNECT запрос (HTTP proxy)
    HTTP_OTHER — другой HTTP запрос (HTTP proxy)
    HTTP — соответствует любому HTTP запросу кроме HTTP_CONNECT (HTTP proxy)
    HTTPS — тоже, что HTTP_CONNECT (HTTP proxy)
    FTP_GET — FTP get запрос
    FTP_PUT — FTP put запрос
    FTP_LIST — FTP list запрос
    FTP — соответствует любому FTP запросу
    ADMIN — доступ к интерфейсу администрирования

    задает список дней недели, 1 соответствует понедельнику, 0 или 7 — воскресенье. 1-5 означает с понедельника по пятницу (включительно). 1,3,5 задает нечетные дни недели.
    список интервалов дня в формате ЧЧ:ММ:СС-ЧЧ:ММ:СС, например, 00:00:00-08:00:00,17:00:00-24:00:00 задает нерабочее время. Примеры использования листов доступа можно найти в файле 3proxy.cfg.sample в папке cfg.

    В завершении обзора еще парочка моментов.

    Во-первых, когда вы напишете рабочий конфиг и 3proxy будет запускаться с ним без ошибок, прокси сервер можно установить в качестве службы Windows командой 3proxy.exe —install
    При этом в конфигурационном файле добавьте строку service

    Во-вторых мы рассмотрели только самые основные возможности прокси сервера. На официальном сайте есть подробная документация на русском языке по настройке большинства аспектов работы 3proxy.

    Удачи в освоении!

    Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии
  • Программы для сканирования документов в pdf windows 10
  • Как удалить встроенную учетную запись администратора на windows 10
  • Резервное копирование сервера windows 2019
  • Windows remote app ios
  • Что будет если активировать windows 10 чужим ключом