AWS Site-To-Site: можно отправлять эхо-запросы с AWS на локальную среду, но с локальной среды на AWS не работает.
Я не мог решить эту проблему в течение нескольких дней, я просмотрел миллионы руководств в Интернете, но ничего не нашел об этом.
У меня есть экземпляр EC2 с частным IP-адресом: 172.31.27.40. У меня есть только один VPC (по умолчанию, с 3 подсетями).
На преме у меня ip адрес (публичный): 1.2.3.4. Я создал клиентский шлюз (с локальным общедоступным IP-адресом), виртуальный частный шлюз (к которому я подключил vpc) и соединение между сайтами.
Мои 2 туннеля UP , в Static-Routes я добавил 192.168.0.0/24 (моя локальная подсеть). Я использую сценарий aws-updown.sh в конфигурации ipsec.
Моя конфигурация ipsec:
conn Tunnel1
auto=start
left=%defaultroute
leftid=1.2.3.4
right=(Outside IP address Tunn1)
type=tunnel
leftauth=psk
rightauth=psk
keyexchange=ikev1
ike=aes128-sha1-modp1024
ikelifetime=8h
esp=aes128-sha1-modp1024
lifetime=1h
keyingtries=%forever
leftsubnet=192.168.0.0/24
rightsubnet=172.31.0.0/16
dpddelay=10s
dpdtimeout=30s
dpdaction=restart
## Please note the following line assumes you only have two tunnels in your Strongswan configuration file. This "mark" value must be unique and may need to be changed based on other entries in your configuration file.
mark=499
## Uncomment the following line to utilize the script from the "Automated Tunnel Healhcheck and Failover" section. Ensure that the integer after "-m" matches the "mark" value above, and <VPC CIDR> is replaced with the CIDR of your VPC
## (e.g. 192.168.1.0/24)
leftupdown="/usr/local/sbin/ipsec-notify.sh -ln Tunnel1 -ll *******/30 -lr ******/30 -m 499 -r 172.31.0.0/16"
From EC2:
[root@ip-***** ec2-user]# ping 192.168.0.58
PING 192.168.0.58 (192.168.0.58) 56(84) bytes of data.
64 bytes from 192.168.0.58: icmp_seq=1 ttl=64 time=7.82 ms
64 bytes from 192.168.0.58: icmp_seq=2 ttl=64 time=7.84 ms
64 bytes from 192.168.0.58: icmp_seq=3 ttl=64 time=7.76 ms
64 bytes from 192.168.0.58: icmp_seq=4 ttl=64 time=10.8 ms
From On prem:
root@****:/home/utente# ping 172.31.27.40
PING 172.31.27.40 (172.31.27.40) 56(84) bytes of data.
From 169.254.**** icmp_seq=1 Destination Host Unreachable
From 169.254.**** icmp_seq=2 Destination Host Unreachable
From 169.254.**** icmp_seq=3 Destination Host Unreachable
From 169.254.**** icmp_seq=4 Destination Host Unreachable
Вы можете помочь мне?
1 ответ
ТЛ;ДР
Сценарий AWS updown создает маршруты, но не предоставляет файл .
- Открой тебя
leftupdown
скрипт с редактором. - Ищите функцию
add_route() {
IFS=',' read -ra route <<< "${TUNNEL_STATIC_ROUTE}"
for i in "${route[@]}"; do
ip route add ${i} dev ${TUNNEL_NAME} metric ${TUNNEL_MARK}
done
iptables -t mangle -A FORWARD -o ${TUNNEL_NAME} -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -A INPUT -p esp -s ${TUNNEL_REMOTE_ENDPOINT} -d ${TUNNEL_LOCAL_ENDPOINT} -j MARK --set-xmark ${TUNNEL_MARK}
ip route flush table 220
}
- Добавьте IP в маршрут
От:
[...]
ip route add ${i} dev ${TUNNEL_NAME} metric ${TUNNEL_MARK}
[...]
К:
[...]
ip route add ${i} dev ${TUNNEL_NAME} metric ${TUNNEL_MARK} src MY-LOCAL-ON-PREM-IP
[...]
Примечание. Очевидно, заменитеMY-LOCAL-ON-PREM-IP
с вашим соответствующим локальным IP-адресом192.168.0.58
!
Объяснение
У меня была точно такая же проблема. Я следовал документации AWS и создал Site-to-Site VPN в сочетании с виртуальным частным шлюзом. Я загрузил конфигурацию TXT для Strongswan и следовал инструкциям внутри нее. В частности, я также использовал сценарий updown из TXT конфигурации AWS.
Вот мой локальный IP-адрес:
3: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc pfifo_fast state UP group default qlen 1000
link/ether 86:00:00:46:85:95 brd ff:ff:ff:ff:ff:ff
altname enp0s10
inet 10.0.0.2/32 brd 10.0.0.2 scope global dynamic ens10
valid_lft 79692sec preferred_lft 79692sec
inet6 fe80::8400:ff:fe46:8595/64 scope link
valid_lft forever preferred_lft forever
Вот моя конфигурация туннеля ipsec:
conn Tunnel1
type=tunnel
auto=start
keyexchange=ikev2
authby=psk
leftid=ON-PREM-PUBLIC-IP
leftsubnet= 10.0.0.0/24 # my on-prem local network
right=AWS-PUBLIC-IP
rightsubnet= 192.168.0.0/16 # my AWS VPC
aggressive=no
ikelifetime=28800s
lifetime=3600s
margintime=270s
rekey=yes
rekeyfuzz=100%
fragmentation=yes
replay_window=1024
dpddelay=30s
dpdtimeout=120s
dpdaction=restart
ike=aes128-sha1-modp1024
esp=aes128-sha1-modp1024
keyingtries=%forever
## Please note the following line assumes you only have two tunnels in your Strongswan configuration file. This "mark" value must be unique and may need to be changed based on other entries in your configuration file.
mark=100
## Uncomment the following line to utilize the script from the "Automated Tunnel Healhcheck and Failover" section. Ensure that the integer after "-m" matches the "mark" value above, and <VPC CIDR> is replaced with the CIDR of yo
ur VPC
## (e.g. 192.168.0.0/16)
leftupdown="/etc/ipsec.d/aws-updown.sh -ln Tunnel1 -ll 169.254.41.94/30 -lr 169.254.41.93/30 -m 100 -r 192.168.0.0/16"
Все идет нормально. Но! Сценарий перезапуска AWS (/etc/ipsec.d/aws-updown.sh
) отсутствует важная часть. Вам необходимо указать вadd_route()
функция! Безsrc
, ответ ICMP не может найти путь обратно на ваш локальный сервер. (См. раздел TL;DR .)