OpenSwan IPSec VPN Linux Cisco с контейнера OpenVZ

Данную статью пишу больше для себя, чтобы не забыть, ибо времени затрачено довольно много на решение этого вопроса. Для начала хочу отметить, что IPSec VPN не будет работать из контейнера OpenVZ, но будет работать с физического сервера, чего вполне достаточно, чтобы сеть за VPN была видна из Вашего контейнера OpenVZ.
Начнем с установки пакета OpenSwan, я рекомендую ставить отсюда: https://download.openswan.org/openswan/binaries/rhel/6/

rpm -Uhv https://download.openswan.org/openswan/binaries/rhel/6/openswan-2.6.38dr2-9.el6.x86_64.rpm

Желательно сразу иметь представление о схеме сети, понимать что именно Вам нужно. В текущем случае, мы объединяем в IPSec VPN внешний IP OpenVZ контейнера и подсеть за маршрутизатором Cisco.

Сначала пропишем PSK, допустим у нас он будет = cisco123:

/etc/ipsec.secrets

%any %any : PSK "cisco123"

#include /etc/ipsec.d/*.secrets

Конфиг выглядит следующим образом для ОС CentOS:

/etc/ipsec.conf
# /etc/ipsec.conf - Openswan IPsec configuration file
#
# Manual:     ipsec.conf.5
#
# Please place your own config files in /etc/ipsec.d/ ending in .conf

version	2.0	# conforms to second version of ipsec.conf specification

# basic configuration
config setup
	# Debug-logging controls:  "none" for (almost) none, "all" for lots.
	# klipsdebug=none
	# plutodebug="control parsing"
	# For Red Hat Enterprise Linux and Fedora, leave protostack=netkey
	protostack=netkey
	nat_traversal=yes
	virtual_private=
	oe=off
	# Enable this if you see "failed to find any available worker"
	# nhelpers=0

