Crmgo Блог

Openswan, налаштування "сервер - клієнт"

Openswan, налаштування "сервер - клієнт"

Усередині контейнера як ipsec демон будемо використовувати openswan, а як l2tp сервер стандартний xl2tpd з репозиторіїв: Далі налаштуємо форвардинг та решту частину мережевої підсистеми для коректної роботи з NAT і VPN: Приступимо до налаштування ipsec демона. Наведемо конфіг…

Openswan, налаштування "сервер - клієнт"

Усередині контейнера як ipsec демон будемо використовувати openswan, а як l2tp сервер стандартний xl2tpd з репозиторіїв:

apt-get install openswan xl2tpd

Далі налаштуємо форвардинг та решту частину мережевої підсистеми для коректної роботи з NAT і VPN:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j SNAT --to-source <main IP of server>
iptables -A FORWARD -s 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -d 10.0.0.0/24 -j ACCEPT
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
for each in /proc/sys/net/ipv4/conf/*; do echo 0 > $each/accept_redirects; echo 0 > $each/send_redirects; done

Приступимо до налаштування ipsec демона.

Приведемо конфіг /etc/ipsec.conf до вигляду:

config setup
  protostack=netkey
  nat_traversal=yes                          # Enables NAT traversal
  virtual_private=%v4:192.168.1.0/8          # with this option you can add your local IP in NAT
conn L2TP-PSK-NAT
  rightsubnet=vhost:%priv
  also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
  authby=secret                              # Auth with PSK ( preshared key )
  pfs=no
  auto=add                                   
  keyingtries=3
  rekey=no
  ikelifetime=8h
  salifetime=10m
  type=tunnel                                # type of l2tp connection ( tunnel / transport )
  left=11.11.11.11                         # left - is internet IP of l2tp server
  leftprotoport=17/1701
  right=%any                                 # right - is IP of client ( if client NATed , that IP of client is IP in NAT )
  rightprotoport=17/1701

Найважливіші моменти конфігу прокоментовано. Також слід не забути скласти конфіг саме таким чином, як зазначено вище, тобто зі збереженням пробілів на початку рядка у тих команд, у яких вони вказані, оскільки відступ команди демоном прив'язується до блоку, що визначається безвідступним «conn».

Тепер задамо авторизацію для роботи з ipsec. Існує два методи авторизації — за сертифікатом і за ключем ( PSK ). У даному прикладі ми налаштуємо авторизацію за ключем у файлі /etc/ipsec.secrets:

11.11.11.11 %any: PSK "mykey"

11.11.11.11 — це зовнішня IP адреса нашого сервера
%any — це вбудована змінна, що позначає будь-яку IP адресу
PSK — метод авторизації ( може бути RSA )
«mykey» — секретний ключ для авторизації, який потрібно буде передати клієнту.

Тепер настав час налаштувати l2tp сервер. Він буде працювати через протокол ppp.

Приводимо конфіг /etc/xl2tpd/xl2tpd.conf до вигляду:

[global]
port = 1701
auth file = /etc/xl2tpd/l2tp-secrets        # auth file with pars login/password for l2tp auth
[lns default]
ip range = 10.0.0.2-10.0.0.200              # range of IP's , that give to clients when auth is good
local ip = 10.0.0.1                        
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = no                                        # debug mode
pppoptfile = /etc/ppp/options.xl2tpd        #  this is ppp options config file
length bit = yes
exclusive = no
assign ip = yes
name = VPN-Server

У даному конфігу, знову ж таки, всі критичні місця прокоментовано, а решта інтуїтивно зрозумілі. При налаштуванні сервера коментарі з конфігу потрібно прибрати.

Налаштовуємо файл авторизації l2tp — /etc/xl2tpd/l2tp-secrets. У файлі дозволимо підключатися всім, оскільки у нас l2tp працює через ppp, то й використовувати будемо саме ppp авторизацію.

# Secrets for authenticating l2tp tunnels
# us    them    secret
# *             marko blah2
# zeus          marko   blah
# *     *       interop
*       *       *   # let all , because we use auth with ppp

Далі налаштовуємо конфіг ppp, який запитується нашим l2tp демоном ( /etc/ppp/options.xl2tpd ):

refuse-mschap-v2
refuse-mschap
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
idle 1800
mtu 1200
mru 1200
lock
hide-password
local
#debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

У разі виникнення проблем зі зв'язком або з підключенням для дебагу роботи l2tp просто розкоментуємо "#debug" і дивимося в системний лог /var/log/syslog на наявність помилок.

Налаштовуємо авторизацію в ppp ( /etc/ppp/chap-secrets ):

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
test2   l2tpd   test    *

Логін — test2
Сервер, для якого валідна ця пара для авторизації — l2tpd
Пароль — test
Підключатися з цим паролем можуть клієнти з усіх IP адрес — *

Рестартимо обидва сервіси:

/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart

Тепер перевіримо коректність роботи модулів самого ipsec усередині контейнера:

ipsec verify

виводом працездатного ipsec буде щось подібне:

root@XXX:~# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.37-g955aaafb-dirty/K2.6.32-042stab084.10 (netkey)
Checking for IPsec support in kernel                            [OK]
 SAref kernel support                                           [N/A]
 NETKEY:  Testing XFRM related proc values                      [OK]
        [OK]
        [OK]
Checking that pluto is running                                  [OK]
 Pluto listening for IKE on udp 500                             [OK]
 Pluto listening for NAT-T on udp 4500                          [OK]
Checking for 'ip' command                                       [OK]
Checking /bin/sh is not /bin/dash                               [WARNING]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support    

Тепер налаштуємо в Windows 7 клієнт для підключення до нашого VPN l2tp з шифруванням за ipsec.

Примітка: матеріал міг бути створений за підтримки ШІ з подальшою людською редакцією. Відповідальний за зміст: Dmytro Lomaka, Kaltenkirchen.

Рубрики: VPN