Próbuję ustanowić połączenie IPSec VPN między naszą siecią korporacyjną a wirtualną chmurą prywatną Amazon, używając ich systemu VPN i serwera Linux. Niestety, jedyny przewodnik, jaki znalazłem, omawia sposób konfigurowania tunelu za pomocą hosta na maszynie z systemem Linux i uzyskiwania tej maszyny do systemu Linux do uzyskiwania dostępu do instancji VPC, ale nie ma dyskusji, w której można znaleźć w Internecie, jak uzyskać instancję w celu uzyskania dostępu do sieci korporacyjnej (lub reszta Internetu za pośrednictwem tej sieci).
Informacje o sieci
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
Oto mój /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;
Oto mój /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 działa dobrze, więc nie zamierzam publikować tych konfiguracji.
Oto, co działa
- Z poziomu Linux mogę pingować lokalne punkty końcowe (169.254.249.2/169.254.249.6) i ich zdalne odpowiedniki (169.254.249.1/169.254.249.5).
- Mogę również pingować instancje w VPC, SSH itp.
- Ze zdalnych instancji w VPC mogę również pingować lokalne i zdalne punkty końcowe
- Nie mogę pingować lokalnych serwerów w podsieci 10.3.0.0/25
Zakładam, że brakuje mi czegoś prostego, ale próbowałem dodać wpisy do ipsec-tools.conf, aby dublować {lokalny punkt końcowy} <-> {zdalna podsieć}, używając {lokalna podsieć} <-> {zdalny punkt końcowy}, ale nie działało.
Podczas pingowania z {instancji zdalnej} na {serwer lokalny} upłynął limit czasu pingów. Pakiety są widoczne na interfejsie eth0 (nawet jeśli sieć lokalna działa na eth1).
Google niewiele pomógł; pokazuje tylko osoby próbujące używać OpenSwan, mające podobne problemy, ale z routerami sprzętowymi lub starszymi narzędziami.