Per von Zweigbergk created GUACAMOLE-2040:
---------------------------------------------
Summary: Better documentation for PROXY_ALLOWED_IPS_REGEX in the
context of IPv6
Key: GUACAMOLE-2040
URL: https://issues.apache.org/jira/browse/GUACAMOLE-2040
Project: Guacamole
Issue Type: Improvement
Components: guacamole-manual
Reporter: Per von Zweigbergk
I have Guacamole running behind a reverse proxy that talks to Guacamole over
IPv6. For client IPs to be correctly attributed, the Remote IP valve needs to
be configured appropriately to recognize the reverse proxy's IP address.
There's a good clue for how to do that in the documentation for Installing
Guacamole with Docker:
{quote}PROXY_ALLOWED_IPS_REGEX
A regular expression matching only the IP addresses that should be trusted
to send proxy headers, corresponding to the internalProxies attribute of
RemoteIpValve. Proxy headers from other addresses will be ignored. The regular
expression must conform to the format accepted by Java’s Pattern class, which
is largely compatible with Perl.
If omitted, Tomcat’s default which matches private IPv4 and IPv6 addresses
will be used.
{quote}
However, what this does not document is a bit of an excentricity when it comes
to how IPv6 addresses are represented. Tomcat does not collapse runs of zeroes
using ::. If your reverse proxy has the IP address 2001:db8::1 for example,
Tomcat will genereate the string 2001:db8:0:0:0:0:0:1, which is what you have
to match against.
This is documented in the Tomcat documentation here:
[https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Remote_Address_Valve/Introduction]
{quote}Note: There is a caveat when using this valve with IPv6 addresses.
Format of the IP address that this valve is processing depends on the API that
was used to obtain it. If the address was obtained from Java socket using
Inet6Address class, its format will be x:x:x:x:x:x:x:x. That is, the IP address
for localhost will be 0:0:0:0:0:0:0:1 instead of the more widely used ::1.
Consult your access logs for the actual value.
{quote}
It would be good if this fact were in fact documented in the Guacamole
documentation.
In addition, the "Proxying Guacamole" manual page does not at any point mention
that these are regular expressions at all, so in this case it was good that the
Docker-specific documentation mentioned this. (But at least in this case, there
was a link to the appropriate Tomcat documentation, which is how I figured this
out to start with!)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)