Giter Club home page Giter Club logo

hide.client.linux's Introduction

Hide.me CLI VPN client for Linux

Hide.me CLI is a VPN client for use with eVenture Ltd. Hide.me VPN service based on the WireGuard protocol. Client's features include:

  • Completely standalone solution which does not depend on any external binaries or tools
  • Key exchange via RESTful requests secured with TLS 1.3
  • TLS certificate pinning of server's certificates to defeat man-in-the-middle sort of attacks
  • Dead peer detection
  • Leak protection a.k.a. kill-switch based on routing subsystem
  • Mobility/Roaming support
  • DNS management
  • IPv6 support
  • systemd notification support
  • Split tunneling
  • DNS filter (SmartGuard)

TODO:

  • Server lists and server chooser
  • Automatic server selection
  • Client certificate authentication/authorization

Build

You may clone this repository and run:

go build -o hide.me

Alternatively, download the latest build from the releases section.

Installation (Manual)

Source tree and binary releases contain simple installation and uninstallation scripts. Hide.me CLI gets installed in /opt/hide.me directory. Apart from copying hide.me files to /opt/hide.me no modifications to the system are done.
When systemd based distribution is detected the installer links a template unit file which can be used to instantiate connections.

Installation (ArchLinux Package)

You can build the package using the PKGBUILD provided in packaging/archlinux/ (requires git clone --recurse-submodules) or from https://aur.archlinux.org/packages/hide-client/

To build:

makepkg && sudo pacman -U hide-client-0.9.1-1-any.pkg.tar.zst 

Note that the ArchLinux package changes the default locations of the installed files to /usr/bin/hide.me for the binary, /etc/hide.me/accessToken.txt for the accessToken, /usr/share/hide.me/CA.pem for the certificate and /usr/lib/systemd/system/hide.me@service for the systemd unit.

Hide.me WireGuard implementation details

WireGuard is one of the most secure and simplest VPN tunneling solutions in the industry. It is easy to set up and use as long as no WireGuard public key exchange over an insecure medium (such as Internet) is required. Any sort of WireGuard public key exchange is out of the scope of the WireGuard specification.

Key exchange

The complicated task of public key exchange and secret key negotiation over an insecure medium is, usually, being handled by:

  • IKE protocol - a hard to understand, and a rather complicated part of IPSec
  • TLS protocol - a foundation for HTTPS and virtually any other secure protocol

hide.me implementation of WireGuard leverages HTTPS (TLS) for the exchange of:

  • WireGuard Public keys
  • WireGuard Shared keys
  • IP addressing information (IP addresses, DNS server addresses,gateways...)

Authentication for all operations requires the use of an Access-Token. An Access-Token is a just a binary blob which is cryptographically tied to a hide.me account.

Connection setup flow

Connection to a hide.me VPN server gets established in these steps:

  1. hide.me CLI contacts a REST endpoint, over a secured channel, requesting a public key exchange and a server-side connection setup
  2. Server authenticates the request, sets up the connection and serves the IP addressing information (including the WireGuard endpoint address). Server issues a randomized Session-Token which may be used to disconnect this particular session
  3. hide.me CLI sets up a WireGuard peer according to the server's instruction and starts the DPD check loop

Leak protection

In contrast with many other solutions, hide.me CLI does not use any sort of Linux firewalling technology (IPTables, NFTables or eBPF). Instead of relying on Linux'es IP filtering frameworks, hide.me CLI selectively routes traffic by setting up a special routing table and a set of routing policy database rules. Blackhole routes in the aforementioned routing table drop all traffic unless it meets one of the following conditions:

  • Traffic is local ( loopback interfaces, local broadcasts and IPv6 link-local multicast )
  • DHCPv4 traffic
  • Traffic is explicitly allowed by the means of the Split-tunneling option
  • Traffic is about to be tunneled

This mode of operation makes it possible for the users to establish their own firewalling policies with which hide.me CLI won't interfere.

Usage

Usage instructions may be printed by running hide.me CLI without any parameters.

Usage:
  ./hide.me [options...] <command> [host]
...

Commands

hide.me CLI user interface is quite simple. There are just three commands available:

command:
  token - request an Access-Token (required for connect)
  connect - connect to a vpn server
  conf - generate a configuration file to be used with the -c option
  categories - fetch and dump filtering category list
  service - run in remotely controlled service mode

