GNU/Linux >> Tutoriels Linux >  >> Panels >> Panels

Script de configuration OpenVPN pour Debian et Ubuntu

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.


Panels
  1. Installez Anti-Spam et DLP pour n'importe quel serveur en 30 minutes

  2. Configurer le transfert de courrier dans postfix sur Ubuntu ou Debian

  3. Configurer Apache et Php avec mod_fcgid sur Ubuntu/Debian

  4. Script :Installer WordPress sur un VPS Debian/Ubuntu

  5. Comment installer et configurer Discourse sur un VPS Ubuntu 12.04

Comment configurer Icinga Web 2 sur Ubuntu 18.04 / Ubuntu 16.04 / Debian 9

Comment configurer OpenVPN sur Ubuntu Server

PiVPN - Configuration et configuration OpenVPN les plus simples, conçues pour Raspberry Pi

Installer et configurer OwnCloud sur Ubuntu 21 / Debian 11

Installation et configuration d'OpenVPN (Ubuntu)

Comment installer et configurer Apache Spark sur Ubuntu/Debian