#!/bin/bash # Скрипт установки OpenVPN на операционные системы семейства CentOS # Этот скрипт будет работать толко на CentOS и, возможно, на его # производных дистрибутивах #Основано на https://github.com/Nyr/openvpn-install #Посвящается @evilmind if [[ "$EUID" -ne 0 ]]; then echo "Этот скрипт нужно запускать с правами root" exit 2 fi if [[ ! -e /dev/net/tun ]]; then echo "Не обнаружена поддержка TUN. Включите TUN перед запуском скрипта" exit 3 fi if grep -qs "CentOS release 5" "/etc/redhat-release"; then echo "CentOS 5 слишком старый, установка не возможна" exit 4 fi if [[ -e /etc/centos-release || -e /etc/redhat-release ]]; then OS=centos GROUPNAME=nobody RCLOCAL='/etc/rc.d/rc.local' else echo "Ваша операционная система не из семейства CentOS" exit 5 fi newclient () { # Создаем файл client.ovpn cp /etc/openvpn/client-common.txt ~/$1.ovpn echo "" >> ~/$1.ovpn cat /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/ca.crt >> ~/$1.ovpn echo "" >> ~/$1.ovpn echo "" >> ~/$1.ovpn cat /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/$1.crt >> ~/$1.ovpn echo "" >> ~/$1.ovpn echo "" >> ~/$1.ovpn cat /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/private/$1.key >> ~/$1.ovpn echo "" >> ~/$1.ovpn echo "" >> ~/$1.ovpn cat /etc/openvpn/ta.key >> ~/$1.ovpn echo "" >> ~/$1.ovpn } # Пробуем получить наш IP адрес IP=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1) if [[ "$IP" = "" ]]; then IP=$(wget -4qO- "http://whatismyip.akamai.com/") fi if [[ -e /etc/openvpn/server.conf ]]; then while : do clear echo "OpenVPN уже установлен" echo "" echo "Что вы хотите сделать?" echo " 1) Добавить пользователя" echo " 2) Удалить сущетвующего пользвателя" echo " 3) Установить прозрачный 3proxy" echo " 4) Удалить OpenVPN" echo " 5) Завершить работу скрипта" read -p "Выберите вариант [1-5]: " option case $option in 1) clear echo "" echo "Введите имя для сертификата нового пользователя" echo "Используйте только буквы, никаких спецсимволов" read -p "Имя пользователя: " -e -i client CLIENT cd /etc/openvpn/keys/easy-rsa-master/easyrsa3/ ./easyrsa build-client-full $CLIENT nopass # Создаем client.ovpn newclient "$CLIENT" echo "" echo "Пользователь $CLIENT добавлен, конфигурационный файл в текушей папке" ~/"$CLIENT.ovpn" exit ;; 2) # Удаляем пользователя NUMBEROFCLIENTS=$(tail -n +2 /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/index.txt | grep -c "^V") if [[ "$NUMBEROFCLIENTS" = '0' ]]; then echo "" echo "У сервера нет ни одного пользователя!" exit 6 fi echo "" echo "Выберите одного из существующих пользователей" tail -n +2 /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/index.txt | grep "^V" | cut -d '=' -f 2 | nl -s ') ' if [[ "$NUMBEROFCLIENTS" = '1' ]]; then read -p "Выберите пользователя [1]: " CLIENTNUMBER else read -p "Выберите пользователя [1-$NUMBEROFCLIENTS]: " CLIENTNUMBER fi CLIENT=$(tail -n +2 /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/index.txt | grep "^V" | cut -d '=' -f 2 | sed -n "$CLIENTNUMBER"p) cd /etc/openvpn/keys/easy-rsa-master/easyrsa3/ ./easyrsa --batch revoke $CLIENT ./easyrsa gen-crl rm -rf pki/reqs/$CLIENT.req rm -rf pki/private/$CLIENT.key rm -rf pki/issued/$CLIENT.crt rm -rf /etc/openvpn/crl.pem cp /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/crl.pem /etc/openvpn/crl.pem chown nobody:$GROUPNAME /etc/openvpn/crl.pem echo "" echo "Сертификат пользователя $CLIENT отозван" exit ;; 3) # Устанавливаем прозрачный 3proxy clear echo "" echo "Устанавливаем прозрачный 3proxy..." echo "Какой DNS вы хотите использовать в своей VPN?" echo " 1) Текущие системные настройки" echo " 2) Google" read -p "DNS [1-2]: " -e -i 2 DNS yum -y install gcc cd /tmp/ wget https://github.com/z3APA3A/3proxy/archive/0.8.12.tar.gz tar -xvzf 0.8.12.tar.gz cd 3proxy-0.8.12 sed -i '1s/^/#define ANONYMOUS 1\n/' ./src/proxy.h make -f Makefile.Linux mkdir -p /opt/3proxy/bin touch /opt/3proxy/3proxy.pid cp ./src/3proxy /opt/3proxy/bin cp ./src/TransparentPlugin.ld.so /opt/3proxy/bin cp ./cfg/3proxy.cfg.sample /opt/3proxy/3proxy.cfg #Делаем скрипт управления службой 3proxy echo '#!/bin/sh # # chkconfig: 2345 20 80 # description: 3proxy tiny proxy server # # # # case "$1" in start) echo Starting 3Proxy /opt/3proxy/bin/3proxy /opt/3proxy/3proxy.cfg RETVAL=$? echo [ $RETVAL ] ;; stop) echo Stopping 3Proxy if [ /opt/3proxy/3proxy.pid ]; then /bin/kill 'cat /opt/3proxy/3proxy.pid' else /usr/bin/killall 3proxy fi RETVAL=$? echo [ $RETVAL ] ;; restart|reload) echo Reloading 3Proxy if [ /opt/3proxy/3proxy.pid ]; then /bin/kill 'cat /opt/3proxy/3proxy.pid' else /usr/bin/killall 3proxy fi ;; *) echo Usage: $0 "{start|stop|restart}" exit 1 esac exit 0' > /etc/rc.d/init.d/3proxy chmod 0755 /etc/rc.d/init.d/3proxy #Определим названием внешнего интерфейса из текущего файла ipt-set IF_EXT=$(grep IF_EXT= /root/ipt-set | awk -F\" '{print $2}') #Определим порт OVPN из текущего файла ipt-set PORT=$(grep OVPN_PORT= /root/ipt-set | awk -F\" '{print $2}') #Определим протокол OVPN из текущего файла ipt-set PROTOCOL=$(grep 'dport $OVPN_PORT -j ACCEPT' /root/ipt-set | awk '{print $7}') #Изменим файл ipt-set echo '#!/bin/sh' > /root/ipt-set echo "IF_EXT=\"$IF_EXT\" IF_OVPN=\"tun0\" OVPN_PORT=\"$PORT\" PROXI_PORT=\"8080\" IPT=\"/sbin/iptables\" IPT6=\"/sbin/ip6tables\" # flush \$IPT --flush \$IPT -t nat --flush \$IPT -t mangle --flush \$IPT -X \$IPT6 --flush # loopback \$IPT -A INPUT -i lo -j ACCEPT \$IPT -A OUTPUT -o lo -j ACCEPT # default \$IPT -P INPUT DROP \$IPT -P OUTPUT DROP \$IPT -P FORWARD DROP \$IPT6 -P INPUT DROP \$IPT6 -P OUTPUT DROP \$IPT6 -P FORWARD DROP # allow forwarding" >> /root/ipt-set echo 'echo 1 > /proc/sys/net/ipv4/ip_forward' >> /root/ipt-set echo '# NAT # ######################################### # SNAT - local users to out internet $IPT -t nat -A POSTROUTING -o $IF_EXT -j MASQUERADE # INPUT chain # ######################################### $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # ssh $IPT -A INPUT -i $IF_EXT -p tcp --dport 22 -j ACCEPT # VPN $IPT -A INPUT -i $IF_OVPN -p icmp -s 10.8.0.0/24 -j ACCEPT # DNS $IPT -A INPUT -i $IF_OVPN -p udp --dport 53 -s 10.8.0.0/24 -j ACCEPT # openvpn' >> /root/ipt-set echo "\$IPT -A INPUT -i \$IF_EXT -p $PROTOCOL --dport \$OVPN_PORT -j ACCEPT" >> /root/ipt-set echo '# proxi $IPT -A INPUT -i $IF_OVPN -p tcp --dport $PROXI_PORT -j ACCEPT $IPT -A INPUT -i $IF_OVPN -p udp --dport $PROXI_PORT -j ACCEPT $IPT -t nat -A PREROUTING -i $IF_OVPN -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.8.0.1:$PROXI_PORT $IPT -t nat -A PREROUTING -i $IF_OVPN -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.8.0.1:$PROXI_PORT # FORWARD chain # ######################################### $IPT -A FORWARD -i $IF_OVPN -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -i $IF_EXT -o $IF_OVPN -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT # OUTPUT chain # ######################################### $IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT' >> /root/ipt-set #Установим права на запуск chmod 755 /root/ipt-set #И применим настройки systemctl restart ipt-settings echo "Файл ipt-set обновлён..." #Делаем конфиг 3proxy echo 'daemon pidfile /opt/3proxy/3proxy.pid plugin /opt/3proxy/bin/TransparentPlugin.ld.so transparent_plugin' > /opt/3proxy/3proxy.cfg # DNS для 3proxy case $DNS in 1) # Получаем DNS из resolv.conf и используем их для 3proxy grep -v '#' /etc/resolv.conf | grep 'nameserver' | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read line; do echo "nserver $line" >> /opt/3proxy/3proxy.cfg done ;; 2) echo 'nserver 8.8.8.8' >> /opt/3proxy/3proxy.cfg echo 'nserver 8.8.4.4' >> /opt/3proxy/3proxy.cfg ;; esac echo 'nscache 65536 timeouts 1 5 30 60 180 1800 15 60 #log /dev/null #log /etc/3proxy/3proxy.log D #logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"' >> /opt/3proxy/3proxy.cfg echo "external $IP" >> /opt/3proxy/3proxy.cfg echo 'internal 10.8.0.1 auth none maxconn 64 allow * parent 1000 http 0.0.0.0 0 allow * parent 1000 socks5 0.0.0.0 0 tcppm -i10.8.0.1 8080 127.0.0.1 11111' >> /opt/3proxy/3proxy.cfg /usr/bin/killall 3proxy service 3proxy start /sbin/chkconfig 3proxy on echo "Прозрачный 3proxy установлен и запущен" read -n1 -r -p "Нажмите любую кнопку для продолжения..." ;; 4) echo "" read -p "Вы действительно хотите удалить OpenVPN? [y/n]: " -e -i n REMOVE if [[ "$REMOVE" = 'y' ]]; then #Определим названием внешнего интерфейса из текущего файла ipt-set IF_EXT=$(grep IF_EXT= /root/ipt-set | awk -F\" '{print $2}') #Правим скрипт сетевых настроек. echo '#!/bin/sh' > /root/ipt-set echo "IF_EXT=\"$IF_EXT\" IPT=\"/sbin/iptables\" IPT6=\"/sbin/ip6tables\" # flush \$IPT --flush \$IPT -t nat --flush \$IPT -t mangle --flush \$IPT -X \$IPT6 --flush # loopback \$IPT -A INPUT -i lo -j ACCEPT \$IPT -A OUTPUT -o lo -j ACCEPT # default \$IPT -P INPUT DROP \$IPT -P OUTPUT DROP \$IPT -P FORWARD DROP \$IPT6 -P INPUT DROP \$IPT6 -P OUTPUT DROP \$IPT6 -P FORWARD DROP # allow forwarding" >> /root/ipt-set echo 'echo 0 > /proc/sys/net/ipv4/ip_forward' >> /root/ipt-set echo '# INPUT chain # ######################################### $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # ssh $IPT -A INPUT -i $IF_EXT -p tcp --dport 22 -j ACCEPT' >> /root/ipt-set echo '# OUTPUT chain # ######################################### $IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT' >> /root/ipt-set #Установим права на запуск chmod 755 /root/ipt-set #И применим настройки systemctl restart ipt-settings echo "Файл ipt-set обновлён..." if hash sestatus 2>/dev/null; then if sestatus | grep "Current mode" | grep -qs "enforcing"; then if [[ "$PORT" != '1194' || "$PROTOCOL" = 'tcp' ]]; then semanage port -d -t openvpn_port_t -p $PROTOCOL $PORT fi fi fi yum remove openvpn -y rm -rf /etc/openvpn echo "" echo "OpenVPN удалён!" else echo "" echo "Удаление отменено!" fi exit ;; 5) exit;; esac done else clear echo 'Начинаем установку OpenVPN вместе с SecFAll.com' echo "" # Установка OpenVPN и создание первого пользователя echo "Несколько вопросов перед началом установки" echo "Вы можете оставлять параметры по умолчанию и просто нажимать «Enter», если они вас устраивают." echo "Если хотите изменить параметр, то сотрите предлагаемое значение и введите своё" echo "" echo "Для начала введите IP адрес, на который OpenVPN будет принимать подкючения" echo "Если автоматически определённый IP адрес правильный, просто нажмите Enter" read -p "Определён IP адрес: " -e -i $IP IP echo "" echo "Какой протокол будем использовать?" echo " 1) UDP (рекомендуется)" echo " 2) TCP" read -p "Протокол [1-2]: " -e -i 1 PROTOCOL case $PROTOCOL in 1) PROTOCOL=udp ;; 2) PROTOCOL=tcp ;; esac echo "" echo "На какой порт будем принимать подключения (443 рекомендуется)?" read -p "Порт: " -e -i 443 PORT echo "" echo "Какой DNS вы хотите использовать в своей VPN?" echo " 1) Текущие системные настройки" echo " 2) Google" read -p "DNS [1-2]: " -e -i 2 DNS echo "" echo "Укажите имя первого сертификата пользователя" echo "Используйте только буквы, никаких спецсимволов" read -p "Имя пользователя: " -e -i client CLIENT echo "" echo "А теперь введите начальные данные для корневого сертификата" echo "Они ни на что не влияют" echo "Вам будут предложены дефолтные значения" echo "Просто жмите Enter если они вас устраивают." echo "Если нет, то сотрите и введите свои." read -p "Регион: " -e -i Russia EASYRSA_REQ_PROVINCE read -p "Город: " -e -i Moscow EASYRSA_REQ_CITY read -p "Название организации: " -e -i RosComNadzor EASYRSA_REQ_ORG read -p "E-mail: " -e -i admin@rkn.ru EASYRSA_REQ_EMAIL read -p "Подразделение: " -e -i OtdelBeshennogoPrintera EASYRSA_REQ_OU echo "Отлично. Сейчас обновим сервер и выполним первичную установку OpenVPN." read -n1 -r -p "Нажмите любую кнопку для продолжения..." yum install epel-release -y yum update -y yum upgrade -y yum install openvpn openssl iptables wget zip unzip -y # Удаляем старые версииf easy-rsa if [[ -d /etc/openvpn/easy-rsa/ ]]; then rm -rf /etc/openvpn/easy-rsa/ fi if [[ -d /etc/openvpn/keys/ ]]; then rm -rf /etc/openvpn/keys/ fi # Скачиваем и распаковываем easy-rsa mkdir /etc/openvpn/keys cd /etc/openvpn/keys wget https://github.com/OpenVPN/easy-rsa/archive/master.zip unzip master.zip cd /etc/openvpn/keys/easy-rsa-master/easyrsa3 # Создадим файл с настройками cp vars.example vars # Засунем в него дефолтные поля сертификата echo 'set_var EASYRSA_REQ_PROVINCE "$EASYRSA_REQ_PROVINCE"' >> /etc/openvpn/keys/easy-rsa-master/easyrsa3/vars echo 'set_var EASYRSA_REQ_CITY "$EASYRSA_REQ_CITY"' >> /etc/openvpn/keys/easy-rsa-master/easyrsa3/vars echo 'set_var EASYRSA_REQ_ORG "$EASYRSA_REQ_ORG"' >> /etc/openvpn/keys/easy-rsa-master/easyrsa3/vars echo 'set_var EASYRSA_REQ_EMAILE "$EASYRSA_REQ_EMAIL"' >> /etc/openvpn/keys/easy-rsa-master/easyrsa3/vars echo 'set_var EASYRSA_REQ_OU "$EASYRSA_REQ_OU"' >> /etc/openvpn/keys/easy-rsa-master/easyrsa3/vars echo 'set_var EASYRSA_KEY_SIZE "4096"' >> /etc/openvpn/keys/easy-rsa-master/easyrsa3/vars echo 'set_var EASYRSA_DIGEST "sha256"' >> /etc/openvpn/keys/easy-rsa-master/easyrsa3/vars # Создаём PKI, создаём CA, ключ DH а также сертификаты сервера и клиента ./easyrsa init-pki echo "Сейчас будет создан корневой сертификат" echo "На запрос Enter Pem pass phrase пароля придумайте и " echo "введите сложный пароль два раза. После кажждого ввода жмите Enter" read -n1 -r -p "Нажмите любую кнопку для продолжения..." ./easyrsa --batch build-ca echo "" echo "" echo "Создаем ключ Диффи-Хелмана..." echo "" echo "" echo "Это займет МНОГО времени!" echo "" echo "" ./easyrsa gen-dh echo "Сейчас будут созданы сертификаты сервера и клиента," echo "а также список отозваных сертификатов" echo "На запрос key: введите пароль от корневого сертификата." read -n1 -r -p "Нажмите любую кнопку для продолжения..." echo "Создаем сертификат сервера..." ./easyrsa build-server-full server nopass echo "Создаем сертификат пользователя..." ./easyrsa build-client-full $CLIENT nopass echo "Создаем список отозваных сертификатов..." ./easyrsa gen-crl # Готовые сертификаты в рабочую папку сервера cp pki/ca.crt pki/private/ca.key pki/dh.pem pki/issued/server.crt pki/private/server.key pki/crl.pem /etc/openvpn chown nobody:$GROUPNAME /etc/openvpn/crl.pem echo "Создаем ключ tls-auth..." openvpn --genkey --secret /etc/openvpn/ta.key echo "Настраиваем сервер..." echo "port $PORT proto $PROTOCOL dev tun ca ca.crt cert server.crt key server.key dh dh.pem crl-verify crl.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt" > /etc/openvpn/server.conf echo 'push "redirect-gateway def1" ' >> /etc/openvpn/server.conf # DNS case $DNS in 1) # Получакм DNS из resolv.conf и используем их для OpenVPN grep -v '#' /etc/resolv.conf | grep 'nameserver' | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read line; do echo "push \"dhcp-option DNS $line\"" >> /etc/openvpn/server.conf done ;; 2) echo 'push "dhcp-option DNS 8.8.8.8"' >> /etc/openvpn/server.conf echo 'push "dhcp-option DNS 8.8.4.4"' >> /etc/openvpn/server.conf ;; esac echo "remote-cert-eku \"TLS Web Client Authentication\" keepalive 10 120 tls-server tls-auth ta.key 0 tls-timeout 120 auth SHA512 cipher AES-256-CBC comp-lzo max-clients 10 user nobody group nobody persist-key persist-tun status openvpn-status.log log openvpn.log verb 4" >> /etc/openvpn/server.conf echo "server.conf создан..." #Определим названием внешнего интерфейса. Не самый оптимальный вариант, но сходу лучше не придумал IF_EXT=$(ip route get 8.8.8.8 | sed -nr 's/.*dev ([^\ ]+).*/\1/p') echo "Определили внешний интерфейс как $IF_EXT..." #Создадим скрипт сетевых настроек. Он будет применятся при каждой перезагрузке echo '#!/bin/sh' > /root/ipt-set echo "IF_EXT=\"$IF_EXT\" IF_OVPN=\"tun0\" OVPN_PORT=\"$PORT\" IPT=\"/sbin/iptables\" IPT6=\"/sbin/ip6tables\" # flush \$IPT --flush \$IPT -t nat --flush \$IPT -t mangle --flush \$IPT -X \$IPT6 --flush # loopback \$IPT -A INPUT -i lo -j ACCEPT \$IPT -A OUTPUT -o lo -j ACCEPT # default \$IPT -P INPUT DROP \$IPT -P OUTPUT DROP \$IPT -P FORWARD DROP \$IPT6 -P INPUT DROP \$IPT6 -P OUTPUT DROP \$IPT6 -P FORWARD DROP # allow forwarding" >> /root/ipt-set echo 'echo 1 > /proc/sys/net/ipv4/ip_forward' >> /root/ipt-set echo '# NAT # ######################################### # SNAT - local users to out internet $IPT -t nat -A POSTROUTING -o $IF_EXT -j MASQUERADE # INPUT chain # ######################################### $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # ssh $IPT -A INPUT -i $IF_EXT -p tcp --dport 22 -j ACCEPT # VPN $IPT -A INPUT -i $IF_OVPN -p icmp -s 10.8.0.0/24 -j ACCEPT # DNS $IPT -A INPUT -i $IF_OVPN -p udp --dport 53 -s 10.8.0.0/24 -j ACCEPT # openvpn' >> /root/ipt-set echo "\$IPT -A INPUT -i \$IF_EXT -p $PROTOCOL --dport \$OVPN_PORT -j ACCEPT" >> /root/ipt-set echo '# FORWARD chain # ######################################### $IPT -A FORWARD -i $IF_OVPN -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -i $IF_EXT -o $IF_OVPN -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT # OUTPUT chain # ######################################### $IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT' >> /root/ipt-set #Установим права на запуск chmod 755 /root/ipt-set echo "Файл ipt-set создан..." #Сделаем свою службу для запуска скрипта ipt-set echo '[Unit] Description=Iptables Settings Service After=network.target [Service] Type=oneshot User=root ExecStart=/root/ipt-set [Install] WantedBy=multi-user.target' > /etc/systemd/system/ipt-settings.service chmod 644 /etc/systemd/system/ipt-settings.service echo "Служба для запуска ipt-set создана..." #Добавим в автозагрузку systemctl enable ipt-settings #И запустим systemctl start ipt-settings # Если включен SELinux, разрешим порт if hash sestatus 2>/dev/null; then if sestatus | grep "Current mode" | grep -qs "enforcing"; then if [[ "$PORT" != '1194' || "$PROTOCOL" = 'tcp' ]]; then # semanage по умолчанию не доступен CentOS 6 if ! hash semanage 2>/dev/null; then yum install policycoreutils-python -y fi semanage port -a -t openvpn_port_t -p $PROTOCOL $PORT echo "Порт в semanage разрешён..." fi fi fi # And finally, restart OpenVPN echo "Запуск серера OpenVPN..." if pgrep systemd-journal; then systemctl restart openvpn@server.service systemctl enable openvpn@server.service else service openvpn restart chkconfig openvpn on fi # Client-common.txt будет нашим шаблоном для добавления новых пользователей позже echo "client dev tun proto $PROTOCOL remote $IP $PORT resolv-retry infinite nobind block-outside-dns persist-key persist-tun mute-replay-warnings remote-cert-eku \"TLS Web Server Authentication\" remote-cert-tls server tls-client key-direction 1 auth SHA512 cipher AES-256-CBC comp-lzo verb 3" > /etc/openvpn/client-common.txt # Создаём client.ovpn newclient "$CLIENT" echo "" echo "Сделано!" echo "" echo "Клиентский конфиг в файле" ~/"$CLIENT.ovpn" echo "Если нужны еще клиенты, то запустите скрипт еще раз." echo "Сервер будет перезагружен! После этого можете подключиться к нему с использованием клиентсокго файла." read -n1 -r -p "Нажмите любую кнопку для перезагрузки сервера..." reboot fi