«Обход блокировок с полной маскировкой:3X-UI: Shadowsocks-2022 & XRay (XTLS), настройка сервера на Debian 12» и «Настройка сервера IKEv2 VPN с StrongSwan в Ubuntu 20.04»: разница между страницами
Admin (обсуждение | вклад) Нет описания правки |
Admin (обсуждение | вклад) (Новая страница: «Ручная пошаговая настройка сервера описана в статье: '''https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-20-04-ru''' Мы же все действия произведем с помощью скрипта. Видео по установки и настройки скрипта: '''https://www.youtube.com/watch?v=93oJ5fF1mE0''' Хостинг европ...») |
||
Строка 1: | Строка 1: | ||
Ручная пошаговая настройка сервера описана в статье: '''https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-20-04-ru''' | |||
Мы же все действия произведем с помощью скрипта. | |||
https:// | Видео по установки и настройки скрипта: '''https://www.youtube.com/watch?v=93oJ5fF1mE0''' | ||
Хостинг европейских серверов из России: | |||
'''https://timeweb.cloud/?i=104329''' | |||
'''https://bit.ly/3urB78d''' | |||
Не российский хостинг (Эстония) с очень большой географией серверов и возможностью пополнения с российской карты. При оплате за год еще 3 месяца дают бесплатно: | |||
'''https://bit.ly/3rOqvPE''' | |||
== Подготовка сервера. == | |||
== | |||
<pre> | <pre> | ||
sudo apt update && sudo apt upgrade -y | |||
sudo apt | |||
sudo apt | |||
</pre> | </pre> | ||
Скрипт находится по данной ссылке: '''https://github.com/AdelKudryashev/Strongswan-installation-script''' | |||
=== Установка. === | |||
Перед запуском скрипта узнайте свой сетевой интерфейс, используя команду | |||
<pre> | <pre> | ||
ip route show default | |||
</pre> | </pre> | ||
После применения команды вы увидите вывод вида | |||
<pre> | <pre> | ||
Output | |||
default via your_server_ip dev eth0 proto static | |||
</pre> | </pre> | ||
После '''dev''' будет нужный интерфейc, в данном случае это '''eth0'''. Вставьте в скрипте ваш интерфейс, используйте поиск для этого. Замените в скрипте все '''eth0''' на ваш сетевой интерфейс. | |||
<pre> | <pre> | ||
sudo wget https://github.com/AdelKudryashev/Strongswan-installation-script/blob/master/startswan.sh | |||
</pre> | </pre> | ||
Далее заходим в скрипт и меняем в нем все записи '''eth0''' на наш интерфейс. | |||
<pre> | <pre> | ||
sudo nano ~/startswan.sh | |||
</pre> | </pre> | ||
Для запуска скрипта используйте команду | |||
<pre> | <pre> | ||
sudo | yes | sudo sh startswan.sh | ||
</pre> | </pre> | ||
Если скрипт не скачался, то вот тело скрипта: | |||
<pre> | <pre> | ||
#You must change the eth0 interface to your own in this script in /etc/ufw/before.rules in three places | |||
#Вы должны изменить интерфейс eth0 на свой в этом скрипте в /etc/ufw/before.rules в трех местах | |||
#!/bin/bash | |||
apt update | |||
myip=$(wget -qO - eth0.me) | |||
apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins -y | |||
mkdir -p ~/pki/cacerts | |||
mkdir -p ~/pki/certs | |||
mkdir -p ~/pki/private | |||
= | |||
chmod 700 ~/pki | |||
pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem | |||
pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \ | |||
--type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem | |||
pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem | |||
pki --pub --in ~/pki/private/server-key.pem --type rsa \ | |||
| pki --issue --lifetime 1825 \ | |||
--cacert ~/pki/cacerts/ca-cert.pem \ | |||
--cakey ~/pki/private/ca-key.pem \ | |||
--dn "CN=$myip" --san @$myip --san $myip \ | |||
--flag serverAuth --flag ikeIntermediate --outform pem \ | |||
> ~/pki/certs/server-cert.pem | |||
cp -r ~/pki/* /etc/ipsec.d/ | |||
mv /etc/ipsec.conf{,.original} #Создаем резервную копию файла настроек | |||
cat << EOF > /etc/ipsec.conf | |||
config setup | |||
charondebug="ike 1, knl 1, cfg 0" | |||
uniqueids=no | |||
conn ikev2-vpn | |||
auto=add | |||
compress=no | |||
type=tunnel | |||
keyexchange=ikev2 | |||
fragmentation=yes | |||
forceencaps=yes | |||
dpdaction=clear | |||
dpddelay=300s | |||
rekey=no | |||
left=%any | |||
leftid=$myip | |||
leftcert=server-cert.pem | |||
leftsendcert=always | |||
leftsubnet=0.0.0.0/0 | |||
right=%any | |||
rightid=%any | |||
rightauth=eap-mschapv2 | |||
rightsourceip=10.10.10.0/24 | |||
rightdns=8.8.8.8,8.8.4.4 | |||
rightsendcert=never | |||
eap_identity=%identity | |||
ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024,aes256-sha256-modp2048! | |||
esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1! | |||
EOF | |||
cat << EOF > /etc/ipsec.secrets | |||
: RSA "server-key.pem" | |||
# your_username : EAP "your_password" - use this format for create new user | |||
# sudo systemctl restart strongswan-starter - for the changes to take effect, after adding a new user, close the file and restart the server with this command | |||
EOF | |||
ufw allow OpenSSH | |||
ufw enable | |||
ufw allow 500,4500/udp | |||
cat << EOF > /etc/ufw/before.rules | |||
*nat | |||
#change eth0 interface to yours | |||
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT | |||
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE | |||
COMMIT | |||
*mangle | |||
#change eth0 interface to yours | |||
-A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360 | |||
COMMIT | |||
# | |||
# rules.before | |||
# | |||
# Rules that should be run before the ufw command line added rules. Custom | |||
# rules should be added to one of these chains: | |||
# ufw-before-input | |||
# ufw-before-output | |||
# ufw-before-forward | |||
# | |||
# Don't delete these required lines, otherwise there will be errors | |||
*filter | |||
:ufw-before-input - [0:0] | |||
:ufw-before-output - [0:0] | |||
:ufw-before-forward - [0:0] | |||
:ufw-not-local - [0:0] | |||
# End required lines | |||
-A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT | |||
-A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT | |||
# allow all on loopback | |||
-A ufw-before-input -i lo -j ACCEPT | |||
-A ufw-before-output -o lo -j ACCEPT | |||
# quickly process packets for which we already have a connection | |||
-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | |||
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | |||
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT | |||
# drop INVALID packets (logs these in loglevel medium and higher) | |||
-A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny | |||
-A ufw-before-input -m conntrack --ctstate INVALID -j DROP | |||
# ok icmp codes for INPUT | |||
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT | |||
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT | |||
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT | |||
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT | |||
# ok icmp code for FORWARD | |||
-A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT | |||
-A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT | |||
-A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT | |||
-A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT | |||
# allow dhcp client to work | |||
-A ufw-before-input -p udp --sport 67 --dport 68 -j ACCEPT | |||
# | |||
# ufw-not-local | |||
# | |||
-A ufw-before-input -j ufw-not-local | |||
# if LOCAL, RETURN | |||
-A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN | |||
# if MULTICAST, RETURN | |||
-A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN | |||
# if BROADCAST, RETURN | |||
-A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN | |||
# all other non-local packets are dropped | |||
-A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny | |||
-A ufw-not-local -j DROP | |||
# allow MULTICAST mDNS for service discovery (be sure the MULTICAST line above | |||
# is uncommented) | |||
-A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT | |||
# allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above | |||
# is uncommented) | |||
-A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT | |||
# don't delete the 'COMMIT' line or these rules won't be processed | |||
COMMIT | |||
EOF | |||
cat << EOF >> /etc/ufw/sysctl.conf | |||
net/ipv4/ip_forward=1 | |||
net/ipv4/conf/all/accept_redirects=0 | |||
net/ipv4/conf/all/send_redirects=0 | |||
net/ipv4/ip_no_pmtu_disc=1 | |||
EOF | |||
</pre> | </pre> | ||
=== Использование. === | |||
Вам нужно будет добавить логин и пароль пользователя. Отредактируйте файл | |||
<pre> | <pre> | ||
sudo nano /etc/ipsec.secrets | |||
</pre> | </pre> | ||
Внутри файла есть шаблон как добавлять нового пользователя. | |||
Пример: | |||
<pre> | <pre> | ||
User1 : EAP "Qwerty" | |||
</pre> | </pre> | ||
'''* где '''User1''' - это логин, а '''Qwerty''' - это пароль.''' | |||
'''Для каждого пользователя или устройства свой логин и пароль!''' | |||
После сохранения файла перезагрузите Strongswan используя команду | |||
<pre> | <pre> | ||
sudo systemctl restart strongswan-starter | |||
</pre> | </pre> | ||
= | === Получение сертификата. === | ||
Получить сертификат можно с помощью команды: | |||
== Получение | |||
<pre> | <pre> | ||
sudo cat /etc/ipsec.d/cacerts/ca-cert.pem | |||
</pre> | </pre> | ||
Сохраните текст, заключенный между | |||
<pre> | <pre> | ||
-----BEGIN CERTIFICATE----- и -----END CERTIFICATE----- | |||
</pre> | </pre> | ||
на локальный компьютер включая эти две строки в файл с расширением '''.pem''' | |||
<pre> | <pre> | ||
sert.pem | |||
</pre> | </pre> | ||
Все! Сервер поднят! | |||
Версия от 20:14, 22 марта 2024
Ручная пошаговая настройка сервера описана в статье: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-20-04-ru
Мы же все действия произведем с помощью скрипта.
Видео по установки и настройки скрипта: https://www.youtube.com/watch?v=93oJ5fF1mE0
Хостинг европейских серверов из России:
https://timeweb.cloud/?i=104329
Не российский хостинг (Эстония) с очень большой географией серверов и возможностью пополнения с российской карты. При оплате за год еще 3 месяца дают бесплатно:
Подготовка сервера.
sudo apt update && sudo apt upgrade -y
Скрипт находится по данной ссылке: https://github.com/AdelKudryashev/Strongswan-installation-script
Установка.
Перед запуском скрипта узнайте свой сетевой интерфейс, используя команду
ip route show default
После применения команды вы увидите вывод вида
Output default via your_server_ip dev eth0 proto static
После dev будет нужный интерфейc, в данном случае это eth0. Вставьте в скрипте ваш интерфейс, используйте поиск для этого. Замените в скрипте все eth0 на ваш сетевой интерфейс.
sudo wget https://github.com/AdelKudryashev/Strongswan-installation-script/blob/master/startswan.sh
Далее заходим в скрипт и меняем в нем все записи eth0 на наш интерфейс.
sudo nano ~/startswan.sh
Для запуска скрипта используйте команду
yes | sudo sh startswan.sh
Если скрипт не скачался, то вот тело скрипта:
#You must change the eth0 interface to your own in this script in /etc/ufw/before.rules in three places #Вы должны изменить интерфейс eth0 на свой в этом скрипте в /etc/ufw/before.rules в трех местах #!/bin/bash apt update myip=$(wget -qO - eth0.me) apt install strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins -y mkdir -p ~/pki/cacerts mkdir -p ~/pki/certs mkdir -p ~/pki/private chmod 700 ~/pki pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/ca-key.pem pki --self --ca --lifetime 3650 --in ~/pki/private/ca-key.pem \ --type rsa --dn "CN=VPN root CA" --outform pem > ~/pki/cacerts/ca-cert.pem pki --gen --type rsa --size 4096 --outform pem > ~/pki/private/server-key.pem pki --pub --in ~/pki/private/server-key.pem --type rsa \ | pki --issue --lifetime 1825 \ --cacert ~/pki/cacerts/ca-cert.pem \ --cakey ~/pki/private/ca-key.pem \ --dn "CN=$myip" --san @$myip --san $myip \ --flag serverAuth --flag ikeIntermediate --outform pem \ > ~/pki/certs/server-cert.pem cp -r ~/pki/* /etc/ipsec.d/ mv /etc/ipsec.conf{,.original} #Создаем резервную копию файла настроек cat << EOF > /etc/ipsec.conf config setup charondebug="ike 1, knl 1, cfg 0" uniqueids=no conn ikev2-vpn auto=add compress=no type=tunnel keyexchange=ikev2 fragmentation=yes forceencaps=yes dpdaction=clear dpddelay=300s rekey=no left=%any leftid=$myip leftcert=server-cert.pem leftsendcert=always leftsubnet=0.0.0.0/0 right=%any rightid=%any rightauth=eap-mschapv2 rightsourceip=10.10.10.0/24 rightdns=8.8.8.8,8.8.4.4 rightsendcert=never eap_identity=%identity ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024,aes256-sha256-modp2048! esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1! EOF cat << EOF > /etc/ipsec.secrets : RSA "server-key.pem" # your_username : EAP "your_password" - use this format for create new user # sudo systemctl restart strongswan-starter - for the changes to take effect, after adding a new user, close the file and restart the server with this command EOF ufw allow OpenSSH ufw enable ufw allow 500,4500/udp cat << EOF > /etc/ufw/before.rules *nat #change eth0 interface to yours -A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE COMMIT *mangle #change eth0 interface to yours -A FORWARD --match policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360 COMMIT # # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # Don't delete these required lines, otherwise there will be errors *filter :ufw-before-input - [0:0] :ufw-before-output - [0:0] :ufw-before-forward - [0:0] :ufw-not-local - [0:0] # End required lines -A ufw-before-forward --match policy --pol ipsec --dir in --proto esp -s 10.10.10.0/24 -j ACCEPT -A ufw-before-forward --match policy --pol ipsec --dir out --proto esp -d 10.10.10.0/24 -j ACCEPT # allow all on loopback -A ufw-before-input -i lo -j ACCEPT -A ufw-before-output -o lo -j ACCEPT # quickly process packets for which we already have a connection -A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # drop INVALID packets (logs these in loglevel medium and higher) -A ufw-before-input -m conntrack --ctstate INVALID -j ufw-logging-deny -A ufw-before-input -m conntrack --ctstate INVALID -j DROP # ok icmp codes for INPUT -A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT -A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT -A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT -A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT # ok icmp code for FORWARD -A ufw-before-forward -p icmp --icmp-type destination-unreachable -j ACCEPT -A ufw-before-forward -p icmp --icmp-type time-exceeded -j ACCEPT -A ufw-before-forward -p icmp --icmp-type parameter-problem -j ACCEPT -A ufw-before-forward -p icmp --icmp-type echo-request -j ACCEPT # allow dhcp client to work -A ufw-before-input -p udp --sport 67 --dport 68 -j ACCEPT # # ufw-not-local # -A ufw-before-input -j ufw-not-local # if LOCAL, RETURN -A ufw-not-local -m addrtype --dst-type LOCAL -j RETURN # if MULTICAST, RETURN -A ufw-not-local -m addrtype --dst-type MULTICAST -j RETURN # if BROADCAST, RETURN -A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN # all other non-local packets are dropped -A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny -A ufw-not-local -j DROP # allow MULTICAST mDNS for service discovery (be sure the MULTICAST line above # is uncommented) -A ufw-before-input -p udp -d 224.0.0.251 --dport 5353 -j ACCEPT # allow MULTICAST UPnP for service discovery (be sure the MULTICAST line above # is uncommented) -A ufw-before-input -p udp -d 239.255.255.250 --dport 1900 -j ACCEPT # don't delete the 'COMMIT' line or these rules won't be processed COMMIT EOF cat << EOF >> /etc/ufw/sysctl.conf net/ipv4/ip_forward=1 net/ipv4/conf/all/accept_redirects=0 net/ipv4/conf/all/send_redirects=0 net/ipv4/ip_no_pmtu_disc=1 EOF
Использование.
Вам нужно будет добавить логин и пароль пользователя. Отредактируйте файл
sudo nano /etc/ipsec.secrets
Внутри файла есть шаблон как добавлять нового пользователя.
Пример:
User1 : EAP "Qwerty"
* где User1 - это логин, а Qwerty - это пароль.
Для каждого пользователя или устройства свой логин и пароль!
После сохранения файла перезагрузите Strongswan используя команду
sudo systemctl restart strongswan-starter
Получение сертификата.
Получить сертификат можно с помощью команды:
sudo cat /etc/ipsec.d/cacerts/ca-cert.pem
Сохраните текст, заключенный между
-----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----
на локальный компьютер включая эти две строки в файл с расширением .pem
sert.pem
Все! Сервер поднят!