Перейти к содержимому. | Перейти к навигации

Персональные инструменты

Вы здесь: Главная / Спиричев Вадим / Сервисы и инструменты / Настройка Debian как клиент IPsec_L2TP

Настройка Debian как клиент IPsec_L2TP

Для данного сценария настройки использовали статью https://www.umgum.com/debian-linux-l2tp-ipsec

1. Ставим пакет strongswan.

apt-get install strongswan

2. Приводим /etc/ipsec.conf к виду:

 ipsec.conf - strongSwan IPsec configuration file

# basic configuration

config setup
        # strictcrlpolicy=yes
        # uniqueids = no

# Add connections here.
# Default options for encryption of connections
conn %default
  ikelifetime = 60m
  keylife = 20m
  rekeymargin = 3m
  keyingtries = 1
  keyexchange = ikev1
  authby = secret
  ike = aes128-sha1-modp2048!
  esp = aes128-sha1-modp2048!



# Encryption of traffic to the "l2tp.example.net"
conn xrays.uniito.ru
  # Automatic start of encryption at system startup
  auto = start
  # Restarting encryption if negotiation fails
  dpdaction = restart
  # Restart encryption on unexpected close
  closeaction = restart
  # Reconnect unlimited number of times
  keyingtries = %forever
  keyexchange = ikev1
  pfs = no
  authby = secret
  type = transport
  left = %defaultroute
  leftprotoport = 17/1701
  right = 195.189.108.50
  rightprotoport = 17/1701

include /var/lib/strongswan/ipsec.conf.inc



правим адрес сервера (195.189.108.50), если у вас другой...

3.  Секретный ключ шифрования PSK ("Pre-Shared Key") пишем в файл /etc/ipsec.secrets

include /var/lib/strongswan/ipsec.secrets.inc

%any 195.189.108.50 :   PSK     "<ключ >= 20 символов>"

4. Защищаем файл с паролями от доступа посторонних:

# chown root /etc/ipsec.secrets
# chmod 600 /etc/ipsec.secrets

5. Перезапускаем strongswan:

# systemctl restart strongswan
# systemctl status strongswan

6. Просматриваем статус IPsec-соединений:

# ipsec statusall
# ipsec status

7.Должны получить примерно такое:

Security Associations (1 up, 0 connecting):
ipsec-gate.example.net[1]: ESTABLISHED 43 seconds ago, 10.20.30.45...100.200.250.21
ipsec-gate.example.net{1}:  INSTALLED, TRANSPORT, reqid 1, ESP in UDP SPIs: c57b51bb_i 04fa2652_o
ipsec-gate.example.net{1}:   10.20.30.45/32[udp/l2f] === 100.200.250.21/32[udp/l2f]

 

8. Далее ставим lx2tpd

 apt-get  install xl2tpd

9. Правим файл конфигурации /etc/xl2tpd/xl2tpd.conf

[lac myvpn]
lns = 195.189.108.50
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes
autodial = yes
redial = yes
redial timeout = 30

тут правим, если надо, адрес сервера.

10. Еще создаем файлик /etc/ppp/options.lx2tpd.client

ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-mschap-v2
noccp
noauth
mtu 1280
mru 1280
noipdefault
nodefaultroute
usepeerdns
connect-delay 5000
name "<login>"
password "<passwd>"

подставляем логин и пароль вконце файла.

11. Защищаем файл с паролем от доступа посторонних:

# chmod 600 /etc/ppp/options.lx2tpd.client

12. Перезапуск xl2tpd

# systemctl restart xl2tpd
# systemctl status xl2tpd

 

13. Должен появиться интерфейс ppp0 (или ppp1) в выводе команды ifconfig или ip a

ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1280
        inet 192.168.1.213  netmask 255.255.255.255  destination 192.168.1.111
        ppp  txqueuelen 3  (Point-to-Point Protocol)
        RX packets 163  bytes 23174 (22.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 126  bytes 21277 (20.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

адрес назначен сервером! Это адрес нашей машины в VPN!

14. Теперь осталось добавить маршрут в сеть 192.168.1.0

ip route add 192.168.1.0/24 via 192.168.1.213  dev ppp0 

если уже есть какой-то маршрут через ppp0, удаляем его.

ip route del 192.168.1.111 via 0.0.0.0    dev ppp0

15. Смотрим таблицу маршрутизации. Должно быть, примерно, так:

netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.9.1     0.0.0.0         UG        0 0          0 enp1s0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U         0 0          0 br-0e4943120a0b
192.168.1.0     192.168.1.213   255.255.255.0   UG        0 0          0 ppp0
192.168.9.0     0.0.0.0         255.255.255.0   U         0 0          0 enp1s0

 16. Теперь можно зайти на нашу машину по ssh из сети 192.168.1.0

17. Автоматизируем шаги по подъему/выключению/наблюдению за VPN с помощью скриптов:

 svpn.sh - подключение к VPN

systemctl restart strongswan.service
ipsec status
systemctl restart xl2tpd.service
sleep 3
echo "c myvpn" > /var/run/xl2tpd/l2tp-control
sleep 5
ip route add 192.168.1.0/24 via 192.168.1.213  dev ppp0
ifconfig ppp0
netstat -rn

dvpn.sh - отключение от VPN

systemctl stop xl2tpd.service
ipsec down xrays.uniito.ru
ifconfig ppp0
netstat -rn

vloop.sh - скрипт следящий за VPN, при обнаружении, что отключено стартует VPN-клиента.

#!/usr/bin/env bash

while true

  do

    if ping -c1 -W1 -q 192.168.1.1 > /dev/null 2>&1 ; then

        echo VPN Up
    else

        echo VPN Down
#       Stop services
        systemctl stop xl2tpd.service
        ipsec down xrays.uniito.ru > /dev/null 2>&1
        echo Restart services
        systemctl restart strongswan.service
        systemctl restart xl2tpd.service
        sleep 3
        echo "c myvpn" > /var/run/xl2tpd/l2tp-control
        sss=`ifconfig | grep "ppp[0-9]" | cut -d':' -f 1`
        ip route del 192.168.1.111 via 0.0.0.0  dev $sss
    fi

    echo "Press [CTRL+C] to exit this loop..."

    # Add more instructions here

    sleep 600

  done


18.