#You may put your configuration (.conf) file in the "/etc/ipsec.d/" and uncomment this.
include /etc/ipsec.d/*.conf

Настроим IPSec VPN со стороны Linux сервера:

/etc/ipsec.d/cisco.conf
# Access to internal network server
conn OFFICE1-sub1
    leftsubnet=5.5.5.6/32
    rekey=yes
    auto=start
    also=OFFICE1

conn OFFICE1
    type=tunnel
    aggrmode=no
    authby=secret
    compress=no
    left=5.5.5.5
    right=4.4.4.4
    rightsubnets={172.16.0.0/12,192.168.0.0/16}
    keyexchange=ike
    pfs=yes
    ikelifetime=86400s
    ikev2=permit
    ike=3des-sha1-modp1024
    phase2alg=3des-sha1
    dpddelay=30
    dpdtimeout=120

Кратко комментарии по cisco.conf:

OpenVZ (физический сервер) – 5.5.5.5
OpenVZ (виртуальный сервер) – 5.5.5.6
Cisco (внешний IP) – 4.4.4.4
Cisco (подсети за VPN) – 172.16.0.0/12,192.168.0.0/16

Конфигурация со стороны маршрутизатора Cisco:

!
crypto isakmp policy 10
 encr 3des
 authentication pre-share
 group 2
crypto isakmp key cisco123 address 5.5.5.5
!
crypto ipsec security-association lifetime seconds 28800
!
crypto ipsec transform-set linux esp-3des esp-sha-hmac
!
!
crypto map CentosIPsec 10 ipsec-isakmp
 set peer 5.5.5.5
 set transform-set linux
 match address vpn_to_LINUX
!
!
!
interface FA0/0
 ip address 4.4.4.4
 no cdp enable
 crypto map CentosIPsec
!
ip access-list extended vpn_to_LINUX
 permit ip 172.16.0.0 0.15.255.255 host 5.5.5.6
 permit ip 192.168.0.0 0.0.255.255 host 5.5.5.6
!

И еще одна маленькая деталь, нужно изправить баг, описанный в тикете:https://bugzilla.openvz.org/show_bug.cgi?id=1554
Изменения производим в контейнере:

sysctl -w net.ipv4.conf.venet0.disable_policy=1

Обратите внимание, venet0 – интерфейс, для которого применяем sysctl, если он у Вас eth1, то будет выглядеть так:

sysctl -w net.ipv4.conf.eth1.disable_policy=1

Сохраняем в конфиг:

/etc/sysctl.d/ipsec.conf
net.ipv4.conf.eth1.disable_policy=1

Более детальное описание данной директивы:


While the workaround works for IPv4 IPsec tunnels, I cannot find how to make it work for IPv6 tunnels. Any hint would be appreciated.

Теперь можно проверять, запускаем IPSec VPN на физическом сервере:

/etc/init.d/ipsec start

Смотрим статус, он должен быть похожим на следующий вывод, если все прошло успешно:

/etc/init.d/ipsec status
IPsec running  - pluto pid: 251536
pluto pid 251536
2 tunnels up
some eroutes exist

Несколько полезных команд приведу ниже, вдруг пригодится.
Посмотреть процесс подключения IPSec VPN:

ipsec auto --status

Посмотреть какие сети передаются через IPSec VPN:

ip xfrm policy

Чтобы проверить src IP, с которого будет идти пинг до хоста за VPN:

ip ro get 10.10.0.1

10.10.0.1 via 192.168.103.1 dev eth1  src 192.168.103.101
    cache  mtu 1500 advmss 1460 hoplimit 64

Не забывайте, для CentOS нужно прописать статические маршруты, если у вас их еще нет. Хорошей практикой считается создание файла /etc/sysconfig/static-routes, который выглядит следующим образом:

any net 172.20.10.153 netmask 255.255.255.255 gw 192.168.111.2
any net 172.20.10.236 netmask 255.255.255.255 gw 192.168.111.2

Однако, бывают случаи, когда со стороны Linux надо поправить MTU, например установить 1400 вместо 1500. Как это сделать?
Для решения задачи добавляем руками следующие роуты:

/sbin/ip route add 172.20.10.153/32 dev venet0 src 192.168.111.2 mtu 1400 advmss 1400
/sbin/ip route add 172.20.10.236/32 dev venet0 src 192.168.111.2 mtu 1400 advmss 1400

Не забываем дописать их в конец файла /etc/rc.local!

Если требуется настроить AES шифрование, вместо 3DES, то меняем конфиг следующим образом.
Шифрование AES-128:

conn OFFICE1
    ……….
    keyexchange=ike
    pfs=yes
    ikelifetime=86400s
    ikev2=permit
    ike=aes128-sha1-modp1024
    esp=aes128-sha1
    dpddelay=30
    dpdtimeout=120

Шифрование AES-256:

conn OFFICE1
    ……….
    keyexchange=ike
    pfs=yes
    ikelifetime=86400s
    ikev2=permit
    ike=aes256-sha1-modp1024
    esp=aes256-sha1
    dpddelay=30
    dpdtimeout=120

Со стороны Cisco, соответственно меняются (AES-128):

!
crypto isakmp policy 10
 encr aes
 authentication pre-share
 group 2
crypto isakmp key cisco123 address 5.5.5.5
!
crypto ipsec security-association lifetime seconds 28800
!
crypto ipsec transform-set linux esp-aes esp-sha-hmac

Related posts:

  1. Cisco ASA: настроить ssh доступ Итак, нам нужно настроить доступ SSH для управления железкой. Приступим:...
  2. Cisco: логирование через rsyslog CentOS Добавляем ключ «-x», чтобы rsyslog писал в логи IP адрес,...
  3. Поиск символических ссылок в UNIX/LINUX Как найти символические ссылки по UNIX или LINUX операционными системами?...
  4. ASA 8.x : ACL разрешить доступ к FTP (PASV) Рассмотрим правила написания ACL на аппаратном файрволе Cisco ASA 55XX...
  5. Зашифруйте Ключи Pre-shared в Примере Конфигурации маршрутизатора Cisco IOS Зашифруйте Ключи Pre-shared в Примере Конфигурации маршрутизатора Cisco IOS Содержание...
Both comments and pings are currently closed.

Comments are closed.