VPN: Difference between revisions

From Grid5000
Jump to navigation Jump to search
(minor edits because some of the dialog boxes have changed)
 
(23 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Portal|User}}
{{Portal|User}}
 
{{Portal|Tutorial}}
{{TutorialHeader}}
Grid'5000 Virtual Private Network (VPN) allows to connect your workstation or personal computer to Grid'5000 network, while preserving security.  
Grid'5000 Virtual Private Network (VPN) allows to connect your workstation or personal computer to Grid'5000 network, while preserving security.  


Line 6: Line 7:


Grid'5000 VPN is based on [http://openvpn.net OpenVPN].
Grid'5000 VPN is based on [http://openvpn.net OpenVPN].
{{Warning|text=There is no performance guarantee on the VPN infrastructure. It's fine to use the VPN to access and configure your nodes, but avoid running performance-sensitive experiments over the VPN: the results would be unreliable and not reproducible. If you need to access your nodes directly from the Internet, we provide a [[Reconfigurable_Firewall|reconfigurable IPv6 firewall]] service.}}


== Getting started ==
== Getting started ==
Line 11: Line 14:
To start using Grid'5000 VPN, you first need to get a certificate:
To start using Grid'5000 VPN, you first need to get a certificate:


Go to your [https://api.grid5000.fr/ui/account account management page], select "My account" and the "VPN" tab on the left, then click "Create new certificate". To generate a new certificate click on "Generate from Passphrase" (recommended). If you generated your certificate and private key your self, select "Sign public key".
* Go to your [https://api.grid5000.fr/ui/account account management page], in the "My account" tab and go to "VPN Certificates" on the left.
* If you do not have a certificate yet, click on "Create new certificate".
** To generate a new certificate click on "Create with Passphrase" (recommended).
** If you already generated a certificate by yourself, click on "Create from public key", paste your public key in the text field and finally "Sign".
* Your certificate appears in the list. Click on "Zip file" to download an archive which includes the certificates and an OpenVPN configuration file.
* Extract the archive content in your workstation. Please choose a secure place to store those files: an attacker could use them to steal your identity in Grid'5000.
 
== Configure your VPN connection ==
The Grid'5000 VPN settings are the following:
* '''Gateway:''' vpn.grid5000.fr
* '''Gateway port:''' UDP 1194 or TCP 443
* '''Device type:''' tun (Layer 3 VPN)
* '''Authentication type:''' Certificate (TLS)
* '''CA certificate:''' cavpn.crt
* '''User certificate:''' <username>.crt
* '''User private key:''' <username>.key
* '''Additional TLS authentication file:''' ta.key (no direction)
* '''Grid'5000 VPN routes:''' 172.16.0.0/16, 10.0.0.0/8 and 172.20.0.0/16 (use Grid'5000 VPN for these networks only)
* '''Grid'5000 VPN DNS:''' 172.20.255.254


Your certificate will appear on the "VPN" tab. Click on "Zip file" to download an archive which includes the certificates and the configuration file needed to establish the VPN connexion.
Depending on your operation system or work environement, the configuration and start of the Grid'5000 VPN varies. See below.


You must extract the archive content on your workstation. Please choose a secure place to store those files: an attacker could use them to steal your identity in Grid'5000.
=== Linux (using network-manager) ===
You can connect to the Grid'5000 VPN using "Network Manager", for instance using the Network manager applet in the status bar of a gnome graphical environment (you may require to install a package such as "network-manager-openvpn-gnome").


== Launch a connection ==
To configure the Grid'5000 VPN in Network Manager, go the the "Network Settings" application, add a Network Connection and select "VPN". Choose "OpenVPN" and set the following parameters:
* '''Name:''' as you wish, e.g. ''Grid'5000''
* '''Gateway:''' choose ''vpn.grid5000.fr''
* '''Type:''' choose ''Certificates (TLS)''
* '''User Certificate:''' use your ''<username>.crt'' file
* '''CA Certificate:''' your ''cavpn.crt'' file
* '''Private Key:''' use your ''<username>.key'' file
* '''Private Key Password:''' enter the password needed to unlock your private key


The procedure to start a connection to Grid'5000 VPN depends on your Operating System :
Then, click on the '''Advanced''' button:
* Select '''Configure type of network device''' (also called '''Set virtual device type''') to use '''TUN'''.
* If you prefer to use TCP (recommended if your network is filtered, and UDP does not work), select ''Use TCP'' and under ''Use a specific port'' (also called ''Use custom gateway port''), choose ''443''.
* In the '''TLS Authentication''' tab, enable '''Use additional TLS authentication''' with mode '''TLS-Auth''' and set the ''ta.key'' file as '''Key File'''.


=== Windows ===
Finally, go to the '''IPv4''' tab:
If you have not done it yet, [https://openvpn.net/index.php/open-source/downloads.html download and install OpenVPN for Windows] (default installation options should be fine).
* Click the '''Routes...''' button
* Check the '''Use this connection only for resources on its network'''


Then, from the folder where you extracted the ZIP archive, execute ''Grid'5000 VPN for Windows'' '''as an administrator''' (on most Windows system, you need to right click on ''Grid'5000 VPN for Windows'' file and select "Run as administrator"). This should start a command shell with the program requesting your certificate password. The three common problems are:
You're done. You can connect to the VPN from Network Manager applet usually present in some corner of your screen. If you need to troubleshoot potential problems, diagnostics can be printed with '''sudo journalctl -fu NetworkManager'''
* The shell closes immediatly. You might have mistyped your certificate password: retry, or retry in the context of a power shell to diagnose the problem (see next item)
* If the shell closes after entering your password, you are probably experiencing a local firewall issue. You'll need to start from the power shell as admin (invite de commande (admin) in french)
** right click on the start menu, and run shell (as admin). Type <code>cd </code> (notice the trailing space)
** open the windows file explorer in the folder you extracted the  ZIP archive, right click on the folder icon at the left of the location bar, and copy the location
** go back to the shell, and right click to paste the location you just copied. Type enter
** Type <code>dir</code> : this should give you the list of files extracted from the archive
** Type <code>"Grid'5000_VPN_for_Windows.bat"</code>. This should require your certificate password, and then trigger alerts if your firewall needs configured to allow that program to access the internet.
* If the program stays frozen on <code>Tue Oct 13 10:02:37 2015 UDPv4 link remote: [AF_INET]194.254.60.14:1194</code>, your local site is probably blocking UDP access to the VPN. You'll need to edit a file (with notepad++ or an other editor that presents more than one line when opening the file for edition)
** ''Grid_5000_VPN''. Here, you should comment the second line (add a #) and uncomment the fourth (remove #)


{{Note|text=Network manager provides an import function which unfortunately does not work well with the configuration we provide in the zip file. Please configure your VPN as described above instead of using that import function.}}


=== MAC OS X ===
=== Linux (using command line) ===
On OS X systems, we recommend downloading and installing [https://tunnelblick.net/ Tunnelblick] as OpenVPN client.
From the directory where you extracted the ZIP archive, you only have to execute this as root:


Then, from the folder where you extracted the ZIP archive, double click on ''Grid5000_VPN.ovpn'' file to install Grid'5000 VPN configuration inside Tunnelblick.
{{Term|location=workstation| cmd=<code class="command">sudo openvpn</code> Grid5000_VPN.ovpn}}


To connect to VPN, select Grid5000_VPN from Tunnelblick application (top right on the screen).
Note that the OpenVPN linux client does not support the DNS VPN configuration natively. In most distributions, installing resolvconf package and uncommenting last lines of the ''Grid5000_VPN.ovpn'' file should enable the automatic DNS VPN configuration.


In case of troubles, check connection logs inside "VPN details, Grid5000 VPN, Messages"
If you prefer to use TCP (recommended if your network is filtered, and UDP does not work), comment the second line and uncomment the fourth.


There is also a bug in the generated config file, you must change "dev tap" by "dev tun".


=== Linux (using network-manager) ===
=== MAC OS X ===
You can also connect to Grid'5000 using the "Network Manager" applet (you may require to install packages such as "network-manager-openvpn-gnome").
On OS X systems, we recommend downloading and installing [https://tunnelblick.net/ Tunnelblick] as OpenVPN client.


From "Network Settings" application, add a Network Connection and select "VPN". Choose "OpenVPN" and use this parameters :
Then, from the folder where you extracted the ZIP archive, double click on the ''Grid5000_VPN.ovpn'' file to install Grid'5000 VPN configuration inside Tunnelblick.
* Name: as you wish, e.g. ''Grid'5000''
* Gateway: choose ''vpn.grid5000.fr''
* Type: choose ''Certificates (TLS)''
* User Certificate: use your ''<username>.crt'' file
* CA Certificate: your ''cavpn.crt'' file
* Private Key: use your ''<username>.key'' file
* Private Key Password: enter the password needed to unlock your private key


Then, click on the "Advanced" button and select "Configure type of network device" to use "TUN". If you prefer to use TCP (recommended if your network is filtered, and UDP does not work), select "Use TCP" and under "Use a specific port", choose 443. Then, on "TLS Authentication" tab., enable "Use additional TLS authentication" and use the ''ta.key'' file as "Key File" and OK.
To connect to the VPN, select Grid5000_VPN from Tunnelblick application (top right on the screen).


Finally, go to the "IPv4" tab, click the "Routes..." button and select "Use this connection only for resources on its network".
In case of troubles, check the connection logs inside "VPN details, Grid5000 VPN, Messages"


You're done. You can connect to the VPN from Network Manager applet usually present in some corner of your screen.
=== Windows ===
If you have not done it yet, [https://openvpn.net/index.php/open-source/downloads.html download and install OpenVPN for Windows] (default installation options should be fine).


=== Linux (using command line) ===
Extract the zip file into C:/Users/<your_user>/OpenVPN/config/ and import file "Grid5000_VPN.ovpn" from OpenVPN GUI.
From the folder where you extracted the ZIP archive, you only have to execute this as root:
sudo openvpn Grid5000_VPN.ovpn


Note that OpenVPN linux client does not support DNS VPN configuration natively. In most distributions, installing resolvconf package and uncommenting last lines of ''Grid5000_VPN.ovpn'' file should enable automatic DNS VPN configuration.
* Common errors on Windows :
** The users can't import files into OpenVPN GUI if the directory permissions has changed.
** The last Grid5000_VPN.ovpn lines need to be commented for Windows configuration.
* If the program stays frozen with a message such as <code>... UDPv4 link remote: [AF_INET]194.254.60.14:1194</code>, this means that your local network is probably blocking the UDP conenction to the VPN.
** You need to edit the ''Grid_5000_VPN'' file (with notepad++ or any editor that knows how to handle UNIX text file, the file should show multiple line, not just one).
** Comment the second line (add a #) and uncomment the fourth (remove the #) to switch the connection to TCP instead of UDP.


If you prefer to use TCP (recommended if your network is filtered, and UDP does not work), comment the second line and uncomment the fourth.
<syntaxhighlight lang="bash" line="line" highlight="2,4">
client
#remote vpn.grid5000.fr 1194 udp
# In case of problem with UDP connexion, you can use TCP.
remote vpn.grid5000.fr 443 tcp
dev tun


There is also a bug in the generated config file, you must change "dev tap" by "dev tun".
ca cavpn.crt
cert sdelamare.crt
key sdelamare.key
tls-auth ta.key


=== Others ===
# On Linux systems, you can uncomment following lines to automatically use Grid'5000 DNS (openresolv package needed)
Refer to [[VPN#Grid'5000 VPN parameters]] to know how to manually configure the VPN.
#script-security 2
#up /etc/openvpn/update-resolv-conf
#down /etc/openvpn/update-resolv-conf
</syntaxhighlight>


== Testing your connection ==
== Testing your connection ==


When your VPN connexion is established, you will be able to connect directly to any Grid'5000 node or frontend. Try it with:
When your VPN connexion is established, you should be able to connect directly to any Grid'5000 frontend. Make a try with:
ssh <username>@frontend.lyon.grid5000.fr
{{Term|location=workstation| cmd=<code class="command">ssh</code> <code class="replace"><your Grid'5000 username></code>@frontend.lyon.grid5000.fr}}
 
 
== Grid'5000 VPN parameters ==
 
* Gateway: vpn.grid5000.fr
* Gateway port: 1194 UDP or 443 TCP
* Device type: tun (Layer 3 VPN)
* Authentication type: Certificate (TLS)
* User certificate: <username>.crt
* CA certificate: cavpn.crt
* User private key: <username>.key
* Additional TLS authentication file: ta.key (no direction)
* Grid'5000 VPN routes: 172.16.0.0/16, 10.0.0.0/8 and 172.20.0.0/16 (use Grid'5000 VPN for these networks only)
* Grid'5000 VPN DNS: 172.20.255.254
 
 
Here is an example configuration file :
client
remote vpn.grid5000.fr 1194 udp
# In case of problem with UDP connexion, use TCP.
#remote vpn.grid5000.fr 443 tcp
dev tun
ca cavpn.crt
cert sdelamare.crt
key sdelamare.key
tls-auth ta.key
# On Linux systems, you can uncomment following lines to automatically use Grid'5000 DNS (resolvconf package needed)
#script-security 2
#up /etc/openvpn/update-resolv-conf
#down /etc/openvpn/update-resolv-conf

Latest revision as of 17:22, 11 March 2024

Note.png Note

This page is actively maintained by the Grid'5000 team. If you encounter problems, please report them (see the Support page). Additionally, as it is a wiki page, you are free to make minor corrections yourself if needed. If you would like to suggest a more fundamental change, please contact the Grid'5000 team.

Grid'5000 Virtual Private Network (VPN) allows to connect your workstation or personal computer to Grid'5000 network, while preserving security.

When connected to Grid'5000 VPN, your computer will be "inside" the Grid'5000 network, thus it won't be required to perform several SSH hops or tunnels to access Grid'5000 nodes, since direct connections are possible.

Grid'5000 VPN is based on OpenVPN.

Warning.png Warning

There is no performance guarantee on the VPN infrastructure. It's fine to use the VPN to access and configure your nodes, but avoid running performance-sensitive experiments over the VPN: the results would be unreliable and not reproducible. If you need to access your nodes directly from the Internet, we provide a reconfigurable IPv6 firewall service.

Getting started

To start using Grid'5000 VPN, you first need to get a certificate:

  • Go to your account management page, in the "My account" tab and go to "VPN Certificates" on the left.
  • If you do not have a certificate yet, click on "Create new certificate".
    • To generate a new certificate click on "Create with Passphrase" (recommended).
    • If you already generated a certificate by yourself, click on "Create from public key", paste your public key in the text field and finally "Sign".
  • Your certificate appears in the list. Click on "Zip file" to download an archive which includes the certificates and an OpenVPN configuration file.
  • Extract the archive content in your workstation. Please choose a secure place to store those files: an attacker could use them to steal your identity in Grid'5000.

Configure your VPN connection

The Grid'5000 VPN settings are the following:

  • Gateway: vpn.grid5000.fr
  • Gateway port: UDP 1194 or TCP 443
  • Device type: tun (Layer 3 VPN)
  • Authentication type: Certificate (TLS)
  • CA certificate: cavpn.crt
  • User certificate: <username>.crt
  • User private key: <username>.key
  • Additional TLS authentication file: ta.key (no direction)
  • Grid'5000 VPN routes: 172.16.0.0/16, 10.0.0.0/8 and 172.20.0.0/16 (use Grid'5000 VPN for these networks only)
  • Grid'5000 VPN DNS: 172.20.255.254

Depending on your operation system or work environement, the configuration and start of the Grid'5000 VPN varies. See below.

Linux (using network-manager)

You can connect to the Grid'5000 VPN using "Network Manager", for instance using the Network manager applet in the status bar of a gnome graphical environment (you may require to install a package such as "network-manager-openvpn-gnome").

To configure the Grid'5000 VPN in Network Manager, go the the "Network Settings" application, add a Network Connection and select "VPN". Choose "OpenVPN" and set the following parameters:

  • Name: as you wish, e.g. Grid'5000
  • Gateway: choose vpn.grid5000.fr
  • Type: choose Certificates (TLS)
  • User Certificate: use your <username>.crt file
  • CA Certificate: your cavpn.crt file
  • Private Key: use your <username>.key file
  • Private Key Password: enter the password needed to unlock your private key

Then, click on the Advanced button:

  • Select Configure type of network device (also called Set virtual device type) to use TUN.
  • If you prefer to use TCP (recommended if your network is filtered, and UDP does not work), select Use TCP and under Use a specific port (also called Use custom gateway port), choose 443.
  • In the TLS Authentication tab, enable Use additional TLS authentication with mode TLS-Auth and set the ta.key file as Key File.

Finally, go to the IPv4 tab:

  • Click the Routes... button
  • Check the Use this connection only for resources on its network

You're done. You can connect to the VPN from Network Manager applet usually present in some corner of your screen. If you need to troubleshoot potential problems, diagnostics can be printed with sudo journalctl -fu NetworkManager

Note.png Note

Network manager provides an import function which unfortunately does not work well with the configuration we provide in the zip file. Please configure your VPN as described above instead of using that import function.

Linux (using command line)

From the directory where you extracted the ZIP archive, you only have to execute this as root:

Terminal.png workstation:
sudo openvpn Grid5000_VPN.ovpn

Note that the OpenVPN linux client does not support the DNS VPN configuration natively. In most distributions, installing resolvconf package and uncommenting last lines of the Grid5000_VPN.ovpn file should enable the automatic DNS VPN configuration.

If you prefer to use TCP (recommended if your network is filtered, and UDP does not work), comment the second line and uncomment the fourth.

There is also a bug in the generated config file, you must change "dev tap" by "dev tun".

MAC OS X

On OS X systems, we recommend downloading and installing Tunnelblick as OpenVPN client.

Then, from the folder where you extracted the ZIP archive, double click on the Grid5000_VPN.ovpn file to install Grid'5000 VPN configuration inside Tunnelblick.

To connect to the VPN, select Grid5000_VPN from Tunnelblick application (top right on the screen).

In case of troubles, check the connection logs inside "VPN details, Grid5000 VPN, Messages"

Windows

If you have not done it yet, download and install OpenVPN for Windows (default installation options should be fine).

Extract the zip file into C:/Users/<your_user>/OpenVPN/config/ and import file "Grid5000_VPN.ovpn" from OpenVPN GUI.

  • Common errors on Windows :
    • The users can't import files into OpenVPN GUI if the directory permissions has changed.
    • The last Grid5000_VPN.ovpn lines need to be commented for Windows configuration.
  • If the program stays frozen with a message such as ... UDPv4 link remote: [AF_INET]194.254.60.14:1194, this means that your local network is probably blocking the UDP conenction to the VPN.
    • You need to edit the Grid_5000_VPN file (with notepad++ or any editor that knows how to handle UNIX text file, the file should show multiple line, not just one).
    • Comment the second line (add a #) and uncomment the fourth (remove the #) to switch the connection to TCP instead of UDP.
client
#remote vpn.grid5000.fr 1194 udp
# In case of problem with UDP connexion, you can use TCP.
remote vpn.grid5000.fr 443 tcp
dev tun

ca cavpn.crt
cert sdelamare.crt
key sdelamare.key
tls-auth ta.key

# On Linux systems, you can uncomment following lines to automatically use Grid'5000 DNS (openresolv package needed)
#script-security 2
#up /etc/openvpn/update-resolv-conf
#down /etc/openvpn/update-resolv-conf

Testing your connection

When your VPN connexion is established, you should be able to connect directly to any Grid'5000 frontend. Make a try with:

Terminal.png workstation:
ssh <your Grid'5000 username>@frontend.lyon.grid5000.fr