0
0
mirror of https://github.com/OpenVPN/openvpn.git synced 2024-09-20 03:52:28 +02:00

Force combinationation of --socks-proxy and --proto UDP to use IPv4.

Our current socks.c code does not handle IPv6 + UDP mode (socket
negotiated with server is IPv4-only, addresses passed in the
packets are IPv4-only).  If this combination is specified, print
an explanatory message and force IPv4-only.

While at it, extend socks.c code to print address+port of auxiliary
UDP connection to SOCKS server (helps debugging).

Trac: #1221

Signed-off-by: Gert Doering <gert@greenie.muc.de>
Acked-by: Antonio Quartulli <antonio@openvpn.net>
Message-Id: <20191020150039.21516-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg18952.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
This commit is contained in:
Gert Doering 2019-10-20 17:00:39 +02:00
parent bb1ea491cd
commit 57623b4e40
2 changed files with 22 additions and 0 deletions

View File

@ -2825,6 +2825,24 @@ options_postprocess_mutate_ce(struct options *o, struct connection_entry *ce)
#endif
}
/* our socks code is not fully IPv6 enabled yet (TCP works, UDP not)
* so fall back to IPv4-only (trac #1221)
*/
if (ce->socks_proxy_server && proto_is_udp(ce->proto) && ce->af != AF_INET)
{
if (ce->af == AF_INET6)
{
msg(M_INFO, "WARNING: '--proto udp6' is not compatible with "
"'--socks-proxy' today. Forcing IPv4 mode." );
}
else
{
msg(M_INFO, "NOTICE: dual-stack mode for '--proto udp' does not "
"work correctly with '--socks-proxy' today. Forcing IPv4." );
}
ce->af = AF_INET;
}
/*
* Set MTU defaults
*/

View File

@ -414,6 +414,10 @@ recv_socks_reply(socket_descriptor_t sd,
{
memcpy(&addr->addr.in4.sin_addr, buf + 4, sizeof(addr->addr.in4.sin_addr));
memcpy(&addr->addr.in4.sin_port, buf + 8, sizeof(addr->addr.in4.sin_port));
struct gc_arena gc = gc_new();
msg(M_INFO, "SOCKS proxy wants us to send UDP to %s",
print_sockaddr(addr, &gc));
gc_free(&gc);
}