All Projects → kayrus → Gof5

kayrus / Gof5

Licence: apache-2.0
Open Source F5 BIG-IP VPN client for Linux, MacOS, FreeBSD and Windows

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Gof5

Android Vpn Client Ics Openvpn
⭐ Create your Android VPN App by using Android Studio and publish to Google Play Store 🤖
Stars: ✭ 270 (+474.47%)
Mutual labels:  vpn, vpn-client
Docker Ipsec Vpn Server
Docker image to run an IPsec VPN server, with IPsec/L2TP, Cisco IPsec and IKEv2
Stars: ✭ 4,356 (+9168.09%)
Mutual labels:  vpn, vpn-client
Pi Hole On Google Compute Engine Free Tier With Full Tunnel And Split Tunnel Wireguard Vpn Configs
Run your own privacy-first ad blocking service at home, or in the cloud for free with Google Cloud Services.
Stars: ✭ 343 (+629.79%)
Mutual labels:  vpn, vpn-client
KidVPN
The world's smallest VPN server and client.
Stars: ✭ 63 (+34.04%)
Mutual labels:  vpn, vpn-client
Aws Vpn Server Setup
Setup your own private, secure, free* VPN on the Amazon AWS Cloud in 10 minutes. CloudFormation
Stars: ✭ 672 (+1329.79%)
Mutual labels:  vpn, vpn-client
desktop-app-daemon
Official IVPN Desktop app (service)
Stars: ✭ 34 (-27.66%)
Mutual labels:  vpn, vpn-client
Fanqiang Vpn.github.io
2021年 中国翻墙软件、VPN推荐指南,对比VPS搭建梯子、SSR机场、蓝灯、WireGuard、V2ray、老王VPN等科学上网软件与翻墙方法,中国最新科学上网翻墙VPN梯子下载推荐,稳定好用。
Stars: ✭ 390 (+729.79%)
Mutual labels:  vpn, vpn-client
desktop-app-ui2
IVPN Desktop app
Stars: ✭ 19 (-59.57%)
Mutual labels:  vpn, vpn-client
Openconnect
OpenConnect client extended to support Palo Alto Networks' GlobalProtect VPN
Stars: ✭ 654 (+1291.49%)
Mutual labels:  vpn, vpn-client
Openvpn3
OpenVPN 3 is a C++ class library that implements the functionality of an OpenVPN client, and is protocol-compatible with the OpenVPN 2.x branch.
Stars: ✭ 510 (+985.11%)
Mutual labels:  vpn, vpn-client
nordvpn
NordVpn Docker Client
Stars: ✭ 475 (+910.64%)
Mutual labels:  vpn, vpn-client
Pritunl Client Electron
Pritunl OpenVPN client
Stars: ✭ 772 (+1542.55%)
Mutual labels:  vpn, vpn-client
iosvpn.github.io
iPhone和iOS 翻墙梯子VPN推荐,2022中国苹果手机iPhone翻墙软件和科学上网避坑指南,稳定梯子推荐。
Stars: ✭ 72 (+53.19%)
Mutual labels:  vpn, vpn-client
android
Android eduVPN application
Stars: ✭ 80 (+70.21%)
Mutual labels:  vpn, vpn-client
killswitch-windows
VPN kill switch for windows.
Stars: ✭ 22 (-53.19%)
Mutual labels:  vpn, vpn-client
Macosvpn
🔧 Create macOS VPNs programmatically (L2TP & Cisco)
Stars: ✭ 348 (+640.43%)
Mutual labels:  vpn, vpn-client
autovpn2
OpenVPN VPN Gate Client for Linux, connects you to a random Free VPN in a country of your choice by country code.
Stars: ✭ 30 (-36.17%)
Mutual labels:  vpn, vpn-client
desktop-app
Official IVPN Desktop app
Stars: ✭ 141 (+200%)
Mutual labels:  vpn, vpn-client
Algo
Set up a personal VPN in the cloud
Stars: ✭ 24,275 (+51548.94%)
Mutual labels:  vpn, vpn-client
Node
Mysterium Network Node - official implementation of distributed VPN network (dVPN) protocol
Stars: ✭ 681 (+1348.94%)
Mutual labels:  vpn, vpn-client

gof5

Requirements

  • an application must be executed under a privileged user

Linux

If your Linux distribution uses systemd-resolved or NetworkManager you can run gof5 without sudo privileges. You need to adjust the binary capabilities:

