OpenVPN est une application logicielle gratuite et open source qui peut être utilisée pour relier en toute sécurité deux ou plusieurs réseaux privés à l'aide d'un tunnel crypté sur Internet. OpenVPN est lié à la bibliothèque OpenSSL et en tire une grande partie de ses capacités de chiffrement.
Aujourd'hui, nous allons partager avec vous un script que vous pouvez utiliser pour installer et configurer OpenVPN sur un VPS Ubuntu. Le script est assez explicite.
Code
#!/usr/bin/env bash # # Functions ok() { echo -e '\e[32m'$1'\e[m'; } die() { echo -e '\e[1;31m'$1'\e[m'; exit 1; } # Sanity check if [[ $(id -g) != "0" ]] ; then die "❯❯❯ Script must be run as root." fi if [[ ! -e /dev/net/tun ]] ; then die "❯❯❯ TUN/TAP device is not available." fi dpkg -l openvpn > /dev/null 2>&1 if [[ $? -eq 0 ]]; then die "❯❯❯ OpenVPN is already installed." fi # Install openvpn ok "❯❯❯ apt-get update" apt-get update -q > /dev/null 2>&1 ok "❯❯❯ apt-get install openvpn curl openssl" apt-get install -qy openvpn curl > /dev/null 2>&1 # IP Address SERVER_IP=$(curl -s ipv4.icanhazip.com) if [[ -z "${SERVER_IP}" ]]; then SERVER_IP=$(ip a | awk -F"[ /]+" '/global/ && !/127.0/ {print $3; exit}') fi # Generate CA Config ok "❯❯❯ Generating CA Config" openssl dhparam -out /etc/openvpn/dh.pem 2048 > /dev/null 2>&1 openssl genrsa -out /etc/openvpn/ca-key.pem 2048 > /dev/null 2>&1 chmod 600 /etc/openvpn/ca-key.pem openssl req -new -key /etc/openvpn/ca-key.pem -out /etc/openvpn/ca-csr.pem -subj /CN=OpenVPN-CA/ > /dev/null 2>&1 openssl x509 -req -in /etc/openvpn/ca-csr.pem -out /etc/openvpn/ca.pem -signkey /etc/openvpn/ca-key.pem -days 365 > /dev/null 2>&1 echo 01 > /etc/openvpn/ca.srl # Generate Server Config ok "❯❯❯ Generating Server Config" openssl genrsa -out /etc/openvpn/server-key.pem 2048 > /dev/null 2>&1 chmod 600 /etc/openvpn/server-key.pem openssl req -new -key /etc/openvpn/server-key.pem -out /etc/openvpn/server-csr.pem -subj /CN=OpenVPN/ > /dev/null 2>&1 openssl x509 -req -in /etc/openvpn/server-csr.pem -out /etc/openvpn/server-cert.pem -CA /etc/openvpn/ca.pem -CAkey /etc/openvpn/ca-key.pem -days 365 > /dev/null 2>&1 cat > /etc/openvpn/udp1194.conf <<EOF server 10.8.0.0 255.255.255.0 verb 3 duplicate-cn key server-key.pem ca ca.pem cert server-cert.pem dh dh.pem keepalive 10 120 persist-key persist-tun comp-lzo push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" user nobody group nogroup proto udp port 1194 dev tun1194 status openvpn-status-1194.log EOF # Generate Client Config ok "❯❯❯ Generating Client Config" openssl genrsa -out /etc/openvpn/client-key.pem 2048 > /dev/null 2>&1 chmod 600 /etc/openvpn/client-key.pem openssl req -new -key /etc/openvpn/client-key.pem -out /etc/openvpn/client-csr.pem -subj /CN=OpenVPN-Client/ > /dev/null 2>&1 openssl x509 -req -in /etc/openvpn/client-csr.pem -out /etc/openvpn/client-cert.pem -CA /etc/openvpn/ca.pem -CAkey /etc/openvpn/ca-key.pem -days 36525 > /dev/null 2>&1 cat > /etc/openvpn/client.ovpn <<EOF client nobind dev tun redirect-gateway def1 bypass-dhcp remote $SERVER_IP 1194 udp comp-lzo yes <key> $(cat /etc/openvpn/client-key.pem) </key> <cert> $(cat /etc/openvpn/client-cert.pem) </cert> <ca> $(cat /etc/openvpn/ca.pem) </ca> EOF # Iptables if [[ ! -f /proc/user_beancounters ]]; then N_INT=$(ip a |awk -v sip="$SERVER_IP" '$0 ~ sip { print $7}') iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o $N_INT -j MASQUERADE else iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source $SERVER_IP fi iptables-save > /etc/iptables.conf cat > /etc/network/if-up.d/iptables <<EOF #!/bin/sh iptables-restore < /etc/iptables.conf EOF chmod +x /etc/network/if-up.d/iptables # Enable net.ipv4.ip_forward sed -i 's|#net.ipv4.ip_forward=1|net.ipv4.ip_forward=1|' /etc/sysctl.conf echo 1 > /proc/sys/net/ipv4/ip_forward # Restart Service ok "❯❯❯ service openvpn restart" service openvpn restart > /dev/null 2>&1 ok "❯❯❯ Your client config is available at /etc/openvpn/client.ovpn" ok "❯❯❯ All done!"
Que fait le script ?
Le script installera automatiquement OpenVPN et toutes les dépendances nécessaires, configurera et ajoutera un nouvel utilisateur.
Comment l'utiliser ?
1. Téléchargez le script
wget https://raw.github.com/rosehosting/OpenVPN_setup_script/master/install_openvpn.sh
2. Rendez-le exécutable
chmod +x install_openvpn.sh
3. Exécutez
./install_openvpn.sh
Bien sûr, si vous êtes l'un de nos clients Linux VPS Hosting, vous n'avez rien à faire de tout cela, demandez simplement à nos administrateurs, asseyez-vous et détendez-vous. Nos administrateurs installeront OpenVPN pour vous immédiatement.
PS. Si vous avez aimé cet article, partagez-le avec vos amis sur les réseaux sociaux en utilisant les boutons à gauche ou laissez simplement une réponse ci-dessous. Merci.
Voici la dernière mise à jour pour Comment configurer un serveur OpenVPN sur Debian 10.