Данная статья предоставляет информацию о том, как настроить VPN серверы по тому или иному протоколу.
Необходимый список предустановок для работы впн:
nft add rule inet nat POSTROUTING oifname "ens3" ip saddr 10.2.2.0/24 masquerade
nft add rule inet filter INPUT iifname "ens3" tcp dport 1701 counter accept
nft add rule inet filter INPUT iifname "ens3" udp dport 500 counter accept
nft add rule inet filter INPUT iifname "ens3" udp dport 4500 counter accept
Открыть порты 500 UDP 1701 UDP 4500 UDP
Если подключение с Mikrotik, то добавить в Proposal (IP->IpSec)
В файле nano /etc/sysctl.conf
добавляем строку net.ipv4.ip_forward = 1
и применяем настройки командой sysctl -p
Устанавливаем пакет apt-get install strongswan
Редактируем файл nano /etc/ipsec.conf
Подводим его вид до такого состояния:
conn rw-base
fragmentation=yes
dpdaction=clear
dpdtimeout=90s
dpddelay=30s
conn l2tp-vpn
also=rw-base
ike=aes128-sha256-modp3072
esp=aes128-sha256-modp3072
leftsubnet=%dynamic[/1701]
rightsubnet=%dynamic
leftauth=psk
rightauth=psk
type=transport
auto=add
Редактируем файл nano /etc/ipsec.secrets
и добавляем туда строку %any %any : PSK "MYKEY"
Где "MYKEY" выставляем свой ключ, который будет использоваться для аутентификации
После, нам надо рестартнуть службу systemctl restart strongswan-starter
И устанавливаем apt-get install xl2tpd
Открываем файл настроек nano /etc/xl2tpd/xl2tpd.conf
и приводим его к следующему виду:
[global]
port = 1701
auth file = /etc/ppp/chap-secrets
access control = no
ipsec saref = yes
force userspace = yes
[lns default]
exclusive = no
ip range = 10.10.1.100-10.10.1.200
hidden bit = no
local ip = 10.10.1.1
length bit = yes
require authentication = yes
name = l2tp-vpn
pppoptfile = /etc/ppp/options.xl2tpd
flow bit = yes
Дополнительно, нам необходимо скопировать опции ppp устройства. Заходим в cd /etc/ppp
и копируем cp options options.xl2tpd
Редактируем файл nano options.xl2tpd
и приводим его к следующему виду:
asyncmap 0
auth
crtscts
lock
hide-password
modem
mtu 1460
lcp-echo-interval 30
lcp-echo-failure 4
noipx
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
multilink
mppe-stateful
Далее добавляем пользователя. В файле nano /etc/ppp/chap-secrets
добавляем строку user l2tp-vpn password *
И рестартим нашу службу.
systemctl restart xl2tpd
Настройка openvpn сервера debian 12.
Для начала нам необходимо установить два пакета для работы с сервером:
apt-get install openvpn easy-rsa
После установки нужно скопировать папку easy-rsa в папку openvpn
cd /etc/openvpn
make-cadir easy-rsa/
Переходим в директорию cd /easy-rsa
после ./easyrsa init-pki
и выполняем команду:
./easyrsa build-ca
Прописываем пароли, название сертификата пишем server
Далее прописываем
./easyrsa build-server-full server
Нас попросят ввести пароли от сертификата. Вводим.
После генерим DH сертификат. Вводим ./easyrsa gen-dh
Переходим в директорию cd /etc/openvpn/
Делаем секрет. Пишем openvpn --genkey secret /etc/openvpn/server/ta.key
Нам необходимо создать файл nano server.conf
В него прописываем:
port 1194
proto udp
dev tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/server.crt
key /etc/openvpn/easy-rsa/pki/private/server.key # keep secret
dh /etc/openvpn/easy-rsa/pki/dh.pem
topology subnet
server 10.1.1.0 255.255.255.0 #OpenVPN network pool
ifconfig-pool-persist ipp.txt
push "route 192.168.0.0 255.255.255.0" #дефолтный роут
push "redirect-gateway def1 bypass-dhcp" #дефолтный гейт
keepalive 10 120
tls-auth /etc/openvpn/server/ta.key 0
auth-nocache
cipher AES-256-CBC
data-ciphers AES-256-CBC
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
verb 3 # verbose mode
client-to-client
explicit-exit-notify 1
Создаем файл для логов:
touch /var/log/openvpn/openvpn-status.log
После чего редактируем файл дефолтной конфигурации клиента.
nano /usr/share/doc/openvpn/examples/sample-config-files/client.conf
Удаляем все, вставляем следующее:
client
dev tun
proto udp
remote VPNSERVER_IP 1194 # [VPN server IP] [PORT]
resolv-retry infinite
nobind
persist-key
persist-tun
ca /etc/openvpn/easy-rsa/pki/ca.crt
cert /etc/openvpn/easy-rsa/pki/issued/clientname.crt
key /etc/openvpn/easy-rsa/pki/private/clientname.key
remote-cert-tls server
tls-auth /etc/openvpn/server/ta.key 1
auth-nocache
cipher AES-256-CBC
data-ciphers AES-256-CBC
mute-replay-warnings
verb 3
Сохраняем, закрываем.
Переходим в директорию cd /etc/openvpn/easy-rsa/
И вводим команды:
./easyrsa build-server-full server nopass
./easyrsa gen-dh
cd /etc/openvpn
openvpn --genkey secret /etc/openvpn/server/ta.key
Теперь мы можем создать ключи для пользователя. Делается это командой:
./easyrsa build-client-full user1 nopass
Уже после мы можем создать конфиг пользователя:
YOUR_CLIENT_NAME=user1 &&\
cd /etc/openvpn &&\
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf $YOUR_CLIENT_NAME.ovpn && \
echo "key-direction 1" >> $YOUR_CLIENT_NAME.ovpn && \
echo "<ca>" >> $YOUR_CLIENT_NAME.ovpn && \
sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' < easy-rsa/pki/ca.crt >> $YOUR_CLIENT_NAME.ovpn && \
echo "</ca>" >> $YOUR_CLIENT_NAME.ovpn && \
echo "<cert>" >> $YOUR_CLIENT_NAME.ovpn && \
sed -n '/BEGIN CERTIFICATE/,/END CERTIFICATE/p' < easy-rsa/pki/issued/$YOUR_CLIENT_NAME.crt >> $YOUR_CLIENT_NAME.ovpn && \
echo "</cert>" >> $YOUR_CLIENT_NAME.ovpn && \
echo "<key>" >> $YOUR_CLIENT_NAME.ovpn && \
sed -n '/BEGIN PRIVATE KEY/,/END PRIVATE KEY/p' < easy-rsa/pki/private/$YOUR_CLIENT_NAME.key >> $YOUR_CLIENT_NAME.ovpn && \
echo "</key>" >> $YOUR_CLIENT_NAME.ovpn && \
echo "<tls-auth>" >> $YOUR_CLIENT_NAME.ovpn && \
sed -n '/BEGIN OpenVPN Static key V1/,/END OpenVPN Static key V1/p' < server/ta.key >> $YOUR_CLIENT_NAME.ovpn && \
echo "</tls-auth>" >> $YOUR_CLIENT_NAME.ovpn
И этот конфиг можем копировать на клиентские устройства.
Дополнительно, не забываем прописать iptables правила:
nft add rule inet filter FORWARD iifname "eth0" oifname "tun0" ct state related, established accept
nft add rule inet filter FORWARD oifname "eth0" ip saddr 10.1.1.0/24 accept
nft add rule inet nat POSTROUTING oifname "eth0" ip saddr 10.1.1.0/24 masquerade
Проверяем nano /etc/sysctl.conf
на наличие net.ipv4.ip_forward = 1
и sysctl -p
И можем запускать сервер openvpn: openvpn --config server.conf