v3.23.0

passteque/gluetunv3.23.0Aug 23, 2021by qdm12

AI Summary

Major feature release adding full Wireguard support for Mullvad and Windscribe, including kernel space implementation. Includes the 1000th commit celebration and Alpine 3.14 upgrade.

Key Highlights

  • Full Wireguard support for Mullvad and Windscribe
  • Wireguard kernelspace or user space implementation
  • New `VPN_TYPE` variable
  • Alpine Linux upgrade to version 3.14

Breaking Changes

  • HTTP control server `/v1/openvpn` route now interacts with OpenVPN settings only (provider settings excluded)

New Features

  • Wireguard support (Mullvad, Windscribe)
  • Kernelspace support
  • `VPN_TYPE` variable

Full Release Notes

🎉 It's our 1000th commit!!! 🌟 

## Features

- Support for Wireguard (#565)
  - For Mullvad (#565)
  - For Windscribe (#565)
- Wireguard works with kernel space or user space if unavailable
- `VPN_TYPE` variable
- `WIREGUARD_PRIVATE_KEY` variable
- `WIREGUARD_ADDRESS` variable
- `WIREGUARD_PRESHARED_KEY` variable
- `WIREGUARD_PORT` variable
- `OPENVPN_INTERFACE` defaulting to `tun0`

## Bug fixes

- Change ownership of OpenVPN configuration file with `PUID` and `PGID`
- OpenVPN custom config process user gets removed
- OpenVPN custom config with custom network interface name set properly in firewall
- Sorted IP addresses for servers.json (#574)
- Only allow traffic through VPN interface when needed

## Documentation

- Update readme
  - Image size lowered to 31MB
  - Using Alpine 3.14
  - Wireguard support

## Changes

- HTTP control server `/v1/openvpn` route interacts with OpenVPN settings only (not provider settings)

## Maintenance

- `internal/vpn` package for vpn loop (OpenVPN and Wireguard)
- `internal/netlink` package used by `internal/wireguard`
- Improve `internal/configuration` code
- Read all settings first
- Context aware `collectLines` functions
- `internal/tun` package to handle tun device operations
  - TUN check verifies `Rdev` value of file
  - Inject as interface to main function
  - Add integration test
  - Clearer log message for end users if tun device does not exist
  - Remove tun file opening at the end of tun file creation
- Remove unix package (unneeded for tests)
- Do not mock unix.Mkdev (no OS operation)
- `internal/openvpn/custom` package for custom configuration with tests
- Better log when catching an OS signal
- Fix logger settings inheritance
- Keep VPN tunnel interface name in firewall state
- Upgrade from Go 1.16 to Go 1.17