Я пытаюсь установить соединение IPSec VPN между нашей корпоративной сетью и виртуальным частным облаком Amazon, используя их систему VPN и сервер Linux. К сожалению, единственное руководство, которое я нашел, обсуждает, как настроить туннель с помощью хост-машины Linux и получить эту машину Linux для доступа к экземплярам VPC, но я не могу найти обсуждения в Интернете о том, как получить доступ к корпоративной сети. (или остальной части Интернета через эту сеть).
Сетевая информация
Local subnet: 10.3.0.0/25
Remote subnet: 10.4.0.0/16
Tunnel 1:
Outside IP Addresses:
- Customer Gateway: : 199.167.xxx.xxx
- VPN Gateway : 205.251.233.121
Inside IP Addresses
- Customer Gateway : 169.254.249.2/30
- VPN Gateway : 169.254.249.1/30
Tunnel 2:
Outside IP Addresses:
- Customer Gateway: : 199.167.xxx.xxx
- VPN Gateway : 205.251.233.122
Inside IP Addresses
- Customer Gateway : 169.254.249.6/30
- VPN Gateway : 169.254.249.5/30
Вот мой /etc/ipsec-tools.conf:
flush;
spdflush;
spdadd 169.254.249.2/30 169.254.249.1/30 any -P out ipsec
esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;
spdadd 169.254.249.1/30 169.254.249.2/30 any -P in ipsec
esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 169.254.249.5/30 any -P out ipsec
esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;
spdadd 169.254.249.5/30 169.254.249.6/30 any -P in ipsec
esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
spdadd 169.254.249.2/30 10.4.0.0/16 any -P out ipsec
esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;
spdadd 10.4.0.0/16 169.254.249.2/30 any -P in ipsec
esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 10.4.0.0/16 any -P out ipsec
esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;
spdadd 10.4.0.0/16 169.254.249.6/30 any -P in ipsec
esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
Вот мой /etc/racoon/racoon.conf:
remote 205.251.233.122 {
exchange_mode main;
lifetime time 28800 seconds;
proposal {
encryption_algorithm aes128;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
remote 205.251.233.121 {
exchange_mode main;
lifetime time 28800 seconds;
proposal {
encryption_algorithm aes128;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
sainfo address 169.254.249.2/30 any address 169.254.249.1/30 any {
pfs_group 2;
lifetime time 3600 seconds;
encryption_algorithm aes128;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
sainfo address 169.254.249.6/30 any address 169.254.249.5/30 any {
pfs_group 2;
lifetime time 3600 seconds;
encryption_algorithm aes128;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
BGP работает нормально, поэтому я не собираюсь публиковать эти конфигурации.
Вот что работает
Полагаю, мне не хватает чего-то простого, но я попытался добавить записи в ipsec-tools.conf для зеркалирования {local endpoint} <-> {remote subnet}, используя {local subnet} <-> {remote endpoint}, но, похоже, это не сработало.
Когда я пингую с {удаленного экземпляра} на {локальный сервер}, таймаут эхо-запроса. Пакеты видны на интерфейсе eth0 (даже если локальная сеть находится на eth1).
Google мало помог; он показывает только людей, пытающихся использовать OpenSwan или имеющих аналогичные проблемы, но с аппаратными маршрутизаторами или использующих старые инструменты.
Догадаться. Пришлось изменить мой ipsec-tools.conf на это:
flush;
spdflush;
# Generic routing
spdadd 10.4.0.0/16 10.3.0.0/25 any -P in ipsec esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 10.3.0.0/25 10.4.0.0/16 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;
# Tunnel 1
spdadd 169.254.249.1/30 169.254.249.2/30 any -P in ipsec esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.2/30 169.254.249.1/30 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;
spdadd 10.4.0.0/16 169.254.249.2/30 any -P in ipsec esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.2/30 10.4.0.0/16 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;
# Tunnel 2
spdadd 169.254.249.5/30 169.254.249.6/30 any -P in ipsec esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 169.254.249.5/30 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;
spdadd 10.4.0.0/16 169.254.249.6/30 any -P in ipsec esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 10.4.0.0/16 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;
И измените мой racoon.conf на это:
path pre_shared_key "/etc/racoon/psk.txt";
remote 205.251.233.122 {
exchange_mode main;
lifetime time 28800 seconds;
proposal {
encryption_algorithm aes128;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
remote 205.251.233.121 {
exchange_mode main;
lifetime time 28800 seconds;
proposal {
encryption_algorithm aes128;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
sainfo address 169.254.249.2/30 any address 169.254.249.1/30 any {
pfs_group 2;
lifetime time 3600 seconds;
encryption_algorithm aes128;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
sainfo address 169.254.249.6/30 any address 169.254.249.5/30 any {
pfs_group 2;
lifetime time 3600 seconds;
encryption_algorithm aes128;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
sainfo address 10.3.0.0/25 any address 10.4.0.0/16 any {
pfs_group 2;
lifetime time 3600 seconds;
encryption_algorithm aes128;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}
Однако эта конфигурация, насколько я понимаю, будет маршрутизировать трафик только между 10.3.0.0/25 и 10.4.0.0/16 через первый туннель (через x.x.x.121). Я обновлю ответ, когда выясню это.
Ну, я обманул :) Я установил шлюз Astaro, который официально поддерживается Amazon, а затем использовал его для моделирования своей собственной. Вы можете просто подключиться по SSH к устройству Astaro и посмотреть, как они все настроили. Конечно, вы можете остаться с устройством Astaro, если хотите за него заплатить.
Знаете ли вы причину использования "require" вместо "use" для конфигурации setkey? Знаете ли вы, имеет ли значение, в каком порядке я размещаю утверждения в разделах remote и sainfo и ошибочно дублирую определенные утверждения? Например:
#original
remote 205.251.233.121 {
exchange_mode main;
lifetime time 28800 seconds;
proposal {
encryption_algorithm aes128;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2;
}
generate_policy off;
}
против
#edited
remote 205.251.233.121 {
generate_policy off; #moved/duplicated
lifetime time 28800 seconds;
proposal {
dh_group 2; #moved
encryption_algorithm aes128;
hash_algorithm sha1;
authentication_method pre_shared_key;
}
exchange_mode main; #moved
generate_policy off; #duplicated/moved
}
Вы также выяснили, как заставить трафик проходить по обоим туннелям?
Спасибо за любые советы.