Пишу для себя, чтобы не забыть как делал. 95 % рабочее. На комментарии отвечаю, когда увижу.
Показаны сообщения с ярлыком openconnect. Показать все сообщения
Показаны сообщения с ярлыком openconnect. Показать все сообщения
суббота, 1 февраля 2020 г.
суббота, 7 сентября 2019 г.
Astra Orel 2.12 установка openconnect
Установка openconnect
$ sudo apt install debian-archive-keyring dirmngr
$ sudo nano /etc/apt/sources.list
Добавить:
deb http://deb.debian.org/debian/ stretch main
#deb https://mirror.yandex.ru/debian/ stretch main contrib non-free
Сохранить.
$ sudo apt update
$ sudo apt install openconnect
$ sudo apt install debian-archive-keyring dirmngr
$ sudo nano /etc/apt/sources.list
Добавить:
deb http://deb.debian.org/debian/ stretch main
#deb https://mirror.yandex.ru/debian/ stretch main contrib non-free
Сохранить.
$ sudo apt update
$ sudo apt install openconnect
понедельник, 29 июля 2019 г.
воскресенье, 21 июля 2019 г.
Установка OpenConnect с самоподписанным сертификатом
Setup OpenConnect VPN Server for Cisco AnyConnect on Ubuntu 14.04 x64
Install OpenConnect Server on Ubuntu 16.04
Set up OpenConnect VPN Server (ocserv) on Ubuntu 16.04/17.10 with Let’s Encrypt
How to install ocserv (OpenConnect server, aka: free version of Cisco's Anyconnect) on Ubuntu 14.04
OCserv on Ubuntu for Cisco AnyConnect Client
Install OpenConnect VPN Server with Trusted Certificate from Let's Encrypt
OpenConnect Server with Duo Two-Factor Auth in Ubuntu 16.04
OpenConnect VPN Server Installation
在 Ubuntu 16.04.1 Server 上建置 OpenConnect SSL VPN Server
Openconnect 服务端 ocserv 的部署
How to Set up an OpenConnect VPN Server
мануал
Ocserv Firewall - iptables IPv4
Настройка iptables
Скрипт centos
Скрипт ubuntu
Linode CentOS 配置 ocserv
Клиент Windows 10:
After installing the GUI in Windows 10 ...
Windows 10 - invalid routes
Ссылка на рабочий клиент 1.51 !!! (не старше)
Установка с картинками
В данном описании вариант для 1С без перенаправления интернет трафика:
# apt update
# apt upgrade
# apt install mc
# adduser user
# usermod -aG sudo user
# su user
$ cd ~
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ip a
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):user@X.X.X.X
$ ls
Скачать и использовать для входа /home/user/.ssh/user@X.X.X.X
$ cp ~/.ssh/user@X.X.X.X.pub ~/.ssh/authorized_keys
$ rm ~/.ssh/user@X.X.X.X.pub
$ rm ~/.ssh/user@X.X.X.X
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ exit
# nano /etc/ssh/sshd_config
Проверить:
PasswordAuthentication no
.....
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PermitRootLogin no
Сохранить.
$ sudo systemctl reload sshd
Зайти от user
# отключим ipv6
$ sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
$ sudo sysctl -p
=========================================================
$ sudo apt install ocserv
$ sudo apt install gnutls-bin
$ sudo mkdir /etc/ocserv/ssl/
$ cd /etc/ocserv/ssl/
$ sudo -i
Все сертификаты формируем в /etc/ocserv/ssl/ !!!
(Если есть уже подготовленные кладем в root ca-key.pem ca-cert.pem)
$ sudo nano gen-client-cert.sh
Вставить
#!/bin/bash
USER=$1
CA_DIR=$2
SERIAL=`date +%s`
certtool --generate-privkey --outfile $USER-key.pem
cat << _EOF_ >user.tmpl
cn = "$USER"
unit = "users"
serial = "$SERIAL"
expiration_days = 3650
signing_key
tls_www_client
_EOF_
certtool --generate-certificate --load-privkey $USER-key.pem --load-ca-certificate $CA_DIR/ca-cert.pem --load-ca-privkey $CA_DIR/ca-key.pem --template user.tmpl --outfile $USER-cert.pem
openssl pkcs12 -export -inkey $USER-key.pem -in $USER-cert.pem -name "$USER VPN Client Cert" -certfile $CA_DIR/ca-cert.pem -out $USER.p12
Сохранить.
$ ip a
ниже в конце строки точка:
$ sudo sh gen-client-cert.sh user01@X.X.X.X .
.....
$ sudo sh gen-client-cert.sh user10@X.X.X.X .
$ cd /etc/ocserv/ssl/
$ mkdir /home/user/cert
$ sudo cp /etc/ocserv/ssl/ca-cert.pem /home/user/cert
$ sudo cp /etc/ocserv/ssl/ca-key.pem /home/user/cert
$ sudo cp /etc/ocserv/ssl/*.p12 /home/user/cert
$ cd /home/user/cert
$ sudo tar -czpf cert.tar.gz *
$ sudo chmod 700 /etc/ocserv/ssl/
Скачать на клиента /home/user/cert/cert.tar.gz
$ cd ~
$ sudo rm -R /home/user/cert
Задать клиентам ip
$ sudo mkdir /etc/ocserv/config-per-user/
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.2' > /etc/ocserv/config-per-user/server@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.3' > /etc/ocserv/config-per-user/user@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.101' > /etc/ocserv/config-per-user/user01@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.102' > /etc/ocserv/config-per-user/user02@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.103' > /etc/ocserv/config-per-user/user03@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.104' > /etc/ocserv/config-per-user/user04@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.105' > /etc/ocserv/config-per-user/user05@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.106' > /etc/ocserv/config-per-user/user06@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.107' > /etc/ocserv/config-per-user/user07@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.108' > /etc/ocserv/config-per-user/user08@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.109' > /etc/ocserv/config-per-user/user09@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.110' > /etc/ocserv/config-per-user/user10@X.X.X.X"
$ sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.$(date +%F)
$ sudo sed -i 's|^auth = "pam|#auth = "pam|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/#auth = "certificate"/auth = "certificate"/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/max-same-clients = 2/max-same-clients = 1/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|server-cert = /etc/ocserv/ssl/server-cert.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|server-key = /etc/ssl/private/ssl-cert-snakeoil.key|server-key = /etc/ocserv/ssl/server-key.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|ca-cert = /etc/ocserv/ssl/ca-cert.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/cert-user-oid = 0.9.2342.19200300.100.1.1/cert-user-oid = 2.5.4.3/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/ipv4-network = 192.168.1.0/ipv4-network = 10.10.10.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/dns = 192.168.1.2/dns = 8.8.8.8/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^route = 10.10.10.0/# route = 10.10.10.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^route = 192.168.0.0/# route = 192.168.0.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^\(try-mtu-discovery = \).*$/\1''true/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|#config-per-user = /etc/ocserv/config-per-user/|config-per-user = /etc/ocserv/config-per-user/|' /etc/ocserv/ocserv.conf
Или так:
$ cd ~
$ sudo nano ocserv_conf.sh
Вставить:
cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.$(date +%F)
sed -i 's|^auth = "pam|#auth = "pam|' /etc/ocserv/ocserv.conf
sed -i 's/#auth = "certificate"/auth = "certificate"/' /etc/ocserv/ocserv.conf
sed -i 's/max-same-clients = 2/max-same-clients = 1/' /etc/ocserv/ocserv.conf
sed -i 's|server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|server-cert = /etc/ocserv/ssl/server-cert.pem|' /etc/ocserv/ocserv.conf
sed -i 's|server-key = /etc/ssl/private/ssl-cert-snakeoil.key|server-key = /etc/ocserv/ssl/server-key.pem|' /etc/ocserv/ocserv.conf
sed -i 's|ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|ca-cert = /etc/ocserv/ssl/ca-cert.pem|' /etc/ocserv/ocserv.conf
sed -i 's/cert-user-oid = 0.9.2342.19200300.100.1.1/cert-user-oid = 2.5.4.3/' /etc/ocserv/ocserv.conf
sed -i 's/ipv4-network = 192.168.1.0/ipv4-network = 10.10.10.0/' /etc/ocserv/ocserv.conf
sed -i 's/dns = 192.168.1.2/dns = 8.8.8.8/' /etc/ocserv/ocserv.conf
sed -i 's/^route = 10.10.10.0/# route = 10.10.10.0/' /etc/ocserv/ocserv.conf
sed -i 's/^route = 192.168.0.0/# route = 192.168.0.0/' /etc/ocserv/ocserv.conf
sed -i 's/^\(try-mtu-discovery = \).*$/\1''true/' /etc/ocserv/ocserv.conf
sed -i 's|#config-per-user = /etc/ocserv/config-per-user/|config-per-user = /etc/ocserv/config-per-user/|' /etc/ocserv/ocserv.conf
Сохранить.
$ sudo sh ocserv_conf.sh
$ sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv.service
$ sudo nano /etc/systemd/system/ocserv.service
[Unit]
Description=OpenConnect SSL VPN server
Documentation=man:ocserv(8)
After=network-online.target
#Requires=ocserv.socket #Заккоменитировать!
[Service]
PrivateTmp=true
PIDFile=/var/run/ocserv.pid
ExecStart=/usr/sbin/ocserv --foreground --pid-file /var/run/ocserv.pid --config /etc/ocserv/ocserv.conf
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
#Also=ocserv.socket #Заккоменитировать!
Сохранить.
$ sudo systemctl daemon-reload
$ sudo systemctl enable ocserv.service
$ sudo systemctl restart ocserv.service
$ sudo systemctl status ocserv.service
#$ sudo systemctl stop ocserv.socket
#$ sudo systemctl disable ocserv.socket
Не делаем:
#$ sudo ocpasswd -c /etc/ocserv/ocpasswd username
Для адекватной проверки скорости соединения, нужно создать nat до перезагрузки
Узнаем имя сетевого адаптера :
$ ip a
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
==================================================
Не делаем:
В данном случае ens3:
$ sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
$ sudo iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
==================================================
Если нужна маршрутизация интернета постоянно, можно настроить ufw :
$ sudo ufw enable
$ sudo ufw allow 22
$ sudo ufw allow 443
#$ sudo nano /etc/default/ufw
$ sudo sed -i 's|IPV6=yes|IPV6=no|' /etc/default/ufw
$ sudo sed -i 's|DEFAULT_FORWARD_POLICY="DROP"|DEFAULT_FORWARD_POLICY="ACCEPT"|' /etc/default/ufw
$ ip a
..... ens18
Указать соответствующий ens3 или ens18:
#$ sudo nano /etc/ufw/before.rules
$ sudo -i
# echo "*nat" >> /etc/ufw/before.rules
# echo ":POSTROUTING ACCEPT [0:0]" >> /etc/ufw/before.rules
# echo "-A POSTROUTING -o ens3 -j MASQUERADE" >> /etc/ufw/before.rules
# echo "COMMIT" >> /etc/ufw/before.rules
# ufw disable && ufw enable
$ sudo ufw allow from x.x.x.x proto tcp to any port 22
#$ sudo ufw status numbered
#$ sudo ufw delete 3
#$ sudo ufw disable && sudo ufw enable
Можно проверерять вход с клиента
windows 10 gui client OpenConnect
Для windows переименовать ca-sert.pem в ca-sert.crt
ca-sert.crt установить в Доверенные корневые центры сертификации
Проверить скорость интернета
Отключение маршрутизации интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Подключение клиента на Ubuntu
Проверка
$ sudo apt install openconnect
Положить сертификат
/root/server.p12 - клиентский
/root/ca-cert.pem - сервера
Запустить локально:
$ sudo openconnect -b xxx.xxx.xxx.xxx -c /root/server.p12 --cafile /root/ca-cert.pem
Если в логах появится постоянно:
Jul 16 13:44:47 u1804 openconnect[1796]: DTLS handshake failed: The operation timed out
Jul 16 13:46:17 u1804 openconnect[1796]: DTLS handshake failed: Resource temporarily unavailable, try again.
Jul 16 13:50:48 u1804 openconnect[1796]: message repeated 3 times: [ DTLS handshake failed: Resource temporarily unavailable, try again.]
Добавить:
--no-dtls
$ sudo openconnect -b XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
Сделать службу:
$ sudo nano /etc/systemd/system/openconnect.service
Вставить:
[Unit]
Description=OpenConnect VPN Client
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/sbin/openconnect XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
#--no-dtls # Добавить в предыдущую строку для отключения dtls
ExecStop=/usr/bin/pkill openconnect
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
Сохранить.
$ sudo systemctl enable openconnect.service
$ sudo systemctl start openconnect.service
Если что то менялось:
$ sudo systemctl daemon-reload
$ sudo systemctl restart openconnect.service
Проверить ip
$ wget -O - -q icanhazip.com
Маршрутизация интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Если маршрут закомментирован
dns=8.8.8.8
#route = 10.10.10.0/255.255.255.0
или прямо указан (по умолчанию default даже если закомментировано)
route = default
Интернет трафик идет через tun0
На клиенте:
$ route
Отключение маршрутизации интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Интернет трафик идет через enp0s3
Если dns указан, обращение идет по tun0
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Если dns закомментирован, обращение идет по enp0s3
Горячая замена vpn при подключении по vpn
1. Положить в /root необходимые сертификаты.
2. $ sudo nano /etc/systemd/system/openconnect.service
Старую стрчку с подключением закомментировать, новую добавить.
#ExecStart=....
ExecStart=....
Сохранить.
3.
$ sudo systemctl daemon-reload && sudo systemctl restart openconnect.service
4. Подключиться по другой vpn.
Install OpenConnect Server on Ubuntu 16.04
Set up OpenConnect VPN Server (ocserv) on Ubuntu 16.04/17.10 with Let’s Encrypt
How to install ocserv (OpenConnect server, aka: free version of Cisco's Anyconnect) on Ubuntu 14.04
OCserv on Ubuntu for Cisco AnyConnect Client
Install OpenConnect VPN Server with Trusted Certificate from Let's Encrypt
OpenConnect Server with Duo Two-Factor Auth in Ubuntu 16.04
OpenConnect VPN Server Installation
在 Ubuntu 16.04.1 Server 上建置 OpenConnect SSL VPN Server
Openconnect 服务端 ocserv 的部署
How to Set up an OpenConnect VPN Server
мануал
Ocserv Firewall - iptables IPv4
Настройка iptables
Скрипт centos
Скрипт ubuntu
Linode CentOS 配置 ocserv
Клиент Windows 10:
After installing the GUI in Windows 10 ...
Windows 10 - invalid routes
Ссылка на рабочий клиент 1.51 !!! (не старше)
Установка с картинками
В данном описании вариант для 1С без перенаправления интернет трафика:
# apt update
# apt upgrade
# apt install mc
# adduser user
# usermod -aG sudo user
# su user
$ cd ~
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ip a
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):user@X.X.X.X
$ ls
Скачать и использовать для входа /home/user/.ssh/user@X.X.X.X
$ cp ~/.ssh/user@X.X.X.X.pub ~/.ssh/authorized_keys
$ rm ~/.ssh/user@X.X.X.X.pub
$ rm ~/.ssh/user@X.X.X.X
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ exit
# nano /etc/ssh/sshd_config
Проверить:
PasswordAuthentication no
.....
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PermitRootLogin no
Сохранить.
$ sudo systemctl reload sshd
Зайти от user
# отключим ipv6
$ sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
$ sudo sysctl -p
=========================================================
$ sudo apt install ocserv
$ sudo apt install gnutls-bin
$ sudo mkdir /etc/ocserv/ssl/
$ cd /etc/ocserv/ssl/
$ sudo -i
Все сертификаты формируем в /etc/ocserv/ssl/ !!!
Генерация CA
(Если есть уже подготовленные кладем в root ca-key.pem ca-cert.pem)
# certtool --generate-privkey --outfile ca-key.pem
# cat << _EOF_ >ca.tmpl
cn = "VPN CA"
organization = "Big Corp"
serial = 1
expiration_days = -1
ca
signing_key
cert_signing_key
crl_signing_key
_EOF_
# nanoca.tmpl
cn = "VPN CA"
organization = "Big Corp"
serial = 1
expiration_days = -1
ca
signing_key
cert_signing_key
crl_signing_key
Сохранить.
# certtool --generate-self-signed --load-privkey ca-key.pem \
--template ca.tmpl --outfile ca-cert.pem
Генерация сертификата локального сервера
В следующем примере создается ключ сервера и пара сертификатов.
Если у нас нет домена ниже прописываем свой ip
Если у нас нет домена ниже прописываем свой ip
ip_address = "1.2.3.4",dns_name заменить на свой, можно убрать или не убирать!
# certtool --generate-privkey --outfile server-key.pem
# cat << _EOF_ >server.tmpl
cn = "VPN server"
dns_name = "www.example.com"
dns_name = "vpn1.example.com"
ip_address = "1.2.3.4"
organization = "MyCompany"
expiration_days = -1
signing_key
encryption_key #only if the generated key is an RSA one
tls_www_server
_EOF_
# nanoserver.tmpl
cn = "VPN server"
dns_name = "www.example.com"
dns_name = "vpn1.example.com"
ip_address = "1.2.3.4"
organization = "MyCompany"
expiration_days = -1
signing_key
encryption_key #only if the generated key is an RSA one
tls_www_server
# certtool --generate-certificate --load-privkey server-key.pem \
--load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem \
--template server.tmpl --outfile server-cert.pem
Генерация клиентских сертификатов
==========================
ниже сделаем скриптом!
# certtool --generate-privkey --outfile user-key.pem
Ниже не делаем, сделаем скриптом gen-client-cert.sh:
# cat << _EOF_ >user.tmpl
cn = "user"
unit = "admins"
expiration_days = 365
signing_key
tls_www_client
_EOF_
# certtool --generate-certificate --load-privkey user-key.pem \
--load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem \
--template user.tmpl --outfile user-cert.pem
# certtool --to-p12 --load-privkey user-key.pem \
--pkcs-cipher 3des-pkcs12 \
--load-certificate user-cert.pem \
--outfile user.p12 --outder
==========================
Сделаем скриптомgen-client-cert.sh:
$ sudo nano gen-client-cert.sh
Вставить
#!/bin/bash
USER=$1
CA_DIR=$2
SERIAL=`date +%s`
certtool --generate-privkey --outfile $USER-key.pem
cat << _EOF_ >user.tmpl
cn = "$USER"
unit = "users"
serial = "$SERIAL"
expiration_days = 3650
signing_key
tls_www_client
_EOF_
certtool --generate-certificate --load-privkey $USER-key.pem --load-ca-certificate $CA_DIR/ca-cert.pem --load-ca-privkey $CA_DIR/ca-key.pem --template user.tmpl --outfile $USER-cert.pem
openssl pkcs12 -export -inkey $USER-key.pem -in $USER-cert.pem -name "$USER VPN Client Cert" -certfile $CA_DIR/ca-cert.pem -out $USER.p12
Сохранить.
$ ip a
ниже в конце строки точка:
$ sudo sh gen-client-cert.sh user01@X.X.X.X .
.....
$ sudo sh gen-client-cert.sh user10@X.X.X.X .
$ cd /etc/ocserv/ssl/
$ mkdir /home/user/cert
$ sudo cp /etc/ocserv/ssl/ca-cert.pem /home/user/cert
$ sudo cp /etc/ocserv/ssl/ca-key.pem /home/user/cert
$ sudo cp /etc/ocserv/ssl/*.p12 /home/user/cert
$ cd /home/user/cert
$ sudo tar -czpf cert.tar.gz *
$ sudo chmod 700 /etc/ocserv/ssl/
Скачать на клиента /home/user/cert/cert.tar.gz
$ cd ~
$ sudo rm -R /home/user/cert
Задать клиентам ip
$ sudo mkdir /etc/ocserv/config-per-user/
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.2' > /etc/ocserv/config-per-user/server@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.3' > /etc/ocserv/config-per-user/user@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.101' > /etc/ocserv/config-per-user/user01@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.102' > /etc/ocserv/config-per-user/user02@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.103' > /etc/ocserv/config-per-user/user03@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.104' > /etc/ocserv/config-per-user/user04@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.105' > /etc/ocserv/config-per-user/user05@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.106' > /etc/ocserv/config-per-user/user06@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.107' > /etc/ocserv/config-per-user/user07@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.108' > /etc/ocserv/config-per-user/user08@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.109' > /etc/ocserv/config-per-user/user09@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.110' > /etc/ocserv/config-per-user/user10@X.X.X.X"
$ sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.$(date +%F)
$ sudo sed -i 's|^auth = "pam|#auth = "pam|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/#auth = "certificate"/auth = "certificate"/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/max-same-clients = 2/max-same-clients = 1/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|server-cert = /etc/ocserv/ssl/server-cert.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|server-key = /etc/ssl/private/ssl-cert-snakeoil.key|server-key = /etc/ocserv/ssl/server-key.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|ca-cert = /etc/ocserv/ssl/ca-cert.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/cert-user-oid = 0.9.2342.19200300.100.1.1/cert-user-oid = 2.5.4.3/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/ipv4-network = 192.168.1.0/ipv4-network = 10.10.10.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/dns = 192.168.1.2/dns = 8.8.8.8/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^route = 10.10.10.0/# route = 10.10.10.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^route = 192.168.0.0/# route = 192.168.0.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^\(try-mtu-discovery = \).*$/\1''true/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|#config-per-user = /etc/ocserv/config-per-user/|config-per-user = /etc/ocserv/config-per-user/|' /etc/ocserv/ocserv.conf
Или так:
$ cd ~
$ sudo nano ocserv_conf.sh
Вставить:
cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.$(date +%F)
sed -i 's|^auth = "pam|#auth = "pam|' /etc/ocserv/ocserv.conf
sed -i 's/#auth = "certificate"/auth = "certificate"/' /etc/ocserv/ocserv.conf
sed -i 's/max-same-clients = 2/max-same-clients = 1/' /etc/ocserv/ocserv.conf
sed -i 's|server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|server-cert = /etc/ocserv/ssl/server-cert.pem|' /etc/ocserv/ocserv.conf
sed -i 's|server-key = /etc/ssl/private/ssl-cert-snakeoil.key|server-key = /etc/ocserv/ssl/server-key.pem|' /etc/ocserv/ocserv.conf
sed -i 's|ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|ca-cert = /etc/ocserv/ssl/ca-cert.pem|' /etc/ocserv/ocserv.conf
sed -i 's/cert-user-oid = 0.9.2342.19200300.100.1.1/cert-user-oid = 2.5.4.3/' /etc/ocserv/ocserv.conf
sed -i 's/ipv4-network = 192.168.1.0/ipv4-network = 10.10.10.0/' /etc/ocserv/ocserv.conf
sed -i 's/dns = 192.168.1.2/dns = 8.8.8.8/' /etc/ocserv/ocserv.conf
sed -i 's/^route = 10.10.10.0/# route = 10.10.10.0/' /etc/ocserv/ocserv.conf
sed -i 's/^route = 192.168.0.0/# route = 192.168.0.0/' /etc/ocserv/ocserv.conf
sed -i 's/^\(try-mtu-discovery = \).*$/\1''true/' /etc/ocserv/ocserv.conf
sed -i 's|#config-per-user = /etc/ocserv/config-per-user/|config-per-user = /etc/ocserv/config-per-user/|' /etc/ocserv/ocserv.conf
Сохранить.
$ sudo sh ocserv_conf.sh
$ sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv.service
$ sudo nano /etc/systemd/system/ocserv.service
[Unit]
Description=OpenConnect SSL VPN server
Documentation=man:ocserv(8)
After=network-online.target
#Requires=ocserv.socket #Заккоменитировать!
[Service]
PrivateTmp=true
PIDFile=/var/run/ocserv.pid
ExecStart=/usr/sbin/ocserv --foreground --pid-file /var/run/ocserv.pid --config /etc/ocserv/ocserv.conf
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
#Also=ocserv.socket #Заккоменитировать!
Сохранить.
$ sudo systemctl daemon-reload
$ sudo systemctl enable ocserv.service
$ sudo systemctl restart ocserv.service
$ sudo systemctl status ocserv.service
#$ sudo systemctl stop ocserv.socket
#$ sudo systemctl disable ocserv.socket
Не делаем:
#$ sudo ocpasswd -c /etc/ocserv/ocpasswd username
Для адекватной проверки скорости соединения, нужно создать nat до перезагрузки
Узнаем имя сетевого адаптера :
$ ip a
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
==================================================
Не делаем:
В данном случае ens3:
$ sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
$ sudo iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
==================================================
Если нужна маршрутизация интернета постоянно, можно настроить ufw :
$ sudo ufw enable
$ sudo ufw allow 22
$ sudo ufw allow 443
#$ sudo nano /etc/default/ufw
$ sudo sed -i 's|IPV6=yes|IPV6=no|' /etc/default/ufw
$ sudo sed -i 's|DEFAULT_FORWARD_POLICY="DROP"|DEFAULT_FORWARD_POLICY="ACCEPT"|' /etc/default/ufw
$ ip a
..... ens18
Указать соответствующий ens3 или ens18:
#$ sudo nano /etc/ufw/before.rules
$ sudo -i
# echo "*nat" >> /etc/ufw/before.rules
# echo ":POSTROUTING ACCEPT [0:0]" >> /etc/ufw/before.rules
# echo "-A POSTROUTING -o ens3 -j MASQUERADE" >> /etc/ufw/before.rules
# echo "COMMIT" >> /etc/ufw/before.rules
# ufw disable && ufw enable
# ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
443 ALLOW Anywhere
$ sudo ufw allow from x.x.x.x proto tcp to any port 22
#$ sudo ufw status numbered
#$ sudo ufw delete 3
#$ sudo ufw disable && sudo ufw enable
Можно проверерять вход с клиента
windows 10 gui client OpenConnect
Для windows переименовать ca-sert.pem в ca-sert.crt
ca-sert.crt установить в Доверенные корневые центры сертификации
Проверить скорость интернета
Отключение маршрутизации интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Подключение клиента на Ubuntu
Проверка
$ sudo apt install openconnect
Положить сертификат
/root/server.p12 - клиентский
/root/ca-cert.pem - сервера
Запустить локально:
$ sudo openconnect -b xxx.xxx.xxx.xxx -c /root/server.p12 --cafile /root/ca-cert.pem
Если в логах появится постоянно:
Jul 16 13:44:47 u1804 openconnect[1796]: DTLS handshake failed: The operation timed out
Jul 16 13:46:17 u1804 openconnect[1796]: DTLS handshake failed: Resource temporarily unavailable, try again.
Jul 16 13:50:48 u1804 openconnect[1796]: message repeated 3 times: [ DTLS handshake failed: Resource temporarily unavailable, try again.]
Добавить:
--no-dtls
$ sudo openconnect -b XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
Сделать службу:
$ sudo nano /etc/systemd/system/openconnect.service
Вставить:
[Unit]
Description=OpenConnect VPN Client
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/sbin/openconnect XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
#--no-dtls # Добавить в предыдущую строку для отключения dtls
ExecStop=/usr/bin/pkill openconnect
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
Сохранить.
$ sudo systemctl enable openconnect.service
$ sudo systemctl start openconnect.service
Если что то менялось:
$ sudo systemctl daemon-reload
$ sudo systemctl restart openconnect.service
Проверить ip
$ wget -O - -q icanhazip.com
Маршрутизация интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Если маршрут закомментирован
dns=8.8.8.8
#route = 10.10.10.0/255.255.255.0
или прямо указан (по умолчанию default даже если закомментировано)
route = default
Интернет трафик идет через tun0
На клиенте:
$ route
Отключение маршрутизации интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Интернет трафик идет через enp0s3
Если dns указан, обращение идет по tun0
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Если dns закомментирован, обращение идет по enp0s3
Горячая замена vpn при подключении по vpn
1. Положить в /root необходимые сертификаты.
2. $ sudo nano /etc/systemd/system/openconnect.service
Старую стрчку с подключением закомментировать, новую добавить.
#ExecStart=....
ExecStart=....
Сохранить.
3.
$ sudo systemctl daemon-reload && sudo systemctl restart openconnect.service
4. Подключиться по другой vpn.
воскресенье, 14 июля 2019 г.
windows 10 gui client OpenConnect
1. Авторизация по паролю, сертификаты letsencrypt
На некоторых экземплярах windows 10 работает, на других при подключении так:
Удалось настроить прописав сертификат:
ca-cert = /etc/letsencrypt/live/example.com/chain.pem
2. Вариант с самоподписанным сертификатом:
ca-cert = /etc/ocserv/ssl/ca-cert.pem
3. Вариант с самоподписанным сертификатом, вход по клиентскому сертификату,
его нужно предварительно импортировать.
На некоторых экземплярах windows 10 работает, на других при подключении так:
2019-07-14 22:27:01
| 2100 | There was a non-CA certificate in the trusted list:
OU=Copyright (c) 1997 Microsoft Corp.,OU=Microsoft
Corporation,CN=Microsoft Root Authority.
2019-07-14 22:27:01
| 2100 | There was a non-CA certificate in the trusted list:
C=US,O=MSFT,CN=Microsoft Authenticode(tm) Root Authority.
2019-07-14 22:27:01
| 2100 | There was a non-CA certificate in the trusted list: CN=Root
Agency.
Удалось настроить прописав сертификат:
ca-cert = /etc/letsencrypt/live/example.com/chain.pem
2. Вариант с самоподписанным сертификатом:
ca-cert = /etc/ocserv/ssl/ca-cert.pem
3. Вариант с самоподписанным сертификатом, вход по клиентскому сертификату,
его нужно предварительно импортировать.
Установка OpenConnect с самоподписанным сертификатом
Setup OpenConnect VPN Server for Cisco AnyConnect on Ubuntu 14.04 x64
Install OpenConnect Server on Ubuntu 16.04
Set up OpenConnect VPN Server (ocserv) on Ubuntu 16.04/17.10 with Let’s Encrypt
How to install ocserv (OpenConnect server, aka: free version of Cisco's Anyconnect) on Ubuntu 14.04
OCserv on Ubuntu for Cisco AnyConnect Client
Install OpenConnect VPN Server with Trusted Certificate from Let's Encrypt
OpenConnect Server with Duo Two-Factor Auth in Ubuntu 16.04
OpenConnect VPN Server Installation
在 Ubuntu 16.04.1 Server 上建置 OpenConnect SSL VPN Server
Openconnect 服务端 ocserv 的部署
мануал
Ocserv Firewall - iptables IPv4
Настройка iptables
Скрипт centos
Скрипт ubuntu
Linode CentOS 配置 ocserv
Клиент Windows 10:
After installing the GUI in Windows 10 ...
Windows 10 - invalid routes
Ссылка на рабочий клиент 1.51 !!! (не старше)
Установка с картинками
В данном описании вариант для 1С без перенаправления интернет трафика:
# apt update
# apt upgrade
# apt install mc
# adduser user
# usermod -aG sudo user
# su user
$ cd ~
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ip a
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):user@X.X.X.X
$ ls
Скачать и использовать для входа /home/user/.ssh/user@X.X.X.X
$ cp ~/.ssh/user@X.X.X.X.pub ~/.ssh/authorized_keys
$ rm ~/.ssh/user@X.X.X.X.pub
$ rm ~/.ssh/user@X.X.X.X
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ exit
# nano /etc/ssh/sshd_config
Проверить:
PasswordAuthentication no
.....
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PermitRootLogin no
Сохранить.
$ sudo systemctl reload sshd
Зайти от user
# отключим ipv6
$ sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
$ sudo sysctl -p
=========================================================
$ sudo apt install ocserv
$ sudo apt install gnutls-bin
$ sudo mkdir /etc/ocserv/ssl/
$ cd /etc/ocserv/ssl/
$ sudo certtool --generate-privkey --outfile ca-key.pem
$ sudo nano ca.tmpl
Вставить (для cn указать реальный ip 104.236.38.188)::
cn = "VPN CA"
organization = "Home.org"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key
Сохранить.
$ sudo certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem
$ sudo certtool --generate-privkey --outfile server-key.pem
$ sudo nano server.tmpl
Вставить (для cn указать реальный ip 104.236.38.188):
cn = "104.236.38.188"
organization = "Home.org"
serial = 2
expiration_days = 3650
encryption_key
signing_key
tls_www_server
Сохранить.
$ sudo certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem
$ sudo nano gen-client-cert.sh
Вставить
#!/bin/bash
USER=$1
CA_DIR=$2
SERIAL=`date +%s`
certtool --generate-privkey --outfile $USER-key.pem
cat << _EOF_ >user.tmpl
cn = "$USER"
unit = "users"
serial = "$SERIAL"
expiration_days = 3650
signing_key
tls_www_client
_EOF_
certtool --generate-certificate --load-privkey $USER-key.pem --load-ca-certificate $CA_DIR/ca-cert.pem --load-ca-privkey $CA_DIR/ca-key.pem --template user.tmpl --outfile $USER-cert.pem
openssl pkcs12 -export -inkey $USER-key.pem -in $USER-cert.pem -name "$USER VPN Client Cert" -certfile $CA_DIR/ca-cert.pem -out $USER.p12
Сохранить.
$ ip a
ниже в конце строки точка:
$ sudo sh gen-client-cert.sh user01@X.X.X.X .
.....
$ sudo sh gen-client-cert.sh user10@X.X.X.X .
=============================
Не делаем:
Скачать сертификаты:
Из папки /etc/ocserv/ssl/
ca-cert.pem
user01@X.X.X.X.p12
....
user10@X.X.X.X.p12
=============================
$ mkdir /home/user/cert
$ sudo cp /etc/ocserv/ssl/ca-cert.pem /home/user/cert
$ sudo cp /etc/ocserv/ssl/*.p12 /home/user/cert
$ cd /home/user/cert
$ sudo tar -czpf cert.tar.gz *
$ sudo chmod 700 /etc/ocserv/ssl/
Скачать на клиента /home/user/cert/cert.tar.gz
$ cd ~
$ sudo rm -R /home/user/cert
Задать клиентам ip
$ sudo mkdir /etc/ocserv/config-per-user/
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.2' > /etc/ocserv/config-per-user/server@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.3' > /etc/ocserv/config-per-user/user@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.101' > /etc/ocserv/config-per-user/user01@X.X.X.X"
....
....
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.110' > /etc/ocserv/config-per-user/user10@X.X.X.X"
$ sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.$(date +%F)
$ sudo sed -i 's|^auth = "pam|#auth = "pam|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/#auth = "certificate"/auth = "certificate"/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/max-same-clients = 2/max-same-clients = 1/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|server-cert = /etc/ocserv/ssl/server-cert.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|server-key = /etc/ssl/private/ssl-cert-snakeoil.key|server-key = /etc/ocserv/ssl/server-key.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|ca-cert = /etc/ocserv/ssl/ca-cert.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/cert-user-oid = 0.9.2342.19200300.100.1.1/cert-user-oid = 2.5.4.3/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/ipv4-network = 192.168.1.0/ipv4-network = 10.10.10.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/dns = 192.168.1.2/dns = 8.8.8.8/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^route = 10.10.10.0/# route = 10.10.10.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^route = 192.168.0.0/# route = 192.168.0.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^\(try-mtu-discovery = \).*$/\1''true/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|#config-per-user = /etc/ocserv/config-per-user/|config-per-user = /etc/ocserv/config-per-user/|' /etc/ocserv/ocserv.conf
Или так:
$ cd ~
$ sudo nano ocserv_conf.sh
Вставить:
cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.$(date +%F)
sed -i 's|^auth = "pam|#auth = "pam|' /etc/ocserv/ocserv.conf
sed -i 's/#auth = "certificate"/auth = "certificate"/' /etc/ocserv/ocserv.conf
sed -i 's/max-same-clients = 2/max-same-clients = 1/' /etc/ocserv/ocserv.conf
sed -i 's|server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|server-cert = /etc/ocserv/ssl/server-cert.pem|' /etc/ocserv/ocserv.conf
sed -i 's|server-key = /etc/ssl/private/ssl-cert-snakeoil.key|server-key = /etc/ocserv/ssl/server-key.pem|' /etc/ocserv/ocserv.conf
sed -i 's|ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|ca-cert = /etc/ocserv/ssl/ca-cert.pem|' /etc/ocserv/ocserv.conf
sed -i 's/cert-user-oid = 0.9.2342.19200300.100.1.1/cert-user-oid = 2.5.4.3/' /etc/ocserv/ocserv.conf
sed -i 's/ipv4-network = 192.168.1.0/ipv4-network = 10.10.10.0/' /etc/ocserv/ocserv.conf
sed -i 's/dns = 192.168.1.2/dns = 8.8.8.8/' /etc/ocserv/ocserv.conf
sed -i 's/^route = 10.10.10.0/# route = 10.10.10.0/' /etc/ocserv/ocserv.conf
sed -i 's/^route = 192.168.0.0/# route = 192.168.0.0/' /etc/ocserv/ocserv.conf
sed -i 's/^\(try-mtu-discovery = \).*$/\1''true/' /etc/ocserv/ocserv.conf
sed -i 's|#config-per-user = /etc/ocserv/config-per-user/|config-per-user = /etc/ocserv/config-per-user/|' /etc/ocserv/ocserv.conf
Сохранить.
$ sudo sh ocserv_conf.sh
$ sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv.service
$ sudo nano /etc/systemd/system/ocserv.service
[Unit]
Description=OpenConnect SSL VPN server
Documentation=man:ocserv(8)
After=network-online.target
#Requires=ocserv.socket #Заккоменитировать!
[Service]
PrivateTmp=true
PIDFile=/var/run/ocserv.pid
ExecStart=/usr/sbin/ocserv --foreground --pid-file /var/run/ocserv.pid --config /etc/ocserv/ocserv.conf
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
#Also=ocserv.socket #Заккоменитировать!
Сохранить.
$ sudo systemctl daemon-reload
$ sudo systemctl enable ocserv.service
$ sudo systemctl restart ocserv.service
$ sudo systemctl status ocserv.service
#$ sudo systemctl stop ocserv.socket
#$ sudo systemctl disable ocserv.socket
Не делаем:
#$ sudo ocpasswd -c /etc/ocserv/ocpasswd username
Для адекватной проверки скорости соединения, нужно создать nat до перезагрузки
Узнаем имя сетевого адаптера :
$ ip a
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
==================================================
Не делаем:
В данном случае ens3:
$ sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
$ sudo iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
==================================================
Если нужна маршрутизация интернета постоянно, можно настроить ufw :
$ sudo ufw enable
$ sudo ufw allow 22
$ sudo ufw allow 443
#$ sudo nano /etc/default/ufw
$ sudo sed -i 's|IPV6=yes|IPV6=no|' /etc/default/ufw
$ sudo sed -i 's|DEFAULT_FORWARD_POLICY="DROP"|DEFAULT_FORWARD_POLICY="ACCEPT"|' /etc/default/ufw
$ ip a
..... ens18
Указать соответствующий ens3 или ens18:
#$ sudo nano /etc/ufw/before.rules
$ sudo -i
# echo "*nat" >> /etc/ufw/before.rules
# echo ":POSTROUTING ACCEPT [0:0]" >> /etc/ufw/before.rules
# echo "-A POSTROUTING -o ens3 -j MASQUERADE" >> /etc/ufw/before.rules
# echo "COMMIT" >> /etc/ufw/before.rules
# ufw disable && ufw enable
Можно проверерять вход с клиента
windows 10 gui client OpenConnect
Проверить скорость интернета
Отключение маршрутизации интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Подключение клиента на Ubuntu
Проверка
$ sudo apt install openconnect
Положить сертификат
/root/server.p12 - клиентский
/root/ca-cert.pem - сервера
Запустить локально:
$ sudo openconnect -b xxx.xxx.xxx.xxx -c /root/server.p12 --cafile /root/ca-cert.pem
Если в логах появится постоянно:
Jul 16 13:44:47 u1804 openconnect[1796]: DTLS handshake failed: The operation timed out
Jul 16 13:46:17 u1804 openconnect[1796]: DTLS handshake failed: Resource temporarily unavailable, try again.
Jul 16 13:50:48 u1804 openconnect[1796]: message repeated 3 times: [ DTLS handshake failed: Resource temporarily unavailable, try again.]
Добавить:
--no-dtls
$ sudo openconnect -b XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
Сделать службу:
$ sudo nano /etc/systemd/system/openconnect.service
Вставить:
[Unit]
Description=OpenConnect VPN Client
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/sbin/openconnect XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
#--no-dtls # Добавить в предыдущую строку для отключения dtls
ExecStop=/usr/bin/pkill openconnect
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
Сохранить.
$ sudo systemctl enable openconnect.service
$ sudo systemctl start openconnect.service
Если что то менялось:
$ sudo systemctl daemon-reload
$ sudo systemctl restart openconnect.service
Проверить ip
$ wget -O - -q icanhazip.com
Маршрутизация интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Если маршрут закомментирован
dns=8.8.8.8
#route = 10.10.10.0/255.255.255.0
или прямо указан (по умолчанию default даже если закомментировано)
route = default
Интернет трафик идет через tun0
На клиенте:
$ route
Отключение маршрутизации интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Интернет трафик идет через enp0s3
Если dns указан, обращение идет по tun0
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Если dns закомментирован, обращение идет по enp0s3
Горячая замена vpn при подключении по vpn
1. Положить в /root необходимые сертификаты.
2. $ sudo nano /etc/systemd/system/openconnect.service
Старую стрчку с подключением закомментировать, новую добавить.
#ExecStart=....
ExecStart=....
Сохранить.
3.
$ sudo systemctl daemon-reload && sudo systemctl restart openconnect.service
4. Подключиться по другой vpn.
Install OpenConnect Server on Ubuntu 16.04
Set up OpenConnect VPN Server (ocserv) on Ubuntu 16.04/17.10 with Let’s Encrypt
How to install ocserv (OpenConnect server, aka: free version of Cisco's Anyconnect) on Ubuntu 14.04
OCserv on Ubuntu for Cisco AnyConnect Client
Install OpenConnect VPN Server with Trusted Certificate from Let's Encrypt
OpenConnect Server with Duo Two-Factor Auth in Ubuntu 16.04
OpenConnect VPN Server Installation
在 Ubuntu 16.04.1 Server 上建置 OpenConnect SSL VPN Server
Openconnect 服务端 ocserv 的部署
мануал
Ocserv Firewall - iptables IPv4
Настройка iptables
Скрипт centos
Скрипт ubuntu
Linode CentOS 配置 ocserv
Клиент Windows 10:
After installing the GUI in Windows 10 ...
Windows 10 - invalid routes
Ссылка на рабочий клиент 1.51 !!! (не старше)
Установка с картинками
В данном описании вариант для 1С без перенаправления интернет трафика:
# apt update
# apt upgrade
# apt install mc
# adduser user
# usermod -aG sudo user
# su user
$ cd ~
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ip a
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):user@X.X.X.X
$ ls
Скачать и использовать для входа /home/user/.ssh/user@X.X.X.X
$ cp ~/.ssh/user@X.X.X.X.pub ~/.ssh/authorized_keys
$ rm ~/.ssh/user@X.X.X.X.pub
$ rm ~/.ssh/user@X.X.X.X
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ exit
# nano /etc/ssh/sshd_config
Проверить:
PasswordAuthentication no
.....
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PermitRootLogin no
Сохранить.
$ sudo systemctl reload sshd
Зайти от user
# отключим ipv6
$ sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
$ sudo sysctl -p
=========================================================
$ sudo apt install ocserv
$ sudo apt install gnutls-bin
$ sudo mkdir /etc/ocserv/ssl/
$ cd /etc/ocserv/ssl/
$ sudo certtool --generate-privkey --outfile ca-key.pem
$ sudo nano ca.tmpl
Вставить (для cn указать реальный ip 104.236.38.188)::
cn = "VPN CA"
organization = "Home.org"
serial = 1
expiration_days = 3650
ca
signing_key
cert_signing_key
crl_signing_key
Сохранить.
$ sudo certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem
$ sudo certtool --generate-privkey --outfile server-key.pem
$ sudo nano server.tmpl
Вставить (для cn указать реальный ip 104.236.38.188):
cn = "104.236.38.188"
organization = "Home.org"
serial = 2
expiration_days = 3650
encryption_key
signing_key
tls_www_server
Сохранить.
$ sudo certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem
$ sudo nano gen-client-cert.sh
Вставить
#!/bin/bash
USER=$1
CA_DIR=$2
SERIAL=`date +%s`
certtool --generate-privkey --outfile $USER-key.pem
cat << _EOF_ >user.tmpl
cn = "$USER"
unit = "users"
serial = "$SERIAL"
expiration_days = 3650
signing_key
tls_www_client
_EOF_
certtool --generate-certificate --load-privkey $USER-key.pem --load-ca-certificate $CA_DIR/ca-cert.pem --load-ca-privkey $CA_DIR/ca-key.pem --template user.tmpl --outfile $USER-cert.pem
openssl pkcs12 -export -inkey $USER-key.pem -in $USER-cert.pem -name "$USER VPN Client Cert" -certfile $CA_DIR/ca-cert.pem -out $USER.p12
Сохранить.
$ ip a
ниже в конце строки точка:
$ sudo sh gen-client-cert.sh user01@X.X.X.X .
.....
$ sudo sh gen-client-cert.sh user10@X.X.X.X .
=============================
Не делаем:
Скачать сертификаты:
Из папки /etc/ocserv/ssl/
ca-cert.pem
user01@X.X.X.X.p12
....
user10@X.X.X.X.p12
=============================
$ mkdir /home/user/cert
$ sudo cp /etc/ocserv/ssl/ca-cert.pem /home/user/cert
$ sudo cp /etc/ocserv/ssl/*.p12 /home/user/cert
$ cd /home/user/cert
$ sudo tar -czpf cert.tar.gz *
$ sudo chmod 700 /etc/ocserv/ssl/
Скачать на клиента /home/user/cert/cert.tar.gz
$ cd ~
$ sudo rm -R /home/user/cert
Задать клиентам ip
$ sudo mkdir /etc/ocserv/config-per-user/
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.2' > /etc/ocserv/config-per-user/server@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.3' > /etc/ocserv/config-per-user/user@X.X.X.X"
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.101' > /etc/ocserv/config-per-user/user01@X.X.X.X"
....
....
sudo /bin/su -c "echo 'explicit-ipv4=10.10.10.110' > /etc/ocserv/config-per-user/user10@X.X.X.X"
$ sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.$(date +%F)
$ sudo sed -i 's|^auth = "pam|#auth = "pam|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/#auth = "certificate"/auth = "certificate"/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/max-same-clients = 2/max-same-clients = 1/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|server-cert = /etc/ocserv/ssl/server-cert.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|server-key = /etc/ssl/private/ssl-cert-snakeoil.key|server-key = /etc/ocserv/ssl/server-key.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|ca-cert = /etc/ocserv/ssl/ca-cert.pem|' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/cert-user-oid = 0.9.2342.19200300.100.1.1/cert-user-oid = 2.5.4.3/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/ipv4-network = 192.168.1.0/ipv4-network = 10.10.10.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/dns = 192.168.1.2/dns = 8.8.8.8/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^route = 10.10.10.0/# route = 10.10.10.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^route = 192.168.0.0/# route = 192.168.0.0/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's/^\(try-mtu-discovery = \).*$/\1''true/' /etc/ocserv/ocserv.conf
$ sudo sed -i 's|#config-per-user = /etc/ocserv/config-per-user/|config-per-user = /etc/ocserv/config-per-user/|' /etc/ocserv/ocserv.conf
Или так:
$ cd ~
$ sudo nano ocserv_conf.sh
Вставить:
cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.$(date +%F)
sed -i 's|^auth = "pam|#auth = "pam|' /etc/ocserv/ocserv.conf
sed -i 's/#auth = "certificate"/auth = "certificate"/' /etc/ocserv/ocserv.conf
sed -i 's/max-same-clients = 2/max-same-clients = 1/' /etc/ocserv/ocserv.conf
sed -i 's|server-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|server-cert = /etc/ocserv/ssl/server-cert.pem|' /etc/ocserv/ocserv.conf
sed -i 's|server-key = /etc/ssl/private/ssl-cert-snakeoil.key|server-key = /etc/ocserv/ssl/server-key.pem|' /etc/ocserv/ocserv.conf
sed -i 's|ca-cert = /etc/ssl/certs/ssl-cert-snakeoil.pem|ca-cert = /etc/ocserv/ssl/ca-cert.pem|' /etc/ocserv/ocserv.conf
sed -i 's/cert-user-oid = 0.9.2342.19200300.100.1.1/cert-user-oid = 2.5.4.3/' /etc/ocserv/ocserv.conf
sed -i 's/ipv4-network = 192.168.1.0/ipv4-network = 10.10.10.0/' /etc/ocserv/ocserv.conf
sed -i 's/dns = 192.168.1.2/dns = 8.8.8.8/' /etc/ocserv/ocserv.conf
sed -i 's/^route = 10.10.10.0/# route = 10.10.10.0/' /etc/ocserv/ocserv.conf
sed -i 's/^route = 192.168.0.0/# route = 192.168.0.0/' /etc/ocserv/ocserv.conf
sed -i 's/^\(try-mtu-discovery = \).*$/\1''true/' /etc/ocserv/ocserv.conf
sed -i 's|#config-per-user = /etc/ocserv/config-per-user/|config-per-user = /etc/ocserv/config-per-user/|' /etc/ocserv/ocserv.conf
Сохранить.
$ sudo sh ocserv_conf.sh
$ sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv.service
$ sudo nano /etc/systemd/system/ocserv.service
[Unit]
Description=OpenConnect SSL VPN server
Documentation=man:ocserv(8)
After=network-online.target
#Requires=ocserv.socket #Заккоменитировать!
[Service]
PrivateTmp=true
PIDFile=/var/run/ocserv.pid
ExecStart=/usr/sbin/ocserv --foreground --pid-file /var/run/ocserv.pid --config /etc/ocserv/ocserv.conf
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
#Also=ocserv.socket #Заккоменитировать!
Сохранить.
$ sudo systemctl daemon-reload
$ sudo systemctl enable ocserv.service
$ sudo systemctl restart ocserv.service
$ sudo systemctl status ocserv.service
#$ sudo systemctl stop ocserv.socket
#$ sudo systemctl disable ocserv.socket
Не делаем:
#$ sudo ocpasswd -c /etc/ocserv/ocpasswd username
Для адекватной проверки скорости соединения, нужно создать nat до перезагрузки
Узнаем имя сетевого адаптера :
$ ip a
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
==================================================
Не делаем:
В данном случае ens3:
$ sudo iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
$ sudo iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
==================================================
Если нужна маршрутизация интернета постоянно, можно настроить ufw :
$ sudo ufw enable
$ sudo ufw allow 22
$ sudo ufw allow 443
#$ sudo nano /etc/default/ufw
$ sudo sed -i 's|IPV6=yes|IPV6=no|' /etc/default/ufw
$ sudo sed -i 's|DEFAULT_FORWARD_POLICY="DROP"|DEFAULT_FORWARD_POLICY="ACCEPT"|' /etc/default/ufw
$ ip a
..... ens18
Указать соответствующий ens3 или ens18:
#$ sudo nano /etc/ufw/before.rules
$ sudo -i
# echo "*nat" >> /etc/ufw/before.rules
# echo ":POSTROUTING ACCEPT [0:0]" >> /etc/ufw/before.rules
# echo "-A POSTROUTING -o ens3 -j MASQUERADE" >> /etc/ufw/before.rules
# echo "COMMIT" >> /etc/ufw/before.rules
# ufw disable && ufw enable
# ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
443 ALLOW Anywhere
Можно проверерять вход с клиента
windows 10 gui client OpenConnect
Проверить скорость интернета
Отключение маршрутизации интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Подключение клиента на Ubuntu
Проверка
$ sudo apt install openconnect
Положить сертификат
/root/server.p12 - клиентский
/root/ca-cert.pem - сервера
Запустить локально:
$ sudo openconnect -b xxx.xxx.xxx.xxx -c /root/server.p12 --cafile /root/ca-cert.pem
Если в логах появится постоянно:
Jul 16 13:44:47 u1804 openconnect[1796]: DTLS handshake failed: The operation timed out
Jul 16 13:46:17 u1804 openconnect[1796]: DTLS handshake failed: Resource temporarily unavailable, try again.
Jul 16 13:50:48 u1804 openconnect[1796]: message repeated 3 times: [ DTLS handshake failed: Resource temporarily unavailable, try again.]
Добавить:
--no-dtls
$ sudo openconnect -b XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
Сделать службу:
$ sudo nano /etc/systemd/system/openconnect.service
Вставить:
[Unit]
Description=OpenConnect VPN Client
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/sbin/openconnect XXX.XXX.XXX.XXX -c /root/server@XXX.XXX.XXX.XXX.p12 --key-password=password --cafile /root/ca-cert.pem --no-dtls --syslog
#--no-dtls # Добавить в предыдущую строку для отключения dtls
ExecStop=/usr/bin/pkill openconnect
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
Сохранить.
$ sudo systemctl enable openconnect.service
$ sudo systemctl start openconnect.service
Если что то менялось:
$ sudo systemctl daemon-reload
$ sudo systemctl restart openconnect.service
Проверить ip
$ wget -O - -q icanhazip.com
Маршрутизация интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Если маршрут закомментирован
dns=8.8.8.8
#route = 10.10.10.0/255.255.255.0
или прямо указан (по умолчанию default даже если закомментировано)
route = default
Интернет трафик идет через tun0
На клиенте:
$ route
Отключение маршрутизации интернет трафика:
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Интернет трафик идет через enp0s3
Если dns указан, обращение идет по tun0
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns=8.8.8.8
route = 10.10.10.0/255.255.255.0
#route = default
Сохранить.
$ sudo systemctl restart ocserv
Если dns закомментирован, обращение идет по enp0s3
Горячая замена vpn при подключении по vpn
1. Положить в /root необходимые сертификаты.
2. $ sudo nano /etc/systemd/system/openconnect.service
Старую стрчку с подключением закомментировать, новую добавить.
#ExecStart=....
ExecStart=....
Сохранить.
3.
$ sudo systemctl daemon-reload && sudo systemctl restart openconnect.service
4. Подключиться по другой vpn.
среда, 10 июля 2019 г.
OpenConnect задать ip клиенту
Совместная работа OpenConnect и OpenVPN в среде Windows
Импорт клиентского сертификата windows
Должно быть сделано это продолжение.
Для пользователя server:
$ cd /etc/ocserv/ssl/
$ sudo ocpasswd -c /etc/ocserv/ocpasswd server
Enter password:
Re-enter password:
Запустите следующую команду для создания закрытого ключа клиента server
$ sudo certtool --generate-privkey --outfile server-privkey.pem
$ sudo nano server.cfg
Скопировать ниже, uid = "server", пользователя созданного выше:
# X.509 Certificate options
# The organization of the subject.
organization = "Example Org"
# The common name of the certificate owner.
cn = "server"
# A user id of the certificate owner.
uid = "server"
# In how many days, counting from today, this certificate will expire. Use -1 if there is no expiration date.
expiration_days = 3650
# Whether this certificate will be used for a TLS server
tls_www_client
# Whether this certificate will be used to sign data
signing_key
# Whether this certificate will be used to encrypt data (needed
# in TLS RSA ciphersuites). Note that it is preferred to use different
# keys for encryption and signing.
encryption_key
Сохранить.
Запустите следующую команду для создания сертификата клиента, который будет подписан закрытым ключом CA.
$ sudo certtool --generate-certificate --load-privkey server-privkey.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-privkey.pem --template server.cfg --outfile server-cert.pem
Объедините закрытый ключ клиента и сертификат в файле PKCS # 12, который защищен PIN-кодом.
$ sudo certtool --to-p12 --load-privkey server-privkey.pem --load-certificate server-cert.pem --pkcs-cipher aes-256 --outfile server.p12 --outder
Generating a PKCS #12 structure...
Loading private key list...
Loaded 1 private keys.
Enter a name for the key: server
Enter password:
Confirm password:
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
config-per-user = /etc/ocserv/config-per-user/
Сохранить.
$ sudo mkdir /etc/ocserv/config-per-user/
$ sudo nano /etc/ocserv/config-per-user/server
explicit-ipv4=10.10.10.2
Сохранить
$ sudo systemctl restart ocserv
Подключение клиента на Ubuntu
Проверка
$ sudo apt install openconnect
Положить сертификат /root/server.p12
$ sudo openconnect -b vpn.example.com -c /root/server.p12
$ sudo /bin/bash -c '/bin/echo -n password | /usr/sbin/openconnect vpn.example.com -c /root/server.p12'
$ sudo nano /etc/systemd/system/openconnect.service
Вставить:
[Unit]
Description=OpenConnect VPN Client
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
#ExecStart=/bin/bash -c '/bin/echo -n password | /usr/sbin/openconnect vpn.example.com -u username --passwd-on-stdin'
ExecStart=/bin/bash -c '/bin/echo -n password | /usr/sbin/openconnect vpn.example.com -c /root/server.p12'
ExecStop=/usr/bin/pkill openconnect
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
Сохранить.
$ sudo systemctl enable openconnect.service
$ sudo systemctl start openconnect.service
Если что то менялось:
$ sudo systemctl daemon-reload
$ sudo systemctl start openconnect.service
Под windows сделать reconnect (если перезагрузка сервера) через 2 с.
start.bat
:again
"c:\Program Files (x86)\OpenConnect-GUI\openconnect.exe" vpn.com -c client.p12 --key-password=password --reconnect-timeout 2
goto again
e:\ubuntu\Openconnect>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 2' {500EBB39-0CC1-4CBB-A1AA-7DECD679C5D5}
'Ethernet 3' {879AEEC2-87B6-4F0B-BFC6-78046DC6A513}
'Ethernet 4' {D64B1550-D033-4810-8F13-03B18992A20C}
'Ethernet 5' {CA18A6B2-4FAF-4247-9A12-17080869463C}
'Ethernet 6' {361E1C54-5E8F-4450-AD13-6FCAF8E9100A}
'Ethernet 7' {D0C959D0-694C-4984-96A9-A6A8869052A8}
"C:\Program Files\TAP-Windows\bin\addtap.bat"
Для совместной работы OpenVPN c OpenConnect через gui совет наделать много tap, (по числу соединений), для OpenVPN с конца, указывая в конфигах:
;dev-node MyTap
dev-node 'Ethernet 7'
Для OpenConnect tap от 'Ethernet 2' и далее.
вторник, 9 июля 2019 г.
понедельник, 8 июля 2019 г.
Установка OpenConnect на Ubuntu 18.04
Продолжение:
Совместимый с CISCO AnyClient VPN сервер OpenConnect на Linux
Set up OpenConnect VPN Server (ocserv) on Ubuntu 16.04/18.04 with Let’s Encrypt
How to Set up Certificate Authentication in OpenConnect VPN Server (ocserv)
Перевод?
Настройка OpenConnect VPN Server (ocserv) на Ubuntu 16.04 / 17.10 с Let’s Encrypt
Настройка аутентификации по сертификату в OpenConnect VPN Server (ocserv)
мануал
Клиент Windows 10:
After installing the GUI in Windows 10 ...
Windows 10 - invalid routes
Ссылка на рабочий клиент 1.51 !!! (не старше)
Установка с картинками
В данном описании вариант для 1С без перенаправления интернет трафика:
# apt update
# apt upgrade
# apt install mc
# adduser user
# usermod -aG sudo user
# su user
$ cd ~
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa
Скачать и использовать для входа /home/user/.ssh/id_rsa
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ rm ~/.ssh/id_rsa.pub
$ rm ~/.ssh/id_rsa
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ exit
# nano /etc/ssh/sshd_config
Проверить:
PasswordAuthentication no
.....
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Сохранить.
$ sudo systemctl reload sshd
После проверки входа и sudo
Отключить вход root по ssh
$ sudo nano /etc/ssh/sshd_config
Исправить:
PermitRootLogin no
Сохранить.
$ sudo systemctl reload sshd
# отключим ipv6
$ sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
$ sudo sysctl -p
=========================================================
$ sudo apt install ocserv
$ sudo systemctl status ocserv
#$ sudo apt install software-properties-common
#$ sudo add-apt-repository ppa:certbot/certbot
#$ sudo apt update
$ sudo apt install certbot
$ certbot --version
certbot 0.31.0
#$ sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email your-email-address -d vpn.example.com
$ sudo apt install apache2
$ sudo nano /etc/apache2/sites-available/vpn.example.com.conf
<VirtualHost *:80>
ServerName vpn.example.com
DocumentRoot /var/www/vpn.example.com
</VirtualHost>
Сохранить.
$ sudo mkdir /var/www/vpn.example.com
$ sudo chown www-data:www-data /var/www/vpn.example.com -R
$ sudo a2ensite vpn.example.com
$ sudo systemctl reload apache2
$ sudo certbot certonly --webroot --agree-tos --email your-email-address -d vpn.example.com -w /var/www/vpn.example.com
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem
ca-cert = /etc/letsencrypt/live/vpn.example.com/chain.pem
max-clients = 16
max-same-clients = 0
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1"
try-mtu-discovery = true
default-domain = vpn.example.com
ipv4-network = 10.10.10.0
ipv4-netmask = 255.255.255.0
tunnel-all-dns = true
#dns = 1.1.1.1
#route = default
route = 10.10.10.0/255.255.255.0
no-route = 192.168.0.0/255.255.255.0
Сохранить.
$ sudo systemctl restart ocserv
$ sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv.service
$ sudo nano /etc/systemd/system/ocserv.service
[Unit]
Description=OpenConnect SSL VPN server
Documentation=man:ocserv(8)
After=network-online.target
#Requires=ocserv.socket #Заккоменитировать!
[Service]
PrivateTmp=true
PIDFile=/var/run/ocserv.pid
ExecStart=/usr/sbin/ocserv --foreground --pid-file /var/run/ocserv.pid --config /etc/ocserv/ocserv.conf
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
#Also=ocserv.socket #Заккоменитировать!
Сохранить.
$ sudo systemctl daemon-reload
$ sudo systemctl stop ocserv.socket
$ sudo systemctl disable ocserv.socket
$ sudo systemctl restart ocserv.service
$ systemctl status ocserv
$ sudo ocpasswd -c /etc/ocserv/ocpasswd username
Можно проверерять вход с клиента
На клиенте:
$ sudo apt install openconnect
$ sudo apt install net-tools
$ route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 enp0s3
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s3
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
$ sudo openconnect -b vpn.example.com:443
$ route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default 0.0.0.0 0.0.0.0 U 0 0 0 tun0
default _gateway 0.0.0.0 UG 100 0 0 enp0s3
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s3
XXX.XXX.XXX.XXX _gateway 255.255.255.255 UGH 0 0 0 enp0s3
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
user@ud1804:~$ wget -O - -q icanhazip.com
XXX.XXX.XXX.XXX
Для адекватной проверки скорости соединения, нужно создать nat до перезагрузки
Узнаем имя сетевого адаптера :
$ ip a
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
В данном случае ens18:
$ sudo iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
$ sudo iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
dns = 10.10.10.1
route = default
#route = 10.10.10.0/255.255.255.0
Сохранить.
$ sudo systemctl restart ocserv
Адекватное измерение www.speedtest.net
После измерения
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns = 10.10.10.1
#route = default
route = 10.10.10.0/255.255.255.0
Сохранить.
$ sudo reboot
Для подключения без пароля, настроим аутенфикацию по сертификату в соответствии с
How to Set up Certificate Authentication in OpenConnect VPN Server (ocserv)
и переводом:
Настройка аутентификации по сертификату в OpenConnect VPN Server (ocserv)
$ sudo apt install gnutls-bin
$ sudo mkdir /etc/ocserv/ssl/
$ cd /etc/ocserv/ssl/
$ sudo certtool --generate-privkey --outfile ca-privkey.pem
$ sudo nano ca-cert.cfg
Скопировать ниже:
# X.509 Certificate options
# The organization of the subject.
organization = "Example Org"
# The common name of the certificate owner.
cn = "Example CA"
# The serial number of the certificate.
serial = 001
# In how many days, counting from today, this certificate will expire. Use -1 if there is no expiration date.
expiration_days = -1
# Whether this is a CA certificate or not
ca
# Whether this certificate will be used to sign data
signing_key
# Whether this key will be used to sign other certificates.
cert_signing_key
# Whether this key will be used to sign CRLs.
crl_signing_key
Сохранить.
$ sudo certtool --generate-self-signed --load-privkey ca-privkey.pem --template ca-cert.cfg --outfile ca-cert.pem
$ sudo certtool --generate-privkey --outfile client-privkey.pem
$ sudo nano client-cert.cfg
Скопировать ниже, uid = "username", пользователя созданного выше:
# X.509 Certificate options
# The organization of the subject.
organization = "My Org"
# The common name of the certificate owner.
cn = "John Doe"
# A user id of the certificate owner.
uid = "username"
# In how many days, counting from today, this certificate will expire. Use -1 if there is no expiration date.
expiration_days = 3650
# Whether this certificate will be used for a TLS server
tls_www_client
# Whether this certificate will be used to sign data
signing_key
# Whether this certificate will be used to encrypt data (needed
# in TLS RSA ciphersuites). Note that it is preferred to use different
# keys for encryption and signing.
encryption_key
Сохранить.
$ sudo certtool --generate-certificate --load-privkey client-privkey.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-privkey.pem --template client-cert.cfg --outfile client-cert.pem
$ sudo certtool --to-p12 --load-privkey client-privkey.pem --load-certificate client-cert.pem --pkcs-cipher aes-256 --outfile client.p12 --outder
Generating a PKCS #12 structure...
Loading private key list...
Loaded 1 private keys.
Enter a name for the key: user
Enter password:
Confirm password:
===========================================
Note that the Ciso AnyConnect app on iOS doesn’t support AES-256 cipher, so if the user is using iOS device, then you can use the 3des-pkcs12cipher.
$ sudo certtool --to-p12 --load-privkey client-privkey.pem --load-certificate client-cert.pem --pkcs-cipher 3des-pkcs12 --outfile client.p12 --outder
===========================================
$ sudo nano /etc/ocserv/ocserv.conf
Отредактируем:
auth = "certificate"
ca-cert = /etc/ocserv/ssl/ca-cert.pem
Сохранить.
$ sudo systemctl restart ocserv
Теперь скачиваем на компьютер клиента
/etc/ocserv/ssl/client.p12
И можем подключаться без пароля (один раз нужно ввести пинкод)
$ sudo apt install fail2ban
$ sudo crontab -e
Добавить.
0 3 * * * /usr/bin/certbot renew & > /dev/null
Сохранить.
Совместимый с CISCO AnyClient VPN сервер OpenConnect на Linux
Set up OpenConnect VPN Server (ocserv) on Ubuntu 16.04/18.04 with Let’s Encrypt
How to Set up Certificate Authentication in OpenConnect VPN Server (ocserv)
Перевод?
Настройка OpenConnect VPN Server (ocserv) на Ubuntu 16.04 / 17.10 с Let’s Encrypt
Настройка аутентификации по сертификату в OpenConnect VPN Server (ocserv)
мануал
Клиент Windows 10:
After installing the GUI in Windows 10 ...
Windows 10 - invalid routes
Ссылка на рабочий клиент 1.51 !!! (не старше)
Установка с картинками
В данном описании вариант для 1С без перенаправления интернет трафика:
# apt update
# apt upgrade
# apt install mc
# adduser user
# usermod -aG sudo user
# su user
$ cd ~
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ssh-keygen -t rsa
Скачать и использовать для входа /home/user/.ssh/id_rsa
$ cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
$ rm ~/.ssh/id_rsa.pub
$ rm ~/.ssh/id_rsa
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ exit
# nano /etc/ssh/sshd_config
Проверить:
PasswordAuthentication no
.....
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Сохранить.
$ sudo systemctl reload sshd
После проверки входа и sudo
Отключить вход root по ssh
$ sudo nano /etc/ssh/sshd_config
Исправить:
PermitRootLogin no
Сохранить.
$ sudo systemctl reload sshd
# отключим ipv6
$ sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
$ sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
$ sudo sysctl -p
=========================================================
$ sudo apt install ocserv
$ sudo systemctl status ocserv
#$ sudo apt install software-properties-common
#$ sudo add-apt-repository ppa:certbot/certbot
#$ sudo apt update
$ sudo apt install certbot
$ certbot --version
certbot 0.31.0
#$ sudo certbot certonly --standalone --preferred-challenges http --agree-tos --email your-email-address -d vpn.example.com
$ sudo apt install apache2
$ sudo nano /etc/apache2/sites-available/vpn.example.com.conf
<VirtualHost *:80>
ServerName vpn.example.com
DocumentRoot /var/www/vpn.example.com
</VirtualHost>
Сохранить.
$ sudo mkdir /var/www/vpn.example.com
$ sudo chown www-data:www-data /var/www/vpn.example.com -R
$ sudo a2ensite vpn.example.com
$ sudo systemctl reload apache2
$ sudo certbot certonly --webroot --agree-tos --email your-email-address -d vpn.example.com -w /var/www/vpn.example.com
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
auth = "plain[passwd=/etc/ocserv/ocpasswd]"
server-cert = /etc/letsencrypt/live/vpn.example.com/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.example.com/privkey.pem
ca-cert = /etc/letsencrypt/live/vpn.example.com/chain.pem
max-clients = 16
max-same-clients = 0
tls-priorities = "NORMAL:%SERVER_PRECEDENCE:%COMPAT:-VERS-SSL3.0:-VERS-TLS1.0:-VERS-TLS1.1"
try-mtu-discovery = true
default-domain = vpn.example.com
ipv4-network = 10.10.10.0
ipv4-netmask = 255.255.255.0
tunnel-all-dns = true
#dns = 1.1.1.1
#route = default
route = 10.10.10.0/255.255.255.0
no-route = 192.168.0.0/255.255.255.0
Сохранить.
$ sudo systemctl restart ocserv
$ sudo cp /lib/systemd/system/ocserv.service /etc/systemd/system/ocserv.service
$ sudo nano /etc/systemd/system/ocserv.service
[Unit]
Description=OpenConnect SSL VPN server
Documentation=man:ocserv(8)
After=network-online.target
#Requires=ocserv.socket #Заккоменитировать!
[Service]
PrivateTmp=true
PIDFile=/var/run/ocserv.pid
ExecStart=/usr/sbin/ocserv --foreground --pid-file /var/run/ocserv.pid --config /etc/ocserv/ocserv.conf
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
#Also=ocserv.socket #Заккоменитировать!
Сохранить.
$ sudo systemctl daemon-reload
$ sudo systemctl stop ocserv.socket
$ sudo systemctl disable ocserv.socket
$ sudo systemctl restart ocserv.service
$ systemctl status ocserv
$ sudo ocpasswd -c /etc/ocserv/ocpasswd username
Можно проверерять вход с клиента
На клиенте:
$ sudo apt install openconnect
$ sudo apt install net-tools
$ route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default _gateway 0.0.0.0 UG 100 0 0 enp0s3
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s3
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
$ sudo openconnect -b vpn.example.com:443
$ route
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
default 0.0.0.0 0.0.0.0 U 0 0 0 tun0
default _gateway 0.0.0.0 UG 100 0 0 enp0s3
10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 tun0
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s3
XXX.XXX.XXX.XXX _gateway 255.255.255.255 UGH 0 0 0 enp0s3
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
user@ud1804:~$ wget -O - -q icanhazip.com
XXX.XXX.XXX.XXX
Для адекватной проверки скорости соединения, нужно создать nat до перезагрузки
Узнаем имя сетевого адаптера :
$ ip a
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group
В данном случае ens18:
$ sudo iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
$ sudo iptables -t nat -L POSTROUTING
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- anywhere anywhere
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
dns = 10.10.10.1
route = default
#route = 10.10.10.0/255.255.255.0
Сохранить.
$ sudo systemctl restart ocserv
Адекватное измерение www.speedtest.net
После измерения
$ sudo nano /etc/ocserv/ocserv.conf
Изменить:
#dns = 10.10.10.1
#route = default
route = 10.10.10.0/255.255.255.0
Сохранить.
$ sudo reboot
Для подключения без пароля, настроим аутенфикацию по сертификату в соответствии с
How to Set up Certificate Authentication in OpenConnect VPN Server (ocserv)
и переводом:
Настройка аутентификации по сертификату в OpenConnect VPN Server (ocserv)
$ sudo apt install gnutls-bin
$ sudo mkdir /etc/ocserv/ssl/
$ cd /etc/ocserv/ssl/
$ sudo certtool --generate-privkey --outfile ca-privkey.pem
$ sudo nano ca-cert.cfg
Скопировать ниже:
# X.509 Certificate options
# The organization of the subject.
organization = "Example Org"
# The common name of the certificate owner.
cn = "Example CA"
# The serial number of the certificate.
serial = 001
# In how many days, counting from today, this certificate will expire. Use -1 if there is no expiration date.
expiration_days = -1
# Whether this is a CA certificate or not
ca
# Whether this certificate will be used to sign data
signing_key
# Whether this key will be used to sign other certificates.
cert_signing_key
# Whether this key will be used to sign CRLs.
crl_signing_key
Сохранить.
$ sudo certtool --generate-self-signed --load-privkey ca-privkey.pem --template ca-cert.cfg --outfile ca-cert.pem
$ sudo certtool --generate-privkey --outfile client-privkey.pem
$ sudo nano client-cert.cfg
Скопировать ниже, uid = "username", пользователя созданного выше:
# X.509 Certificate options
# The organization of the subject.
organization = "My Org"
# The common name of the certificate owner.
cn = "John Doe"
# A user id of the certificate owner.
uid = "username"
# In how many days, counting from today, this certificate will expire. Use -1 if there is no expiration date.
expiration_days = 3650
# Whether this certificate will be used for a TLS server
tls_www_client
# Whether this certificate will be used to sign data
signing_key
# Whether this certificate will be used to encrypt data (needed
# in TLS RSA ciphersuites). Note that it is preferred to use different
# keys for encryption and signing.
encryption_key
Сохранить.
$ sudo certtool --generate-certificate --load-privkey client-privkey.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-privkey.pem --template client-cert.cfg --outfile client-cert.pem
$ sudo certtool --to-p12 --load-privkey client-privkey.pem --load-certificate client-cert.pem --pkcs-cipher aes-256 --outfile client.p12 --outder
Generating a PKCS #12 structure...
Loading private key list...
Loaded 1 private keys.
Enter a name for the key: user
Enter password:
Confirm password:
===========================================
Note that the Ciso AnyConnect app on iOS doesn’t support AES-256 cipher, so if the user is using iOS device, then you can use the 3des-pkcs12cipher.
$ sudo certtool --to-p12 --load-privkey client-privkey.pem --load-certificate client-cert.pem --pkcs-cipher 3des-pkcs12 --outfile client.p12 --outder
===========================================
$ sudo nano /etc/ocserv/ocserv.conf
Отредактируем:
auth = "certificate"
ca-cert = /etc/ocserv/ssl/ca-cert.pem
Сохранить.
$ sudo systemctl restart ocserv
Теперь скачиваем на компьютер клиента
/etc/ocserv/ssl/client.p12
И можем подключаться без пароля (один раз нужно ввести пинкод)
$ sudo apt install fail2ban
$ sudo crontab -e
Добавить.
0 3 * * * /usr/bin/certbot renew & > /dev/null
Сохранить.
среда, 8 мая 2019 г.
Совместная работа OpenConnect и OpenVPN в среде Windows
Для совместной работы OpenConnect и OpenVPN нужно учитывать следующие особенности:
>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 2' {500EBB39-0CC1-4CBB-A1AA-7DECD679C5D5}
'Ethernet 3' {879AEEC2-87B6-4F0B-BFC6-78046DC6A513}
'Ethernet 4' {D64B1550-D033-4810-8F13-03B18992A20C}
'Ethernet 5' {CA18A6B2-4FAF-4247-9A12-17080869463C}
'Ethernet 6' {361E1C54-5E8F-4450-AD13-6FCAF8E9100A}
'Ethernet 7' {D0C959D0-694C-4984-96A9-A6A8869052A8}
Для совместной работы OpenVPN c OpenConnect через gui совет наделать много tap, (по числу соединений), для OpenVPN с конца, указывая в конфигах:
вместо
;dev-node MyTap
конретную сеть, например:
dev-node 'Ethernet 7'
Для OpenConnect tap от 'Ethernet 2' и далее.
В момент установки OpenConnect клиент привязывается к конкретному tap
это видно в логфайле (в данном случае неудачно):
2019-05-08 16:50:31 | 192c | Failed to open \\.\Global\{87A61E79-B01E-47EA-8A3B-900EEAE0C706}.tap
2019-05-08 16:50:31 | 192c | Error setting up the TUN device
>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 4' {59C051EB-E5DF-4F3D-BBD0-1F37A9B49743}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}
'Ethernet 5' {3275574F-2039-45AB-AB52-3E656DA5A425}
Мы видим это 'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
Для нормальной работы мы должны освободить
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
от других соединений OpenVPN
Manual configuration of the TAP-Windows adapter
Необходимо создать столько адаптеров TAP, сколько возможно разных соединений OpenVPN и OpenConnect (одновременных или нет)
Помним, что подсети должны быть разные, например:
10.8.0.X, 10.8.1.X и т.п. !!!
Добавляем адаптеры:
1. Посмотрим адаптеры TAP:
openvpn --show-adapters
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}
2. Добавим столько сколько нужно адаптеров TAP (от администратора):
"C:\Program Files\TAP-Windows\bin\addtap.bat"
"C:\Program Files\TAP-Windows\bin\addtap.bat"
Добавим столько сколько нужно:
>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 4' {59C051EB-E5DF-4F3D-BBD0-1F37A9B49743}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}
'Ethernet 5' {3275574F-2039-45AB-AB52-3E656DA5A425}
Для того что бы не было конфликта, в конфигурационных файлах соединений клиента следует выполнить привязку к конкретному имени адаптера (TAP-Win32 adapter name)
'Ethernet 3', пропускаем для OpenConnect
Пример изменений в конфигурационном файле клиента:
c:\Program Files\OpenVPN\config\client.ovpn
# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one. On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap
dev-node 'Ethernet 2'
Сохранить.
После запуска этого соединения в логе будет сообщение:
Wed May 08 16:30:19 2019 NETSH: C:\WINDOWS\system32\netsh.exe interface ip set address Ethernet 2 dhcp
Каждое соединение OpenVPN привязываем к своему адаптеру,
'Ethernet 3', пропускаем для OpenConnect
Под windows OpenConnect лучше запускать бантником в планировщике, так как
gui не обеспечивает reconnect после перезагрузки сервера OpenConnect :
start.bat
:again
"c:\Program Files (x86)\OpenConnect-GUI\openconnect.exe" vpn.com -c client.p12 --key-password=password --reconnect-timeout 2
goto again
>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 2' {500EBB39-0CC1-4CBB-A1AA-7DECD679C5D5}
'Ethernet 3' {879AEEC2-87B6-4F0B-BFC6-78046DC6A513}
'Ethernet 4' {D64B1550-D033-4810-8F13-03B18992A20C}
'Ethernet 5' {CA18A6B2-4FAF-4247-9A12-17080869463C}
'Ethernet 6' {361E1C54-5E8F-4450-AD13-6FCAF8E9100A}
'Ethernet 7' {D0C959D0-694C-4984-96A9-A6A8869052A8}
Для совместной работы OpenVPN c OpenConnect через gui совет наделать много tap, (по числу соединений), для OpenVPN с конца, указывая в конфигах:
вместо
;dev-node MyTap
конретную сеть, например:
dev-node 'Ethernet 7'
Для OpenConnect tap от 'Ethernet 2' и далее.
В момент установки OpenConnect клиент привязывается к конкретному tap
это видно в логфайле (в данном случае неудачно):
2019-05-08 16:50:31 | 192c | Failed to open \\.\Global\{87A61E79-B01E-47EA-8A3B-900EEAE0C706}.tap
2019-05-08 16:50:31 | 192c | Error setting up the TUN device
>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 4' {59C051EB-E5DF-4F3D-BBD0-1F37A9B49743}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}
'Ethernet 5' {3275574F-2039-45AB-AB52-3E656DA5A425}
Мы видим это 'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
Для нормальной работы мы должны освободить
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
от других соединений OpenVPN
Manual configuration of the TAP-Windows adapter
Необходимо создать столько адаптеров TAP, сколько возможно разных соединений OpenVPN и OpenConnect (одновременных или нет)
Помним, что подсети должны быть разные, например:
10.8.0.X, 10.8.1.X и т.п. !!!
Добавляем адаптеры:
1. Посмотрим адаптеры TAP:
openvpn --show-adapters
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}
2. Добавим столько сколько нужно адаптеров TAP (от администратора):
"C:\Program Files\TAP-Windows\bin\addtap.bat"
"C:\Program Files\TAP-Windows\bin\addtap.bat"
Добавим столько сколько нужно:
>openvpn --show-adapters
Available TAP-WIN32 adapters [name, GUID]:
'Ethernet 3' {87A61E79-B01E-47EA-8A3B-900EEAE0C706}
'Ethernet 4' {59C051EB-E5DF-4F3D-BBD0-1F37A9B49743}
'Ethernet 2' {86C5EC45-3029-4A92-9AFC-1B60BCF2091F}
'Ethernet 5' {3275574F-2039-45AB-AB52-3E656DA5A425}
Для того что бы не было конфликта, в конфигурационных файлах соединений клиента следует выполнить привязку к конкретному имени адаптера (TAP-Win32 adapter name)
'Ethernet 3', пропускаем для OpenConnect
Пример изменений в конфигурационном файле клиента:
c:\Program Files\OpenVPN\config\client.ovpn
# Windows needs the TAP-Win32 adapter name
# from the Network Connections panel
# if you have more than one. On XP SP2,
# you may need to disable the firewall
# for the TAP adapter.
;dev-node MyTap
dev-node 'Ethernet 2'
Сохранить.
После запуска этого соединения в логе будет сообщение:
Wed May 08 16:30:19 2019 NETSH: C:\WINDOWS\system32\netsh.exe interface ip set address Ethernet 2 dhcp
Каждое соединение OpenVPN привязываем к своему адаптеру,
'Ethernet 3', пропускаем для OpenConnect
Под windows OpenConnect лучше запускать бантником в планировщике, так как
gui не обеспечивает reconnect после перезагрузки сервера OpenConnect :
start.bat
:again
"c:\Program Files (x86)\OpenConnect-GUI\openconnect.exe" vpn.com -c client.p12 --key-password=password --reconnect-timeout 2
goto again
Подписаться на:
Сообщения (Atom)






