In order to connect to a VPN server an Access-Token must be requested from a VPN server. An Access-Token request is issued by the token command. An Access-Token issued by any server may be used, for authentication purposes, with any other hide.me VPN server. When a server issues an Access-Token that token must be stored in a file. Default filename for an Access-Token is "accessToken.txt".

Once an Access-Token is in place it may be used for connect requests. Stale access tokens get updated automatically.

hide.me CLI does not necessarily have to be invoked with a bunch of command line parameters. Instead, a YAML formatted configuration file may be used to specify all the options. To generate such a configuration file the conf command may be used.

For the purposes of DNS filtering (SmartGuard), a list of filtering categories can be obtained with categories command

hide.me CLI can be run in service mode. When started in service mode, hide.me CLI just exposes a REST interface for control. The controller is responsible for configuring connections, activation of the kill-switch or any other operation. REST interface listen address is configurable through -caddr option.

Note that there are a few options which are configurable only through the configuration file. Such options are:

  • Password - DANGEROUS, do not use this option unless you're aware of the security implications
  • ConnectTimeout
  • AccessTokenUpdateDelay
host:
  fqdn, short name or an IP address of a hide.me server
  Required when the configuration file does not contain it

The hostname of a hide.me REST endpoint may be specified as a fully qualified domain name (nl.hide.me), short name (nl) or an IP address. There's no guarantee that the REST endpoint will match a WireGuard endpoint.

Options

  -4    Use IPv4 tunneling only

Limit all IP protocol operations to IPv4. Even though the server will provide IPv4 and IPv6 addressing only IPv4 addresses, IPv4 rules and IPv4 routes get installed. Leak protection/kill-switch works for IPv4 traffic only. IPv6 traffic flow remains unsecured.

WARNING: This option degrades security and should be used only when it's safe to do so, e.g. when the client machine has it's IPv6 stack disabled. Please, do not use it otherwise because IPv6 leaks may happen.

  -6   	Use IPv6 tunneling only

Limit all IP protocol operations to IPv6. Even though the server will provide IPv4 and IPv6 addressing only IPv6 addresses, IPv6 rules and IPv6 routes get installed. Leak protection/kill-switch works for IPv6 traffic only. IPv4 traffic flow remains unsecured.

WARNING: This option degrades security and should not be used unless the client wishes to tunnel the IPv6 traffic only.

  -b filename
    	resolv.conf backup filename (default "")

Hide.me CLI keeps a backup of /etc/resolv.conf in memory. In addition to that backup hide.me CLI may back up /etc/resolv.conf to a file specified by this option.

  -c filename
    	Configuration filename

Use a configuration file named "filename".

  -ca string
    	CA certificate bundle (default "CA.pem")

During TLS negotiation the VPN server's certificate needs to be verified. This option makes it possible to specify an alternate CA certificate bundle file.

  -caddr address
    	Control interface listen address (default "@hide.me")

Set the service mode control interface listen address. hide.me CLI, by default, listens on an abstract UNIX socket hide.me

  -ccert certificate
    	Control interface certificate file

Set the service mode control interface X509 certificate in PEM format

  -ckey key
    	Control interface key file

Set the service mode control interface private key in PEM format

  -d DNS servers
    	comma separated list of DNS servers used for client requests (default "209.250.251.37:53,217.182.206.81:53")

By default, Hide.me CLI uses hide.me operated DNS servers to resolve VPN server names when requesting a token or during connect requests. The set of DNS servers used for these purposes may be customized with this option.

  -dpd duration
    	DPD timeout (default 1m0s)

In order to detect if a connection has stalled, usually due to networking issues, hide.me CLI periodically checks the connection state. The checking period can be changed with this option, but can't be higher than a minute.

  -i interface
    	network interface name (default "vpn")

Use this option to specify the name of the networking interface to create or use.

  -l port
    	listen port

Specify a listen port for encrypted WireGuard traffic.

  -m mark
    	firewall mark for wireguard traffic (default 0 - no packet marks)

Set the firewall mark the WireGuard kernel module will mark its packets with.

  -p port
    	remote port (default 432)

Remote REST endpoint port may be changed with this option.

  -pf
    	enable dynamic port-forwarding technologies (uPnP and NAT-PMP)

