Соединяем два и более серверов linux по IPsec

Здесь я расскажу как соединить два и больше серверов по IPsec туннелю на Linux.

IP адрес сервера №1 192.168.1.218/24 (IP адрес в сети VPN 172.17.0.1/24)
IP адрес сервера №2 192.168.1.181/24 (IP адрес в сети VPN 172.16.0.1/24)

Начнем

1) Ставим необходимые пакеты
# apt-get install racoon ipsec-tools

2) Добавляем виртуальный интерфейс eth0:1 для Ipsec тунеля
# nano /etc/network/interfaces



Аналогично и для сервера №2



и перезапускаем сеть

# /etc/init. d/networking restart

введем команду
# ifconfig
что бы убедиться что виртуальные интерфейсы подняты



3) Конфигурируем IPsec

# nano /etc/racoon/racoon. conf
и раскоментируем все что после строки

path certificate "/etc/racoon/certs";


Настраиваем на сервере №1
находим строку

remote 172.31.1.1

и заменяем на

remote 192.168.1.181

то есть указываем здесь IP адрес сервера №2
Находим ниже строку

sainfo address...


и заменяем IP адреса на свои адреса VPN сетей
в итоге строка будет выгладить так

sainfo address 172.17.0.0/24 any address 172.16.0.0/24 any {


первый IP адрес это адрес нашей VPN сети, второй соответственно IP адрес удаленной VPN сети которая находиться на сервере №2



Аналогично на сервере №2



4) Указываем ключ с помощью которого сервера будет взаимодействовать
# nano /etc/racoon/psk. txt
Все строки удаляем и вписываем IP адрес второго сервера и после него вписываем ключ

192.168.1.181 dhd7d9ka62ka


И повторяем на втором сервер тоже самое, только вписываем IP адрес первого сервера и ключ тоже самый.

192.168.1.218 dhd7d9ka62ka



5) Продолжаем настройку IPsec, настраиваем политику безопасности.

# nano /etc/ipsec-tools. conf

нужно раскоментировать строки

flush;

spdflush;


и строки которые идут после комментария

## Some sample SPDs for use racoon


что бы файл выглядел так


Настраиваем первым делом на первом сервере(192.168.1.218)
находим строку

spdadd 10.10.100.1 10.10.100.2 any - P out ipsec


заменяем на

spdadd 172.17.0.0/24 172.16.0.0/24 any - P out ipsec


первая сеть это сеть VPN на сервер №1, вторая сеть это VPN сеть которая расположена на сервере №2
Далее находим

esp/transport//require;


заменяем на

esp/tunnel/192.168.1.218-192.168.1.181/require;


здесь думаю понятно, первый IP адрес это адрес сервера №1, второй IP адрес это адрес сервера №2

Находим ниже

spdadd 10.10.100.2 10.10.100.1 any - P in ipsec

  esp/transport//require;


здесь все так же само только наоборот, сначала адреса сервера №2, потом сервера №1

spdadd 172.16.0.0/24 172.17.0.0/24 any - P in ipsec

  esp/tunnel/192.168.1.181-192.168.1.218/require;



Повторяем процедуру на втором сервере(192.168.1.181)

spdadd 172.16.0.0/24 172.17.0.0/24 any - P out ipsec

  esp/tunnel/192.168.1.181-192.168.1.218/require;

spdadd 172.17.0.0/24 172.16.0.0/24 any - P in ipsec

  esp/tunnel/192.168.1.218-192.168.1.181/require;



6) Перезапускаем службы на обох серверах.
# /etc/init. d/setkey restart
# /etc/init. d/racoon restart

7) Добавляем маршруты в таблицу маршрутизации.
На первом сервере
# ip route add to 172.16.0.0/24 via 172.17.0.1 src 172.17.0.1
На втором сервере
# ip route add to 172.17.0.0/24 via 172.16.0.1 src 172.16.0.1
* Указываем какая сеть доступна, через какой интерфейс в нашем случае IP адрес.

Результат выполнение команды route на сервере
№1


№2



Что бы проверить результат пропингуйте IP адрес VPN интерфейса удаленного сервера, если пинг есть, настройка на этом завершена и IPsec работает, сервера общаются между собой по VPN.

Результат сервер №1


Результат сервер №2