Введение
Для создания безопасного соединения между хостами часто используется IPSec. Во время установки необходимо помнить, что виртуальные серверы CX доступны через 1:1 NAT на внутренний IP.
Это руководство использует StrongSWAN и совместно используемые ключи (PSK) для создания прозрачного соединения IPSec между внешним хостом и виртуальным сервером CX. Публичные IP-адреса могут использоваться с обеих сторон.
Эта процедура также должна работать на облачных серверах.
Данные
Хост Алиса (сервер А)
- Система: Debian 8 jessie
- IPSec: strongswan 5.2.1-6+deb8u2
- IPv4: 192.0.2.10
- IPv6: 2001:db8:61:20e1::2
Хост Боб (виртуальный сервера СХ )
- Система: Debian 8 jessie
- IPSec: strongswan 5.2.1-6+deb8u2
- IPv4: 203.0.113.40
- Внутренний IPv4: 172.31.1.100
- IPv6: 2a01:4f8:db8:c17::2
Установка
Мы создадим два тоннеля: один через IPv4 и еще один через IPv6.
Алиса
Установка пакетов:
# apt-get install strongswan
# ipsec stop
Создание/изменение файла /etc/ipsec.conf
с правильными значениями:
version 2.0
#
config setup
#
conn NameDerVerbindung
type=transport
keyingtries=0
authby=secret
auto=start
leftid=192.0.2.10
left=192.0.2.10
rightid=203.0.113.40
right=203.0.113.40
#
conn NameDerVerbindungSix
type=transport
keyingtries=0
authby=secret
auto=start
leftid=2001:db8:61:20e1::2
left=2001:db8:61:20e1::2
rightid=2001:db8:c17::2
right=2001:db8:c17::2
Некоторые версии StrongSwan используют определенные отступы. В нашем случае это ровно 8 пробелов или один tab.
Создание/изменение файла /etc/ipsec.secrets
с правильными значениями:
203.0.113.40 192.0.2.10 : PSK "SuperGeheimesPasswortFuerIp4Tunnel"
2001:db8:c17::2 2001:db8:61:20e1::2 : PSK "SuperGeheimesPasswortFuerIp6Tunnel"
Запуск IPSec-туннеля:
# ipsec start
Боб
Установка пакетов:
# apt-get install strongswan
# ipsec stop
Создание/изменение файла /etc/ipsec.conf
с правильными значениями:
version 2.0
#
config setup
#
conn NameDerVerbindung
type=transport
keyingtries=0
authby=secret
auto=start
leftid=203.0.113.40
left=172.31.1.100
rightid=192.0.2.10
right=192.0.2.10
#
conn NameDerVerbindungSix
type=transport
keyingtries=0
authby=secret
auto=start
leftid=2001:db8:c17::2
left=2001:db8:c17::2
rightid=2001:db8:61:20e1::2
right=2001:db8:61:20e1::2
Создание/изменение файла /etc/ipsec.secrets
с правильными значениями:
192.0.2.10 203.0.113.40 : PSK "SuperSecretPasswordForIp4Tunnel"
2001:db8:61:20e1::2 2001:db8:c17::2 : PSK "SuperSecretPasswordForIp6Tunnel"
Запуск IPSec-туннеля:
# ipsec start
Тест
Туннели должны быть успешно созданы. Это можно проверить в /var/log /syslog
или /var/log/auth.log
.
Команда ipsec status
должна показать что-то вроде этого:
Security Associations (2 up, 0 connecting):
TemplateTwo[20]: ESTABLISHED 76 minutes ago, 172.31.1.100[203.0.113.40]...192.0.2.10[192.0.2.10]
TemplateTwo{12}: INSTALLED, TRANSPORT, ESP in UDP SPIs: c5b8b7f7_i ccf37767_o
TemplateTwo{12}: 172.31.1.100/32 === 192.0.2.10/32
TemplateTwoSix[19]: ESTABLISHED 82 minutes ago, 2001:db8:c17::2[2001:db8:c17::2]...2001:db8:61:20e1::2[2001:db8:61:20e1::2]
TemplateTwoSix{11}: INSTALLED, TRANSPORT, ESP SPIs: c5521750_i cbe50d53_o
TemplateTwoSix{11}: 2001:db8:c17::2/128 === 2001:db8:61:20e1::2/128
При помощи tcpdump
можно увидеть ESP пакеты (простой пинг):
13:42:53.000336 IP 203.0.113.40.ipsec-nat-t > 192.0.2.10.ipsec-nat-t: UDP-encap: ESP(spi=0xccf37767,seq=0x516), length 116
Вывод
Теперь вы можете установить IPSec соединение на виртуальном сервере с NAT.