openvpn-install.sh
· 10 KiB · Bash
原始文件
#!/bin/bash
# OpenVPN Auto-Install Script за Proxmox LXC контейнер
# Използване: sudo bash openvpn-install.sh
set -e
# Цветове за изхода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}╔═══════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ OpenVPN Auto-Install за Proxmox LXC ║${NC}"
echo -e "${GREEN}╔═══════════════════════════════════════════╗${NC}"
echo ""
# Проверка дали скриптът се изпълнява като root
if [[ $EUID -ne 0 ]]; then
echo -e "${RED}Този скрипт трябва да се изпълни като root!${NC}"
exit 1
fi
# Проверка дали сме в LXC контейнер
if ! grep -q lxc /proc/1/cgroup 2>/dev/null && ! [ -f /.dockerenv ]; then
echo -e "${YELLOW}Внимание: Не сте в LXC контейнер. Продължаваме...${NC}"
fi
# Конфигурационни променливи
SERVER_NAME="openvpn-server"
CLIENT_NAME="client1"
PORT=1194
PROTOCOL="udp"
DNS1="8.8.8.8"
DNS2="8.8.4.4"
# Получаване на IP адреса на сървъра
SERVER_IP=$(ip -4 addr show | grep inet | grep -v 127.0.0.1 | awk '{print $2}' | cut -d'/' -f1 | head -n1)
echo -e "${GREEN}[1/8] Конфигурация${NC}"
echo "═══════════════════════════════════════"
read -p "Въведи IP адрес на сървъра [$SERVER_IP]: " input_ip
SERVER_IP=${input_ip:-$SERVER_IP}
read -p "Въведи порт за OpenVPN [$PORT]: " input_port
PORT=${input_port:-$PORT}
read -p "Избери протокол (udp/tcp) [$PROTOCOL]: " input_protocol
PROTOCOL=${input_protocol:-$PROTOCOL}
read -p "Име на първия клиент [$CLIENT_NAME]: " input_client
CLIENT_NAME=${input_client:-$CLIENT_NAME}
echo ""
echo -e "${GREEN}[2/8] Актуализация на системата${NC}"
echo "═══════════════════════════════════════"
apt-get update -qq
apt-get upgrade -y -qq
echo ""
echo -e "${GREEN}[3/8] Инсталиране на OpenVPN и Easy-RSA${NC}"
echo "═══════════════════════════════════════"
apt-get install -y openvpn easy-rsa iptables
echo ""
echo -e "${GREEN}[4/8] Настройка на PKI и генериране на сертификати${NC}"
echo "═══════════════════════════════════════"
# Създаване на директория за Easy-RSA
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
# Конфигуриране на vars файла
cat > vars <<EOF
set_var EASYRSA_REQ_COUNTRY "BG"
set_var EASYRSA_REQ_PROVINCE "Pazardzhik"
set_var EASYRSA_REQ_CITY "Pazardzhik"
set_var EASYRSA_REQ_ORG "OpenVPN-Server"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "IT"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
EOF
# Инициализация на PKI
./easyrsa init-pki
# Създаване на CA без парола
echo -e "\n" | ./easyrsa build-ca nopass
# Генериране на сървърен ключ и сертификат
echo -e "\n" | ./easyrsa gen-req $SERVER_NAME nopass
echo "yes" | ./easyrsa sign-req server $SERVER_NAME
# Генериране на Diffie-Hellman параметри
./easyrsa gen-dh
# Генериране на tls-auth ключ
openvpn --genkey secret pki/ta.key
# Генериране на клиентски сертификат
echo -e "\n" | ./easyrsa gen-req $CLIENT_NAME nopass
echo "yes" | ./easyrsa sign-req client $CLIENT_NAME
echo ""
echo -e "${GREEN}[5/8] Копиране на сертификатите${NC}"
echo "═══════════════════════════════════════"
# Копиране на сертификатите в OpenVPN директорията
cp pki/ca.crt /etc/openvpn/
cp pki/issued/$SERVER_NAME.crt /etc/openvpn/
cp pki/private/$SERVER_NAME.key /etc/openvpn/
cp pki/dh.pem /etc/openvpn/
cp pki/ta.key /etc/openvpn/
echo ""
echo -e "${GREEN}[6/8] Създаване на конфигурация на сървъра${NC}"
echo "═══════════════════════════════════════"
# Създаване на server.conf
cat > /etc/openvpn/server.conf <<EOF
# OpenVPN Server Configuration
port $PORT
proto $PROTOCOL
dev tun
ca ca.crt
cert $SERVER_NAME.crt
key $SERVER_NAME.key
dh dh.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS $DNS1"
push "dhcp-option DNS $DNS2"
keepalive 10 120
cipher AES-256-GCM
auth SHA256
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3
explicit-exit-notify 1
EOF
echo ""
echo -e "${GREEN}[7/8] Настройка на мрежата и firewall${NC}"
echo "═══════════════════════════════════════"
# Активиране на IP forwarding
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
# Настройка на iptables за NAT
INTERFACE=$(ip route | grep default | awk '{print $5}')
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o $INTERFACE -j MASQUERADE
# Запазване на iptables правилата
apt-get install -y iptables-persistent
netfilter-persistent save
echo ""
echo -e "${GREEN}[8/8] Стартиране на OpenVPN${NC}"
echo "═══════════════════════════════════════"
# Активиране и стартиране на OpenVPN
systemctl enable openvpn@server
systemctl start openvpn@server
# Проверка на статуса
sleep 2
if systemctl is-active --quiet openvpn@server; then
echo -e "${GREEN}✓ OpenVPN сървърът е стартиран успешно!${NC}"
else
echo -e "${RED}✗ Грешка при стартиране на OpenVPN!${NC}"
systemctl status openvpn@server
exit 1
fi
echo ""
echo -e "${GREEN}[ФИНАЛИЗАЦИЯ] Генериране на клиентска конфигурация${NC}"
echo "═══════════════════════════════════════"
# Създаване на директория за клиентски конфигурации
mkdir -p ~/client-configs
# Създаване на базова клиентска конфигурация
cat > ~/client-configs/base.conf <<EOF
client
dev tun
proto $PROTOCOL
remote $SERVER_IP $PORT
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3
EOF
# Генериране на .ovpn файл с вградени сертификати
cat > ~/client-configs/$CLIENT_NAME.ovpn <<EOF
client
dev tun
proto $PROTOCOL
remote $SERVER_IP $PORT
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3
key-direction 1
<ca>
$(cat ~/openvpn-ca/pki/ca.crt)
</ca>
<cert>
$(cat ~/openvpn-ca/pki/issued/$CLIENT_NAME.crt)
</cert>
<key>
$(cat ~/openvpn-ca/pki/private/$CLIENT_NAME.key)
</key>
<tls-auth>
$(cat ~/openvpn-ca/pki/ta.key)
</tls-auth>
EOF
echo ""
echo -e "${GREEN}╔═══════════════════════════════════════════╗${NC}"
echo -e "${GREEN}║ ИНСТАЛАЦИЯТА Е ЗАВЪРШЕНА! ║${NC}"
echo -e "${GREEN}╚═══════════════════════════════════════════╝${NC}"
echo ""
echo -e "${YELLOW}Клиентският конфигурационен файл е създаден:${NC}"
echo -e "${GREEN}~/client-configs/$CLIENT_NAME.ovpn${NC}"
echo ""
echo -e "${YELLOW}За да свалиш файла, използвай:${NC}"
echo -e "scp root@$SERVER_IP:~/client-configs/$CLIENT_NAME.ovpn ."
echo ""
echo -e "${YELLOW}Проверка на статуса:${NC}"
echo "systemctl status openvpn@server"
echo ""
echo -e "${YELLOW}Логове:${NC}"
echo "tail -f /var/log/openvpn.log"
echo ""
# Създаване на скрипт за добавяне на нови клиенти
cat > ~/add-client.sh <<'ADDCLIENT'
#!/bin/bash
# Скрипт за добавяне на нов VPN клиент
if [ -z "$1" ]; then
echo "Използване: ./add-client.sh <име_на_клиент>"
exit 1
fi
CLIENT_NAME=$1
cd ~/openvpn-ca
# Генериране на клиентски сертификат
echo -e "\n" | ./easyrsa gen-req $CLIENT_NAME nopass
echo "yes" | ./easyrsa sign-req client $CLIENT_NAME
# Вземане на конфигурацията
SERVER_IP=$(grep "^remote" ~/client-configs/base.conf | awk '{print $2}')
PORT=$(grep "^remote" ~/client-configs/base.conf | awk '{print $3}')
PROTOCOL=$(grep "^proto" ~/client-configs/base.conf | awk '{print $2}')
# Генериране на .ovpn файл
cat > ~/client-configs/$CLIENT_NAME.ovpn <<EOF
client
dev tun
proto $PROTOCOL
remote $SERVER_IP $PORT
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
auth SHA256
verb 3
key-direction 1
<ca>
$(cat ~/openvpn-ca/pki/ca.crt)
</ca>
<cert>
$(cat ~/openvpn-ca/pki/issued/$CLIENT_NAME.crt)
</cert>
<key>
$(cat ~/openvpn-ca/pki/private/$CLIENT_NAME.key)
</key>
<tls-auth>
$(cat ~/openvpn-ca/pki/ta.key)
</tls-auth>
EOF
echo "Клиентският файл е създаден: ~/client-configs/$CLIENT_NAME.ovpn"
ADDCLIENT
chmod +x ~/add-client.sh
echo -e "${GREEN}За добавяне на нови клиенти използвай:${NC}"
echo "~/add-client.sh <име_на_клиент>"
echo ""
| 1 | #!/bin/bash |
| 2 | |
| 3 | # OpenVPN Auto-Install Script за Proxmox LXC контейнер |
| 4 | # Използване: sudo bash openvpn-install.sh |
| 5 | |
| 6 | set -e |
| 7 | |
| 8 | # Цветове за изхода |
| 9 | RED='\033[0;31m' |
| 10 | GREEN='\033[0;32m' |
| 11 | YELLOW='\033[1;33m' |
| 12 | NC='\033[0m' # No Color |
| 13 | |
| 14 | echo -e "${GREEN}╔═══════════════════════════════════════════╗${NC}" |
| 15 | echo -e "${GREEN}║ OpenVPN Auto-Install за Proxmox LXC ║${NC}" |
| 16 | echo -e "${GREEN}╔═══════════════════════════════════════════╗${NC}" |
| 17 | echo "" |
| 18 | |
| 19 | # Проверка дали скриптът се изпълнява като root |
| 20 | if [[ $EUID -ne 0 ]]; then |
| 21 | echo -e "${RED}Този скрипт трябва да се изпълни като root!${NC}" |
| 22 | exit 1 |
| 23 | fi |
| 24 | |
| 25 | # Проверка дали сме в LXC контейнер |
| 26 | if ! grep -q lxc /proc/1/cgroup 2>/dev/null && ! [ -f /.dockerenv ]; then |
| 27 | echo -e "${YELLOW}Внимание: Не сте в LXC контейнер. Продължаваме...${NC}" |
| 28 | fi |
| 29 | |
| 30 | # Конфигурационни променливи |
| 31 | SERVER_NAME="openvpn-server" |
| 32 | CLIENT_NAME="client1" |
| 33 | PORT=1194 |
| 34 | PROTOCOL="udp" |
| 35 | DNS1="8.8.8.8" |
| 36 | DNS2="8.8.4.4" |
| 37 | |
| 38 | # Получаване на IP адреса на сървъра |
| 39 | SERVER_IP=$(ip -4 addr show | grep inet | grep -v 127.0.0.1 | awk '{print $2}' | cut -d'/' -f1 | head -n1) |
| 40 | |
| 41 | echo -e "${GREEN}[1/8] Конфигурация${NC}" |
| 42 | echo "═══════════════════════════════════════" |
| 43 | read -p "Въведи IP адрес на сървъра [$SERVER_IP]: " input_ip |
| 44 | SERVER_IP=${input_ip:-$SERVER_IP} |
| 45 | |
| 46 | read -p "Въведи порт за OpenVPN [$PORT]: " input_port |
| 47 | PORT=${input_port:-$PORT} |
| 48 | |
| 49 | read -p "Избери протокол (udp/tcp) [$PROTOCOL]: " input_protocol |
| 50 | PROTOCOL=${input_protocol:-$PROTOCOL} |
| 51 | |
| 52 | read -p "Име на първия клиент [$CLIENT_NAME]: " input_client |
| 53 | CLIENT_NAME=${input_client:-$CLIENT_NAME} |
| 54 | |
| 55 | echo "" |
| 56 | echo -e "${GREEN}[2/8] Актуализация на системата${NC}" |
| 57 | echo "═══════════════════════════════════════" |
| 58 | apt-get update -qq |
| 59 | apt-get upgrade -y -qq |
| 60 | |
| 61 | echo "" |
| 62 | echo -e "${GREEN}[3/8] Инсталиране на OpenVPN и Easy-RSA${NC}" |
| 63 | echo "═══════════════════════════════════════" |
| 64 | apt-get install -y openvpn easy-rsa iptables |
| 65 | |
| 66 | echo "" |
| 67 | echo -e "${GREEN}[4/8] Настройка на PKI и генериране на сертификати${NC}" |
| 68 | echo "═══════════════════════════════════════" |
| 69 | |
| 70 | # Създаване на директория за Easy-RSA |
| 71 | make-cadir ~/openvpn-ca |
| 72 | cd ~/openvpn-ca |
| 73 | |
| 74 | # Конфигуриране на vars файла |
| 75 | cat > vars <<EOF |
| 76 | set_var EASYRSA_REQ_COUNTRY "BG" |
| 77 | set_var EASYRSA_REQ_PROVINCE "Pazardzhik" |
| 78 | set_var EASYRSA_REQ_CITY "Pazardzhik" |
| 79 | set_var EASYRSA_REQ_ORG "OpenVPN-Server" |
| 80 | set_var EASYRSA_REQ_EMAIL "[email protected]" |
| 81 | set_var EASYRSA_REQ_OU "IT" |
| 82 | set_var EASYRSA_ALGO "ec" |
| 83 | set_var EASYRSA_DIGEST "sha512" |
| 84 | EOF |
| 85 | |
| 86 | # Инициализация на PKI |
| 87 | ./easyrsa init-pki |
| 88 | |
| 89 | # Създаване на CA без парола |
| 90 | echo -e "\n" | ./easyrsa build-ca nopass |
| 91 | |
| 92 | # Генериране на сървърен ключ и сертификат |
| 93 | echo -e "\n" | ./easyrsa gen-req $SERVER_NAME nopass |
| 94 | echo "yes" | ./easyrsa sign-req server $SERVER_NAME |
| 95 | |
| 96 | # Генериране на Diffie-Hellman параметри |
| 97 | ./easyrsa gen-dh |
| 98 | |
| 99 | # Генериране на tls-auth ключ |
| 100 | openvpn --genkey secret pki/ta.key |
| 101 | |
| 102 | # Генериране на клиентски сертификат |
| 103 | echo -e "\n" | ./easyrsa gen-req $CLIENT_NAME nopass |
| 104 | echo "yes" | ./easyrsa sign-req client $CLIENT_NAME |
| 105 | |
| 106 | echo "" |
| 107 | echo -e "${GREEN}[5/8] Копиране на сертификатите${NC}" |
| 108 | echo "═══════════════════════════════════════" |
| 109 | |
| 110 | # Копиране на сертификатите в OpenVPN директорията |
| 111 | cp pki/ca.crt /etc/openvpn/ |
| 112 | cp pki/issued/$SERVER_NAME.crt /etc/openvpn/ |
| 113 | cp pki/private/$SERVER_NAME.key /etc/openvpn/ |
| 114 | cp pki/dh.pem /etc/openvpn/ |
| 115 | cp pki/ta.key /etc/openvpn/ |
| 116 | |
| 117 | echo "" |
| 118 | echo -e "${GREEN}[6/8] Създаване на конфигурация на сървъра${NC}" |
| 119 | echo "═══════════════════════════════════════" |
| 120 | |
| 121 | # Създаване на server.conf |
| 122 | cat > /etc/openvpn/server.conf <<EOF |
| 123 | # OpenVPN Server Configuration |
| 124 | port $PORT |
| 125 | proto $PROTOCOL |
| 126 | dev tun |
| 127 | |
| 128 | ca ca.crt |
| 129 | cert $SERVER_NAME.crt |
| 130 | key $SERVER_NAME.key |
| 131 | dh dh.pem |
| 132 | tls-auth ta.key 0 |
| 133 | |
| 134 | server 10.8.0.0 255.255.255.0 |
| 135 | ifconfig-pool-persist ipp.txt |
| 136 | |
| 137 | push "redirect-gateway def1 bypass-dhcp" |
| 138 | push "dhcp-option DNS $DNS1" |
| 139 | push "dhcp-option DNS $DNS2" |
| 140 | |
| 141 | keepalive 10 120 |
| 142 | cipher AES-256-GCM |
| 143 | auth SHA256 |
| 144 | user nobody |
| 145 | group nogroup |
| 146 | persist-key |
| 147 | persist-tun |
| 148 | |
| 149 | status openvpn-status.log |
| 150 | log-append /var/log/openvpn.log |
| 151 | verb 3 |
| 152 | explicit-exit-notify 1 |
| 153 | EOF |
| 154 | |
| 155 | echo "" |
| 156 | echo -e "${GREEN}[7/8] Настройка на мрежата и firewall${NC}" |
| 157 | echo "═══════════════════════════════════════" |
| 158 | |
| 159 | # Активиране на IP forwarding |
| 160 | echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf |
| 161 | sysctl -p |
| 162 | |
| 163 | # Настройка на iptables за NAT |
| 164 | INTERFACE=$(ip route | grep default | awk '{print $5}') |
| 165 | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o $INTERFACE -j MASQUERADE |
| 166 | |
| 167 | # Запазване на iptables правилата |
| 168 | apt-get install -y iptables-persistent |
| 169 | netfilter-persistent save |
| 170 | |
| 171 | echo "" |
| 172 | echo -e "${GREEN}[8/8] Стартиране на OpenVPN${NC}" |
| 173 | echo "═══════════════════════════════════════" |
| 174 | |
| 175 | # Активиране и стартиране на OpenVPN |
| 176 | systemctl enable openvpn@server |
| 177 | systemctl start openvpn@server |
| 178 | |
| 179 | # Проверка на статуса |
| 180 | sleep 2 |
| 181 | if systemctl is-active --quiet openvpn@server; then |
| 182 | echo -e "${GREEN}✓ OpenVPN сървърът е стартиран успешно!${NC}" |
| 183 | else |
| 184 | echo -e "${RED}✗ Грешка при стартиране на OpenVPN!${NC}" |
| 185 | systemctl status openvpn@server |
| 186 | exit 1 |
| 187 | fi |
| 188 | |
| 189 | echo "" |
| 190 | echo -e "${GREEN}[ФИНАЛИЗАЦИЯ] Генериране на клиентска конфигурация${NC}" |
| 191 | echo "═══════════════════════════════════════" |
| 192 | |
| 193 | # Създаване на директория за клиентски конфигурации |
| 194 | mkdir -p ~/client-configs |
| 195 | |
| 196 | # Създаване на базова клиентска конфигурация |
| 197 | cat > ~/client-configs/base.conf <<EOF |
| 198 | client |
| 199 | dev tun |
| 200 | proto $PROTOCOL |
| 201 | remote $SERVER_IP $PORT |
| 202 | resolv-retry infinite |
| 203 | nobind |
| 204 | user nobody |
| 205 | group nogroup |
| 206 | persist-key |
| 207 | persist-tun |
| 208 | remote-cert-tls server |
| 209 | cipher AES-256-GCM |
| 210 | auth SHA256 |
| 211 | verb 3 |
| 212 | EOF |
| 213 | |
| 214 | # Генериране на .ovpn файл с вградени сертификати |
| 215 | cat > ~/client-configs/$CLIENT_NAME.ovpn <<EOF |
| 216 | client |
| 217 | dev tun |
| 218 | proto $PROTOCOL |
| 219 | remote $SERVER_IP $PORT |
| 220 | resolv-retry infinite |
| 221 | nobind |
| 222 | user nobody |
| 223 | group nogroup |
| 224 | persist-key |
| 225 | persist-tun |
| 226 | remote-cert-tls server |
| 227 | cipher AES-256-GCM |
| 228 | auth SHA256 |
| 229 | verb 3 |
| 230 | key-direction 1 |
| 231 | |
| 232 | <ca> |
| 233 | $(cat ~/openvpn-ca/pki/ca.crt) |
| 234 | </ca> |
| 235 | |
| 236 | <cert> |
| 237 | $(cat ~/openvpn-ca/pki/issued/$CLIENT_NAME.crt) |
| 238 | </cert> |
| 239 | |
| 240 | <key> |
| 241 | $(cat ~/openvpn-ca/pki/private/$CLIENT_NAME.key) |
| 242 | </key> |
| 243 | |
| 244 | <tls-auth> |
| 245 | $(cat ~/openvpn-ca/pki/ta.key) |
| 246 | </tls-auth> |
| 247 | EOF |
| 248 | |
| 249 | echo "" |
| 250 | echo -e "${GREEN}╔═══════════════════════════════════════════╗${NC}" |
| 251 | echo -e "${GREEN}║ ИНСТАЛАЦИЯТА Е ЗАВЪРШЕНА! ║${NC}" |
| 252 | echo -e "${GREEN}╚═══════════════════════════════════════════╝${NC}" |
| 253 | echo "" |
| 254 | echo -e "${YELLOW}Клиентският конфигурационен файл е създаден:${NC}" |
| 255 | echo -e "${GREEN}~/client-configs/$CLIENT_NAME.ovpn${NC}" |
| 256 | echo "" |
| 257 | echo -e "${YELLOW}За да свалиш файла, използвай:${NC}" |
| 258 | echo -e "scp root@$SERVER_IP:~/client-configs/$CLIENT_NAME.ovpn ." |
| 259 | echo "" |
| 260 | echo -e "${YELLOW}Проверка на статуса:${NC}" |
| 261 | echo "systemctl status openvpn@server" |
| 262 | echo "" |
| 263 | echo -e "${YELLOW}Логове:${NC}" |
| 264 | echo "tail -f /var/log/openvpn.log" |
| 265 | echo "" |
| 266 | |
| 267 | # Създаване на скрипт за добавяне на нови клиенти |
| 268 | cat > ~/add-client.sh <<'ADDCLIENT' |
| 269 | #!/bin/bash |
| 270 | # Скрипт за добавяне на нов VPN клиент |
| 271 | |
| 272 | if [ -z "$1" ]; then |
| 273 | echo "Използване: ./add-client.sh <име_на_клиент>" |
| 274 | exit 1 |
| 275 | fi |
| 276 | |
| 277 | CLIENT_NAME=$1 |
| 278 | cd ~/openvpn-ca |
| 279 | |
| 280 | # Генериране на клиентски сертификат |
| 281 | echo -e "\n" | ./easyrsa gen-req $CLIENT_NAME nopass |
| 282 | echo "yes" | ./easyrsa sign-req client $CLIENT_NAME |
| 283 | |
| 284 | # Вземане на конфигурацията |
| 285 | SERVER_IP=$(grep "^remote" ~/client-configs/base.conf | awk '{print $2}') |
| 286 | PORT=$(grep "^remote" ~/client-configs/base.conf | awk '{print $3}') |
| 287 | PROTOCOL=$(grep "^proto" ~/client-configs/base.conf | awk '{print $2}') |
| 288 | |
| 289 | # Генериране на .ovpn файл |
| 290 | cat > ~/client-configs/$CLIENT_NAME.ovpn <<EOF |
| 291 | client |
| 292 | dev tun |
| 293 | proto $PROTOCOL |
| 294 | remote $SERVER_IP $PORT |
| 295 | resolv-retry infinite |
| 296 | nobind |
| 297 | user nobody |
| 298 | group nogroup |
| 299 | persist-key |
| 300 | persist-tun |
| 301 | remote-cert-tls server |
| 302 | cipher AES-256-GCM |
| 303 | auth SHA256 |
| 304 | verb 3 |
| 305 | key-direction 1 |
| 306 | |
| 307 | <ca> |
| 308 | $(cat ~/openvpn-ca/pki/ca.crt) |
| 309 | </ca> |
| 310 | |
| 311 | <cert> |
| 312 | $(cat ~/openvpn-ca/pki/issued/$CLIENT_NAME.crt) |
| 313 | </cert> |
| 314 | |
| 315 | <key> |
| 316 | $(cat ~/openvpn-ca/pki/private/$CLIENT_NAME.key) |
| 317 | </key> |
| 318 | |
| 319 | <tls-auth> |
| 320 | $(cat ~/openvpn-ca/pki/ta.key) |
| 321 | </tls-auth> |
| 322 | EOF |
| 323 | |
| 324 | echo "Клиентският файл е създаден: ~/client-configs/$CLIENT_NAME.ovpn" |
| 325 | ADDCLIENT |
| 326 | |
| 327 | chmod +x ~/add-client.sh |
| 328 | |
| 329 | echo -e "${GREEN}За добавяне на нови клиенти използвай:${NC}" |
| 330 | echo "~/add-client.sh <име_на_клиент>" |
| 331 | echo "" |