Я установил VPN-соединение между регионом в AWS и центром обработки данных, реализованным с помощью OpenStack:
|---AWS------------------| |-----OpenStack----------|
Private IP EIP Float. IP Private IP
10.2.10.250 <-> 35.x.255.x TUNNEL 75.x.65.x <-> 172.16.0.156
Если я попытаюсь выполнить эхо-запрос с хоста в OpenStack на другой хост в AWS, я не получу ответа. Это строка из tcpdump, запущенного на VPN-сервере 10.2.10.250:
3:04:01.523351 IP 172.16.0.156 > 10.2.10.27: ICMP echo request, id 9407, seq 8, length 64
Проблема в том, что сервер, с которого я пингуюсь, не 172.16.0.156, а что-то вроде 172.16.0.125. Итак, я думаю, что в сети OpenStack что-то заставляет SNAT. Я сбросил все iptables на обоих хостах. Я воспроизвел среду в двух регионах AWS, пинг работает, исходный IP-адрес правильный.
Это файл /etc/ipsec.conf:
config setup
charondebug="all"
uniqueids=yes
strictcrlpolicy=no
conn %default
ike=aes256-sha2_256-modp1024!
esp=aes256-sha2_256!
keyingtries=0
ikelifetime=1h
lifetime=8h
dpddelay=30
dpdtimeout=120
dpdaction=restart
auto=start
keyexchange=ikev2
type=tunnel
conn uswest2-x-to-x-x
leftfirewall=yes
leftcert=device-x-x_cert.pem
leftid="C=CH, O=strongSwan, CN=device-x-x"
rightid="C=CH, O=strongSwan, CN=device-uswest2-x-a"
left=172.16.0.156
leftsubnet=172.16.0.0/24
right=35.x.255.x
rightsubnet=10.2.0.0/16
И iptables:
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (0 references)
target prot opt source destination
Chain DOCKER-ISOLATION (0 references)
target prot opt source destination