$ sudo setcap cap_net_admin,cap_net_bind_service+ep /path/to/binary/gof5

For systemd-resolved you need to adjust PolicyKit Local Authority config, e.g. in Ubuntu:

$ cd gof5 # changedir to gof5 github repo
$ sudo cp org.freedesktop.resolve1.pkla /var/lib/polkit-1/localauthority/50-local.d/org.freedesktop.resolve1.pkla
$ sudo systemctl restart polkit.service

Per user capabilities

If you want to have more granular restrictions to run gof5, you can allow only particular users to run it.

First of all add an entry before the none * in a /etc/security/capability.conf file:

cap_net_admin,cap_net_bind_service %username%

where a %username% is a name of the user, which should get inherited CAP_NET_ADMIN and CAP_NET_BIND_SERVICE capabilities.

Adjust the binary flags to have inherited capabilities only:

$ sudo setcap cap_net_admin,cap_net_bind_service+i /path/to/binary/gof5

Check user's capabilities:

$ sudo -u %username% capsh --print | awk '/Current/{print $NF}'
cap_net_bind_service,cap_net_admin+i

gof5 should be executed using sudo even if you already logged in as this user:

$ sudo -u %username% /path/to/binary/gof5

MacOS

On MacOS run the command below to avoid a cannot be opened because the developer cannot be verified warning:

xattr -d com.apple.quarantine ./path/to/gof5_darwin

FreeBSD

On FreeBSD only wireguard or pppd (a wrapper around the ppp binary) drivers work.

Windows

Windows version doesn't support pppd driver.

ChromeOS

Developer mode should be enabled, since gof5 requires root privileges. The binary should be placed inside the /usr/share/oem directory. Home directory in ChromeOS doesn't allow to have executables. You need to restart shill with an option in order to allow tun interfaces creation: sudo restart shill BLOCKED_DEVICES=tun0. Use the the driver: pppd config option if you don't want to restart shill.

HOWTO

# download the latest release
$ sudo gof5 --server server --username username --password token

Alternatively you can use a session ID, obtained during the web browser authentication (in case, when you have MFA). You can find the session ID by going to the VPN host in a web browser, logging in, and running this JavaScript in Developer Tools:

document.cookie.match(/MRHSession=(.*?); /)[1]

Then specify it as an argument:

$ sudo gof5 --server server --session sessionID

When username and password are not provided, they will be asked if ~/.gof5/cookies.yaml file doesn't contain previously saved HTTPS session cookies or when the saved session is expired or explicitly terminated (--close-session).

Use --close-session flag to terminate an HTTPS VPN session on exit. Next startup will require a valid username/password.

Use --select to choose a VPN server from the list, known to a current server.

Use --profile-index to define a custom F5 VPN profile index.

CA certificate and TLS keypair

Use options below to specify custom TLS parameters:

  • --ca-cert - path to a custom CA certificate
  • --cert - path to a user TLS certificate
  • --key - path to a user TLS key

Configuration

You can define an extra ~/.gof5/config.yaml file with contents:

# DNS proxy listen address, defaults to 127.0.0.245
# In BSD defaults to 127.0.0.1
# listenDNS: 127.0.0.1
# rewrite /etc/resolv.conf instead of renaming
# Linux only, required in cases when /etc/resolv.conf cannot be renamed
rewriteResolv: false
# experimental DTLSv1.2 support
# F5 BIG-IP server should have enabled DTLSv1.2 support
dtls: false
# TLS certificate check
insecureTLS: false
# Enable IPv6
ipv6: false
# driver specifies which tunnel driver to use.
# supported values are: wireguard or pppd.
# wireguard is default.
# pppd requires a pppd or ppp (in FreeBSD) binary
driver: wireguard
# When pppd driver is used, you can specify a list of extra pppd arguments
PPPdArgs: []
# disableDNS allows to completely disable DNS handling,
# i.e. don't alter system DNS (e.g. /etc/resolv.conf) at all
disableDNS: false
# A list of DNS zones to be resolved by VPN DNS servers
# When empty, every DNS query will be resolved by VPN DNS servers
dns:
- .corp.int.
- .corp.
# for reverse DNS lookup
- .in-addr.arpa.
# A list of subnets to be routed via VPN
# When not set, the routes pushed from F5 will be used
# Use "routes: []", if you don't want gof5 to manage routes at all
routes:
- 1.2.3.4
- 1.2.3.5/32
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].