Dynamic port-forwarding is, by default, disabled. Use this option to turn it on for a particular connection attempt. Alternatively, port-forwarding may be enabled by adding a @pf suffix to the username when requesting a token. Such tokens activate port-forwarding on each connection attempt, and you should not use this option when using them.

  -r table
    	routing table to use (default 55555)

Set the routing table to use for general traffic and leak protection mechanism.

  -R priority
    	RPDB rule priority (default 10)

Set the priority of installed RPDB rules. Hide.me CLI takes advantage of policy routing by installing a RPDB rule (one per IP protocol) in order to drive traffic to a chosen routing table and ensure IP leak protection.

  -s networks
    	comma separated list of networks (CIDRs) for which to bypass the VPN

List of split-tunneled networks, i.e. the networks for which the traffic should not be tunneled over the VPN.

  -t string
    	access token filename (default "accessToken.txt")

Name of the file which contains an Access-Token.

  -u username
    	hide.me username

Set hide.me username.

DNS Filter (SmartGuard)

Hide.me CLI supports DNS based filtering (SmartGuard). The following options control DNS filtering:

  -forceDns
    	force tunneled DNS handling on hide.me servers

Activate DNS redirection on a Hide.me VPN server such that each UDP or TCP DNS request will be handled by that Hide.me VPN server

  -whitelist dns names
    	comma separated list of allowed dns names

DNS suffixes which will bypass any filtering engine ( wildcards accepted )

  -blacklist dns names
    	comma separated list of filtered dns names

DNS names which will be filtered

  -noAds
    	filter ads

Activates SmartGuard based ad filtering

  -noCategories categories
    	comma separated list of filtered content categories

Activates fine-grained SmartGuard filtering. Fetch category list with categories command

  -noIllegal kind
    	filter illegal kind (content, warez, spyware, copyright)

Activates coarse level filtering of illegal content, warez, spyware and copyrighted material

  -noMalicious
    	filter malicious destinations

Activates filtering of malicious hosts, websites or domains

  -noMalware
    	filter malware

Activates a malware filter. Any site hosting or distributing malware should be filtered out

  -noRisk level
    	filter content according to risk level (possible, medium, high)

Activates a risk filter

  -noTrackers
    	filter trackers

Activates a tracking filter

  -pg age
    	apply a parental guidance style age filter (12, 18)

Activates a parental guidance style filter according to given age limit. Inappropriate content will be filtered out

  -safeSearch
    	force safe search with search engines

Enforces SafeSearch mode with supported search engines (Google, Bing)

Integration with systemd

Hide.me CLI can be used standalone or as a systemd service. Using hide.me CLI as a systemd service allows you to take advantage of systemd's dependancy resolution, monitoring and various hardening features.
The installer script links a template unit file [email protected] for you or you may manually link the template unit file by running:

systemctl link hide.me@service

To manage connections the following commands may be used:

Operation Command
Create a connection systemctl enable hide.me@SERVER
Start a connection systemctl start hide.me@SERVER
Stop a connection systemctl stop hide.me@SERVER
Remove a connection systemctl disable hide.me@SERVER

SERVER is a server name, group name or an IP address.

Additional commandline options to the hide.me connect command run by the systemd service can be put into the OPTIONS= configuration variable in /opt/hide.me/config.

Service startup is considered successful when a connection to hide.me server gets completely established.

Embedded device alternative to the binary CLI

Hide.me CLI is the best choice for desktop PCs, but may be inappropriate for routers or embedded devices. For those small devices we developed a set of ash scripts (in the scripts/ directory):

  1. hide.me-accessToken.ash obtains a Token (use it whenever you need to update the token, e.g., after a subscription renewal or a password change)
  2. hide.me-connect.ash connects to a VPN server of choice and sets up the wireguard interface. Routing is handled in the same way as OpenVPN handles it with it's redirect-gateway def1 setting. DNS is installed by backing up and overwriting resolv.conf
  3. hide.me-disconnect.ash disconnects from the VPN server, removes routes and restores the DNS

In the header of each script you'll find usage examples.

