syncthing/lib/connections
Maximilian 16db6fcf3d
lib/nat, lib/upnp: IPv6 UPnP support (#9010)
This pull request allows syncthing to request an IPv6
[pinhole](https://en.wikipedia.org/wiki/Firewall_pinhole), addressing
issue #7406. This helps users who prefer to use IPv6 for hosting their
services or are forced to do so because of
[CGNAT](https://en.wikipedia.org/wiki/Carrier-grade_NAT). Otherwise,
such users would have to configure their firewall manually to allow
syncthing traffic to pass through while IPv4 users can use UPnP to take
care of network configuration already.

### Testing

I have tested this in a virtual machine setup with miniupnpd running on
the virtualized router. It successfully added an IPv6 pinhole when used
with IPv6 only, an IPv4 port mapping when used with IPv4 only and both
when dual-stack (IPv4 and IPv6) is used.

Automated tests could be added for SOAP responses from the router but
automatically testing this with a real network is likely infeasible.

### Documentation

https://docs.syncthing.net/users/firewall.html could be updated to
mention the fact that UPnP now works with IPv6, although this change is
more "behind the scenes".

---------

Co-authored-by: Simon Frei <freisim93@gmail.com>
Co-authored-by: bt90 <btom1990@googlemail.com>
Co-authored-by: André Colomb <github.com@andre.colomb.de>
2023-12-11 07:36:18 +01:00
..
mocks lib: Use counterfeiter to mock interfaces in tests (#7375) 2021-03-03 08:53:50 +01:00
registry all: Support multiple device connections (fixes #141) (#8918) 2023-09-06 12:52:01 +02:00
connections_test.go all: Correct various typos (#8870) 2023-05-09 08:54:02 +02:00
debug.go all, lib/logger: Refactor SetDebug calls (#6054) 2019-10-04 13:03:34 +02:00
deprecated.go lib/connections: Handle QUIC not being available (#7186) 2020-12-09 19:23:50 +01:00
dialqueue_test.go all: Fix various user-facing and non-user-facing typos (#8509) 2022-08-23 15:44:11 +02:00
dialqueue.go lib/config, lib/connections: Add optional connection limits (fixes #7176) (#7223) 2021-01-11 15:14:44 +01:00
lan_test.go lib/config, lib/connections: Configurable protocol priority (ref #8626) (#8868) 2023-04-16 14:54:28 +02:00
limiter_test.go all: Use new Go 1.19 atomic types (#8772) 2023-02-07 12:07:34 +01:00
limiter.go all: Use new Go 1.19 atomic types (#8772) 2023-02-07 12:07:34 +01:00
quic_dial.go all: Support multiple device connections (fixes #141) (#8918) 2023-09-06 12:52:01 +02:00
quic_listen.go Update dependencies (#9129) 2023-09-25 21:45:57 +02:00
quic_misc.go Update dependencies (#9129) 2023-09-25 21:45:57 +02:00
quic_unsupported.go lib/connections: Fix building with -tags noquic (#9009) 2023-07-28 10:08:50 +00:00
relay_dial.go all: unused parameter should be replaced by underscore (#8989) 2023-07-18 14:33:13 +00:00
relay_listen.go lib/config, lib/connections: Configurable protocol priority (ref #8626) (#8868) 2023-04-16 14:54:28 +02:00
service.go lib/connections: Make assumptions about isLAN when interface address listing fails (#9093) 2023-09-12 12:34:30 +00:00
structs.go lib/connections: Fix transport type detection for QUIC (fixes #8274) (#9114) 2023-09-20 11:23:48 +02:00
tcp_dial.go all: Support multiple device connections (fixes #141) (#8918) 2023-09-06 12:52:01 +02:00
tcp_listen.go lib/nat, lib/upnp: IPv6 UPnP support (#9010) 2023-12-11 07:36:18 +01:00
util.go lib/connections: Allow IPv6 ULA in discovery announcements (fixes #7456) (#9048) 2023-08-23 12:28:48 +02:00