v3.35.0

passteque/gluetunv3.35.0Jun 28, 2023by qdm12

AI Summary

Focus on Wireguard improvements, Alpine upgrade, and OpenVPN 2.6 support. Deprecated OpenVPN 2.4 and introduced NordVPN Wireguard support.

Key Highlights

  • Added `WIREGUARD_MTU` environment variable
  • Added `OPENVPN_VERSION=2.6` support
  • NordVPN Wireguard support and new API endpoint
  • Alpine upgraded from 3.17 to 3.18

Breaking Changes

  • Openvpn 2.4 no longer supported
  • Control server JSON field names changed (Soft breaking)

New Features

  • Wireguard MTU defaults to 1400 instead of 1420
  • Wireguard debug logs log obfuscated keys
  • NordVPN Wireguard support added
  • OpenVPN 2.6 support added

Full Release Notes

➡️  📖 [Corresponding wiki](https://github.com/qdm12/gluetun-wiki/tree/v3.35.0)

## Features

- `WIREGUARD_MTU` enviromnent variable (#1571)
- `OPENVPN_VERSION=2.6` support
- **Soft breaking changes**:
  - Openvpn 2.4 no longer supported
  - Control server JSON field names changed
- NordVPN Wireguard support and new API endpoint (#1380)
- Wireguard MTU defaults to 1400 instead of 1420
- Wireguard debug logs log obfuscated keys
- Bump Alpine from 3.17 to 3.18
- Shadowsocks bumped from v0.4.0 to v0.5.0-rc1

## Fixes

- AirVPN: allow Airvpn as Wireguard provider
- routing: ip family match function ipv4-in-ipv6 should match ipv6
- HTTP proxy: fix httpproxy.go error message (#1596)
- Netlink:
  - `RouteList` list routes from all tables and does no longer filter by link
  - use `AddrReplace` instead of `AddrAdd`
- Wireguard: delete existing Wireguard link before adding it

## Documentation

- Readme: fix Alpine version from 3.17 to 3.18 (#1636)
- Github labels: add problem category labels: Config problem, Routing, IPv6, Port forwarding

## Maintenance

### Code

- `internal/routing`:
  - remove old assigned ip debug log
  - unexport `IPIsPrivate` as `ipIsPrivate`
  - remove unused `VPNDestinationIP`
- `internal/settings`: use `github.com/qdm12/gosettings`
  - remove now unused settings helpers
  - remove now unused helpers/messages.go
  - use helping functions: `FileExists`, `ObfuscateKey`, `BoolToYesNo`
  - use `gosettings/sources/env` functions
- `internal/netlink`:
  - IPv6 detection simplified
  - Define own types with minimal fields and separate code by OS
    - Allow to swap `github.com/vishvananda/netlink`
    - Add files tagged for each platform
    - Create non-implemented files for NOT linux
    - Allow development on non-Linux platforms
- `internal/httpproxy`: add `Test_returnRedirect` to prevent error wrap of `ErrUseLastResponse`
- `internal/settings/secrets`: add test for `readSecretFileAsStringPtr`

### Dependencies

- Bump github.com/breml/rootcerts from 0.2.10 to 0.2.11 (#1567)
- Bump github.com/stretchr/testify from 1.8.2 to 1.8.4 (#1575, #1633)
- Bump golang.org/x/text from 0.9.0 to 0.10.0 (#1681)

### CI

- CI triggers for pull requests to branches other than master
- Bump docker/build-push-action from 4.0.0 to 4.1.1 (#1684)

### Development tooling

- Update devcontainer definitions
- Set build tag as `linux` for cross development
- Specify `.vscode` recommendations
- Linting:
  - upgrade to v1.53.2
  - add linters `dupword`, `paralleltest`, `gosmopolitan`, `mirror`, `tagalign`, `zerologlint` and `gocheckcompilerdirectives`
  - add linter `musttag` and fix lint errors (change JSON fields in control server)