The functionality of those scripts is basic, i.e. they'll get you connected/disconnected, but won't monitor your connection. Such a limited feature set might be just enough to use hide.me with routers which have their own monitoring and fail-over techniques.
Each script has been verified on OpenWRT based routers with the latest stable firmware (19.07.7) and wireguard support. Prerequisites, which should be opkg-installed, are:

  1. curl issues REST requests
  2. jq parses JSON

Contributing

If you want to contribute to this project, please read the contribution guide.

hide.client.linux's People

Contributors

dependabot[bot] avatar ljrk0 avatar m33m33 avatar pcn avatar tcohar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hide.client.linux's Issues

Error when connecting on Docker - /etc/resolv.conf issue

Originally posted on #1 by @alturismo

thanks you very much, quick test failed here now due

Link: [ERR] Rename of /etc/resolv.conf to /etc/resolv.conf.backup.hide.me failed, device or resource busy


./hide.client.linux -4 -u username -P password-s 192.168.1.0/24 connect de.hideservers.net &
~/.xteve/_hideme # Link: Generated a new wireguard private key
Link: Wireguard interface vpn activated
Link: Wireguard device vpn configured
Link: Split tunnel rule for 192.168.1.0/24 added
Link: IPv4 DHCP VPN bypass RPDB rule added
Link: IPv4 RPDB rule for non mark 55555 marked traffic added
Link: Loopback route 0.0.0.0/0 dev lo mtu 0 table 55555 added
Name: Resolved de.hideservers.net to 91.199.118.74
Main: Connecting to 91.199.118.74:432
Pins: Hide.Me Server CA #1 pin OK
Pins: Hide.Me Root CA pin OK
Main: Connected to 91.199.118.74:432
Rest: Remote UDP endpoint is 91.199.118.74:432
Rest: Keepalive is 20 seconds
Rest: Assigned IPs are 10.129.205.140, fd00:6968:6564:e6:c11e:e727:7c05:a5cc
Rest: Gateway IPs are 10.129.204.1, fd00:6968:6564:e6::1
Rest: DNS servers are 10.129.204.1, fd00:6968:6564:e6::1
Link: Interface vpn MTU set to 1392
Link: Peer 91.199.118.74:432 added
Link: Address 10.129.205.140 added to interface vpn
Link: Gateway route 10.129.204.1/32 dev vpn mtu 1392 table 55555 added
Link: Route 0.0.0.0/1 via 10.129.204.1 dev vpn mtu 1392 table 55555 added
Link: Route 128.0.0.0/1 via 10.129.204.1 dev vpn mtu 1392 table 55555 added
Link: [ERR] Rename of /etc/resolv.conf to /etc/resolv.conf.backup.hide.me failed, device or resource busy
Link: Received 0 bytes, transmitted 148 bytes
Link: Route 0.0.0.0/1 via 10.129.204.1 dev vpn mtu 1392 table 55555 removed
Link: Route 128.0.0.0/1 via 10.129.204.1 dev vpn mtu 1392 table 55555 removed
Link: Gateway route 10.129.204.1/32 dev vpn mtu 1392 table 55555 removed
Link: 10.129.205.140 removed from interface vpn
Link: Peer 91.199.118.74:432 removed
Link: Down
Main: [ERR] Link up failed, rename /etc/resolv.conf /etc/resolv.conf.backup.hide.me: device or resource busy
Main: [ERR] Connection setup/teardown failed, traffic blocked, waiting for a termination signal

after quick look, looks like its due mv resolv.conf ... which is inside the docker enviroment ...

may a way to disable and write manually the dns entries ?

Originally posted by @alturismo in #1 (comment)

Ubuntu 20.04 - resolver-crash

Hello,

Sometimes the resolver crashes under Ubuntu 20.04, everything continues to work as usual but there is still an error message in the desktop from time to time.

I have this only since I use Hide CLI, probably there is some error.

I will post the error message again as soon as it appears.

Format for the /opt/hide.me/config

I am trying to use systemctl and pass the -s 192.168.1.0/24 network

my config file is:

OPTIONS=-s 192.168.1.0/24

but each time I restart I lose the ability to ping local machines.

I have tried
OPTIONS="-s 192.168.1.0/24"
OPTIONS=-s 192.168.1.0/24
OPTIONS=-'s 192.168.1.0/24'
OPTIONS=s 192.168.1.0/24

Any help on the syntax would be appreciated.

