Documentation update
Some checks are pending
RPM/DEB build aarch64 / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
RPM/DEB build armhf / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
RPM/DEB build x86-64 / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
Build Win32 3proxy-lite with Watcom / ${{ matrix.target }} (windows-2022) (push) Waiting to run
Build Win32 3proxy with MSVC / ${{ matrix.target }} (windows-2022) (push) Waiting to run
Build Win64 3proxy with MSVC / ${{ matrix.target }} (windows-2022) (push) Waiting to run
Build Win-arm64 3proxy with MSVC / ${{ matrix.target }} (windows-2022) (push) Waiting to run
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI Linux / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI MacOS / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI Windows / ${{ matrix.target }} (windows-2022) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (macos-15) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-24.04-arm) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (ubuntu-latest) (push) Waiting to run
C/C++ CI cmake / ${{ matrix.target }} (windows-2022) (push) Waiting to run

This commit is contained in:
Vladimir Dubrovin 2026-04-11 14:47:09 +03:00
parent a2641cb103
commit 77b0dc3397
4 changed files with 122 additions and 4 deletions

View File

@ -49,6 +49,8 @@
<li><a href="#NSCACHING">How to configure name resolution and DNS caching</a>
<li><a href="#IPV6">How to use IPv6</a>
<li><a href="#CONNBACK">How to use connect back</a>
<li><a href="#HAPROXY">How to use HAProxy PROXY protocol</a>
<li><a href="#MAXSEG">How to set TCP maximum segment size (MSS)</a>
</ul>
<li><A HREF="#CLIENT">Client configuration</A>
<li><A HREF="#ADMIN">Administering and information analysis</A>
@ -1278,6 +1280,53 @@ allowed traffic in megabytes (MB). nocountin allows you to set exclusions.
allow * * 1.1.1.1
tcppm -R0.0.0.0:1234 3128 1.1.1.1 3128</pre>
For browser settings, the proxy is host.dyndns.example.org:3128.
</p>
<li><a name="HAPROXY"><i>How to use HAProxy PROXY protocol</i></a>
<p>
3proxy supports HAProxy PROXY protocol v1 for both receiving and sending client
IP information. This is useful when 3proxy is behind a load balancer or when
passing client information to a parent proxy.
</p>
<p>
<b>Receiving PROXY protocol header:</b>
<br>Use the <code>-H</code> option to make 3proxy expect a PROXY protocol v1 header
on incoming connections. This allows 3proxy to receive the real client IP address
from HAProxy or another load balancer:
</p><pre>
proxy -H -p3128
socks -H -p1080
</pre>
<p>
The PROXY protocol header must be sent before any protocol-specific data.
</p>
<p>
<b>Sending PROXY protocol header to parent proxy:</b>
<br>Use the <code>ha</code> parent type to send a PROXY protocol v1 header to
the parent proxy. This must be the last parent in the chain:
</p><pre>
allow *
parent 1000 ha
parent 1000 socks5 parent.example.com 1080
socks
</pre>
<p>
This configuration sends the client IP information to the SOCKS5 parent proxy
via the PROXY protocol.
</p>
<li><a name="MAXSEG"><i>How to set TCP maximum segment size (MSS)</i></a>
<p>
Use the <code>maxseg</code> command to set the TCP maximum segment size (MSS)
for outgoing connections. This can be useful to work around path MTU discovery
issues or to optimize traffic for specific network conditions:
</p><pre>
maxseg 1400
proxy -p3128 -OcTCP_NODELAY,TCP_MAXSEG -OsTCP_NODELAY,TCP_MAXSEG
</pre>
<p>
The value is specified in bytes. This setting uses the TCP_MAXSEG socket option
and may not be supported on all platforms. A typical use case is to reduce MSS
to avoid fragmentation in VPN tunnels or to work around MTU issues with certain
network paths.
</p>
</ul>

View File