Failed to connect when IPv6 is disabled

Thanks for creating a FOSS tool for Hide.me vpn. Recently I found an issue that I thought I should address. It connects just fine when I connect with IPv6 enabled. But when I have ipv6.disable=1 added as kernel parameter (and as such the file /proc/sys/net/ipv6/conf/all/disable_ipv6 doesn't exist due to that option being set) it fails to connect with this message:

...
...
Link: [ERR] IPv6 RPDB rule addition failed, address family not supported by protocol
Main: [ERR] RPDB rules failed, address family not supported by protocol
Link: IPv4 DHCP VPN bypass RPDB rule removed
Link: IPv4 RPDB rule removed
Link: Interface vpn deactivated

I read somewhere it is a good security practice to disable IPv6. So I have it disabled on some machines. It would be great if it could connect without IPv6 available.

Synology DSM 7.0 | Wireguard open failed, operation not supported

I try to start the client as a container on a synology.
But I get only the following looping messages.

/config/hideme.yaml exist
/config/CA.pem exist
/config/accessToken.txt exist
Link: Generated a new wireguard private key
Main: [ERR] Wireguard open failed, operation not supported

Any idea what could be meant by Wireguard open failed, operation not supported

When I reboot my router, the vpn will not reconnect

From time to time I reboot my router (crappy ISP/router), it takes 3 minutes to have internet again, and this client will give up reconnecting.

My workaround/fix at hide.me.go

			fmt.Println( "Main: [ERR] Connect failed,", connectErr ); err = connectErr
			// break
			continue connectLoop
		}
		fmt.Println( "Main: Connected to", client.Remote() )
		connectResponse.Print()

Please provide a compressed archive of all of the .ovpn files for endpoints

I have a linux script that randomly selects an endpoint to establish a vpn connection. It requires a folder with the openvpn .ovpn files. You publish these on your website, so it's not secret. It would be a great convenience to customers like me that prefer to use their own method of connecting to hide.me servers.

Password option should not be displayed on command line usage

When running the program without any arguments, it displays the following text:

$ /opt/hide.me/hide.me

Usage:
  /opt/hide.me/hide.me [options...] <command> [host]

command:
  token - request an Access-Token (required for connect)
  connect - connect to a vpn server
  conf - generate a configuration file to be used with the -c option

host:
  fqdn, short name or an IP address of a hide.me server
  Required when the configuration file does not contain it

options:
  -4	Use IPv4 tunneling only
  -6	Use IPv6 tunneling only
  -P password
    	hide.me password
  -R priority
    	RPDB rule priority (default 10)
  -b filename
    	resolv.conf backup filename (default "/etc/resolv.conf.backup.hide.me")
  -c filename
    	Configuration filename
  -ca string
    	CA certificate bundle (default "CA.pem")
  -d DNS servers
    	comma separated list of DNS servers used for client requests (default "209.250.251.37:53,217.182.206.81:53")
  -dpd duration
    	DPD timeout (default 1m0s)
  -i interface
    	network interface name (default "vpn")
  -k	enable/disable leak protection a.k.a. kill-switch (default true)
  -l port
    	listen port
  -m mark
    	firewall mark for wireguard and hide.me client originated traffic
  -p port
    	remote port (default 432)
  -r table
    	routing table to use (default 55555)
  -s networks
    	comma separated list of networks (CIDRs) for which to bypass the VPN
  -t string
    	access token filename (default "accessToken.txt")
  -u username
    	hide.me username

But password is not available as a command line option

options:
  -P password
    	hide.me password

The only reference that I can find is

flag.String( "P", conf.Client.Password, "hide.me `password`" )

But I am not well versed in GO to be able to omit that from the command-line usage - maybe removing the backticks is sufficient but I cannot find documentation supporting it.

Anyway, this command-line usage display confused me so it should be removed in case it does so to others.

-s allow interface name

Hi,

can you consider a slight modification to the client to let the user pass the interface name to the -s argument of the cli ?

thanks

Systemd Service File Dependency on /run/systemd/resolve Causes Failure to Start

Description

After installing the latest version (hide.me-linux-amd64-0.9.9.tar.gz ) of the Hide.me CLI VPN client on Manjaro Linux, the systemd service for the VPN connection fails to start due to a missing /run/systemd/resolve directory, which results in a Failed to set up mount namespacing error.

Steps to Reproduce

  1. Install Hide.me CLI VPN client version 0.9.9 on Manjaro Linux.
  2. Enable and start the systemd service for a VPN connection.
  3. Observe the service failing to start with a status=226/NAMESPACE error.

Workaround Implemented

I modified "/opt/hide.me/[email protected]" by removing the reference to /run/systemd/resolve in the ReadWritePaths directive. This allowed the service to start successfully.

Suggested Fix

It might be beneficial to evaluate the necessity of referencing /run/systemd/resolve in the service file, considering it may not exist on all systems or when systemd-resolved is not in use. An alternative approach or configuration flexibility would help accommodate various system setups.

Additional Context

This problem seems to have been addressed in a previous commit (3795591), but the issue persists or has resurfaced under certain conditions.

Thank you for looking into this matter.
Thomas

scripts uses bash idioms in ash script

the scripts in scripts directory use a lot of bash idioms that will only run in bash and not ash or dash.

Please use bash in shellbang instead.

Some example:

  • if [[ ]] is bash only use if [ ] instead
  • accessToken=${accessToken//"\""/} string replacement is not available

Possible bug:

line 22 of hideme-accesToken.ash:
if [[ $? == "22" ]];

You compare the output result which is an integer to a string. that will always be false.
Use something like
if [ $? -eq 22 ]
of better if [ $? -ne 0 ]

No option to connect to streaming optimized servers

Both the Windows and the Android app have options to connect to streaming optimized servers (e.g. Netflix), however an option like this is missing from this client and what servers are used by the others are not documented anywhere.

Refresh token automatically

Every month (coincidentally this is when my subscription expires, but the token may always have an expiry of a month), my access token expires and I lose the ability to connect to the internet, unless I disable the VPN via systemctl and manually refresh it. This isn't a great user experience. This should refresh automatically.

Can't access local sites (192.168.0.x)

Thanks for the client for linux with killswitch built in. It made my life so much easier.

Although I faced an issue recently. 192.168.0.1 is my router admin and 192.168.0.180 is a local machine that I have some important sites that I seldom need visiting. I can visit them just fine when not connected with the client. But when connected, I can't access them.

I found in the readme that DHCP traffic is allowed, but I can't access these local IPs. Is this expected?

I don't mind if local site access is disabled by default (for security I guess.) But an option would be nice to allow access to them when I want to. Is split tunnelling going to help me? If so, how can I allow these local IPs to not go over the VPN?

It doesn't work

Hello.
Ubuntu 16.04 32 bit, I compiled hide.me client myself using go.
I have an account at member.hide.me and activated Free plan.
How can I get server address? free-unlimited.hideservers.net is not accepted.

Linux: Cannot Connect. File exists?

I have a system with IPv4 only. I generated the token and then run the following

hide.me -4 connect free-fi.hideservers.net


Link: Generated a new wireguard private key
Link: Wireguard interface vpn activated
Link: Wireguard device vpn configured
Link: DHCP bypass throw route 255.255.255.255/32 mtu 0 table 55555 added
Link: [ERR] Loopback route 0.0.0.0/0 dev lo mtu 0 table 55555 addition failed: file exists
Init: [ERR] Addition of loopback routes failed: file exists
Link: DHCP bypass throw route 255.255.255.255/32 mtu 0 table 55555 deleted
Link: Interface vpn deactivated
Main: [ERR] Connect init failed file exists

I'm not exactly sure how to proceed.

Thanks!

unable to connect: permission denied

I installed this inside a docker compose container (using the ubuntu image) using the official command:

curl -L https://hide.me/download/linux-amd64 | tar -xz && sudo ./install.sh

I wrote username and password of my free hide.me account, and then tried to connect:

alias hide.me=/opt/hide.me/hide.me
hide.me token free-ch.hideservers.net
hide.me connect free-ch.hideservers.net

and this is the output:

Name: Resolved free-ch.hideservers.net to 185.195.71.215
Pins: Hide.Me Server CA #1 pin OK
Pins: Hide.Me Root CA pin OK
AcTo: Access-Token stored in accessToken.txt
root@8e9322445869:/home/data# hideme connect free-ch.hideservers.net
Link: Generated a new wireguard private key
Link: Wireguard interface vpn activated
Link: Wireguard device vpn configured
Link: DHCP bypass throw route 255.255.255.255/32 mtu 0 table 55555 added
Link: Loopback route 0.0.0.0/0 dev lo mtu 0 table 55555 added
Link: Loopback route ::/0 dev lo mtu 0 table 55555 added
Link: IPv4 RPDB rule added
Link: IPv6 RPDB rule added
Init: Done
Conn: Connecting in 0s
Name: Resolved free-ch.hideservers.net to 185.195.71.212
Conn: Connecting to 185.195.71.212
Pins: Hide.Me Server CA #1 pin OK
Pins: Hide.Me Root CA pin OK
Rest: Remote UDP endpoint is 185.195.71.212:432
Rest: Keepalive is 20 seconds
Rest: Assigned IPs are 10.134.157.98, fd00:6968:6564:34e::a86:9d62
Rest: Gateway IPs are 10.134.156.1, fd00:6968:6564:34e::1
Rest: DNS servers are 10.134.156.1, fd00:6968:6564:34e::1
Link: Interface vpn MTU set to 1392
Link: Peer 185.195.71.212:432 added
Link: Address 10.134.157.98 added to interface vpn
Link: [ERR] Addition of fd00:6968:6564:34e::a86:9d62 to interface vpn failed: permission denied
Link: Received 0 bytes, transmitted 148 bytes
Link: Peer 185.195.71.212:432 removed
Link: Down
Link: Received 0 bytes, transmitted 0 bytes
Link: Peer 185.195.71.212:432 removed
Link: Down
Conn: [ERR] Link up failed: permission denied
Pins: Hide.Me Server CA #1 pin OK
Pins: Hide.Me Root CA pin OK
Conn: Disconnected
Conn: Connecting in 30s

I tried other server but it's always the same. is there something wrong in my configuration?

ipv6 failure

hi,

the setup of the net interface using ipv6 address failed because the system refuses to run ipv6.

$ sudo cat /etc/sysctl.conf 
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

It outputs,

mars 16 19:24:34 Host-001 hide.me[97921]: Link: [ERR] Addition of fd00:****** to interface vpn failed, permission denied
...
mars 16 19:24:39 *** hide.me[97921]: Main: [ERR] Connection failed due to bad HTTP status
mars 16 19:24:39 *** hide.me[97921]: Main: [ERR] Connection setup/teardown failed, traffic blocked, waiting for a termination signal

Passing -4 option solves the issue.

It would have been smooth upon startup if the program had a default behavior to try acquire resources over ipv6, then, if it failed, try using ipv4, then, if it failed, terminates operation. Unless, one of -6/-4 option is provided to the cli arguments.

thanks

Failure to connect: DNS lookup error

Hi,
I am testing this cli application from the AUR repo for the first time. I manage to get an access token, and firewall is off. When I try connect, it seems to be working, but, right after the program adds the rules, I get this error:

Resolve: [ERR] -u.hideservers.net lookup failed, lookup -u.hideservers.net: no such host

Any idea what's wrong?

rpi3b unusable because high cpu usage

so I tried to use the hide.me client on a rpi3b (armv7h) running archlinuxarm
Both with the AUR package, or the binary package provided on github releases.

As soon, as I start the hide.me VPN, I am unable to use my ssh connection, even though I added "-s 192.168.44.0/24" in OPTIONS in config file.

More over, when I am finally able to get a glance at the terminal (it is repsonsive for 1 second every minute), it seems to be that hide.me is using all the cpu.

I already run an openvpn client on it and this was not a problem. Lately, I was even using a wireguard client, and the cpu usage was even lower.

I don't know what is wrong

Unable to Disconnect when closing the terminal

Greetings,

First of all, thanks a lot for this client, it's awesome. I am having the situation that when I close the terminal (without killing the process), the client keeps running. Is there a way to finish the process after closing the terminal?

Steps to reproduce:

  1. Execute the client from a terminal.
  2. Test connection in hide.me/check, it should indicate you are connected to the VPN.
  3. Close the terminal while the process is running.
  4. Test connection in hide.me/check, it indicates you are connected to the VPN.

Expected behavior:
The client ends when closing the terminal.

Current behavior:
Client keeps running after the terminal is closed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.