@ -48,6 +48,8 @@
<li><a href="#NSCACHING">Как управлять разрешением имен и кэшированием DNS</a>
<li><a href="#IPV6">Как использовать IPv6</a>
<li><a href="#CONNBACK">Как использовать connect back</a>
<li><a href="#HAPROXY">Как использовать протокол HAProxy PROXY</a>
<li><a href="#MAXSEG">Как установить максимальный размер сегмента TCP (MSS)</a>
</ul>
<li><a href="#CLIENT">Конфигурация и настройка клиентов</a>
<ul>
@ -1336,6 +1338,54 @@ openssl pkcs12 -export -out client.p12 -passout pass: \
tcppm -R0.0.0.0:1234 3128 1.1.1.1 3128</pre>
В настройках браузера указывается host.dyndns.example.org:3128.
</p>
<li><a name="HAPROXY"><i>Как использовать протокол HAProxy PROXY</i></a>
<p>
3proxy поддерживает протокол HAProxy PROXY v1 как для приёма, так и для
отправки информации об IP-адресе клиента. Это полезно, когда 3proxy находится
за балансировщиком нагрузки или при передаче информации о клиенте родительскому прокси.
</p>
<p>
<b>Приём заголовка PROXY протокола:</b>
<br>Используйте опцию <code>-H</code>, чтобы 3proxy ожидал заголовок PROXY протокола v1
на входящих соединениях. Это позволяет 3proxy получать реальный IP-адрес клиента
от HAProxy или другого балансировщика нагрузки:
</p><pre>
proxy -H -p3128
socks -H -p1080
</pre>
<p>
Заголовок PROXY протокола должен быть отправлен до любых протокольных данных.
</p>
<p>
<b>Отправка заголовка PROXY протокола родительскому прокси:</b>
<br>Используйте тип родительского прокси <code>ha</code> для отправки заголовка
PROXY протокола v1 родительскому прокси. Это должен быть последний родитель в цепочке:
</p><pre>
allow *
parent 1000 ha
parent 1000 socks5 parent.example.com 1080
socks
</pre>
<p>
Эта конфигурация отправляет информацию об IP-адресе клиента SOCKS5 родительскому
прокси через PROXY протокол.
</p>
<li><a name="MAXSEG"><i>Как установить максимальный размер сегмента TCP (MSS)</i></a>
<p>
Используйте команду <code>maxseg</code> для установки максимального размера
сегмента TCP (MSS) для исходящих соединений. Это может быть полезно для обхода
проблем с Path MTU Discovery или для оптимизации трафика в специфических
сетевых условиях:
</p><pre>
maxseg 1400
proxy -p3128 -OcTCP_NODELAY,TCP_MAXSEG -OsTCP_NODELAY,TCP_MAXSEG
</pre>
<p>
Значение указывается в байтах. Эта настройка использует опцию сокета TCP_MAXSEG
и может не поддерживаться на всех платформах. Типичный случай использования -
уменьшение MSS для избежания фрагментации в VPN туннелях или для обхода проблем
с MTU на определённых сетевых путях.
</p>
</ul>
<hr>
<li><a name="CLIENT"><b>Конфигурация клиентов</b></a>

View File

@ -176,7 +176,12 @@ accepted. <b><br>
-N</b> (for socks) External NAT address 3proxy reports to
client for BIND and UDPASSOC By default external address is
reported. It&rsquo;s only useful in the case of IP-IP NAT
(will not work for PAT) <br>
(will not work for PAT) <b><br>
-H</b> (for all services) Expect HAProxy PROXY protocol v1
header on incoming connection. This allows the proxy to
receive real client IP address from HAProxy or other load
balancer that supports the PROXY protocol. The header must
be sent before any protocol-specific data. <br>
Also, all options mentioned for <b>proxy</b>(8)
<b>socks</b>(8) <b>pop3p</b>(8) <b>tcppm</b>(8)
<b>udppm</b>(8) <b>ftppr</b>(8) <br>
@ -677,6 +682,10 @@ useful). Never use this option unless you know exactly you
need it. <br>
admin redirect request to local &acute;admin&acute; service
(with -s parameter). <br>
ha send HAProxy PROXY protocol v1 header to parent proxy.
Must be the last in the proxy chain. Useful for passing
client IP information to the parent proxy. Example: parent
1000 ha <br>
Use &quot;+&quot; proxy only with &quot;fakeresolve&quot;
option</p>

View File

@ -186,6 +186,12 @@ By default, connections to any interface are accepted.
(for socks) External NAT address 3proxy reports to client for BIND and UDPASSOC
By default external address is reported. It's only useful in the case
of IP-IP NAT (will not work for PAT)
.br
.B -H
(for all services) Expect HAProxy PROXY protocol v1 header on incoming connection.
This allows the proxy to receive real client IP address from HAProxy or other
load balancer that supports the PROXY protocol. The header must be sent before
any protocol-specific data.
.br
Also, all options mentioned for
.BR proxy (8)
@ -776,6 +782,10 @@ unless you know exactly you need it.
.br
admin redirect request to local \'admin\' service (with -s parameter).
.br
ha send HAProxy PROXY protocol v1 header to parent proxy. Must be the last
in the proxy chain. Useful for passing client IP information to the parent proxy.
Example: parent 1000 ha
.br
Use "+" proxy only with "fakeresolve" option
.br