
Приветствую, я хочу настроить VPN-сервер на экземпляре EC2, чтобы маршрутизировать весь мой частный интернет-трафик, но я не могу заставить его работать. Любая помощь будет оценена по достоинству.
У меня следующая установка:
Private Network 10.0.0.0/24 | Internet | AWS VPC / Subnet 10.0.1.0/24
PC Fritzbox Router IGW EC2
10.0.0.11 ---- 10.0.0.1 ------| -- MyPublicLocalIP -- EC2PublicIP --| ------ 10.0.1.193
Маршрутизатор имеет IPSec-подключение к экземпляру Strongswan, работающему на экземпляре EC2. Сетевой интерфейс экземпляра EC2 имеет отключенную проверку источника/назначения. Группа безопасности разрешает входящий весь трафик с источником из PublicLocalIP и из подсети (также пробовал "разрешить все источники") и назначение любое.
VPN-подключение может быть установлено, и я могу пинговать 10.0.1.142 и 10.0.1.1 из моей частной сети. Сам экземпляр EC2 может также пинговать публичные IP-адреса, такие как 8.8.8.8. Но я не могу пинговать 8.8.8.8 или любой другой публичный IP-адрес из моей частной сети, хотя я вижу, что пакеты идут в одном направлении на экземпляре EC2 с помощью tshark:
tshark -f "icmp"
10 7.320371756 10.0.0.11 → 8.8.8.8 ICMP 98 Эхо-запрос (ping) id=0x0034, seq=1/256, ttl=63 11 8.332639368 10.0.0.11 → 8.8.8.8 ICMP 98 Эхо-запрос (ping) id=0x0034, seq=2/512, ttl=63 12 9.356457465 10.0.0.11 → 8.8.8.8 ICMP 98 Эхо-запрос (ping) id=0x0034, seq=3/768, ttl=63 13 10.380464177 10.0.0.11 → 8.8.8.8 ICMP 98 Эхо-запрос (ping) id=0x0034, seq=4/1024, ttl=63 14 11.404715789 10.0.0.11 → 8.8.8.8 ICMP 98 Эхо-запрос (ping) id=0x0034, seq=5/1280, ttl=63 15 12.428989444 10.0.0.11 → 8.8.8.8 ICMP 98 Эхо-запрос (ping) id=0x0034, seq=6/1536, ttl=63
Это EC2 ipsec.conf
настройка конфигурации конн %по умолчанию тип=туннель левый=%любой leftid=EC2PublicIP леваяподсеть=0.0.0.0/0 авто=добавить фрагментация=да forceencaps=нет мобилайк=да leftauth=psk rightauth=psk конн фб ike=aes256-sha-modp1024 esp=aes256-sha1-modp1024 справа=MyPublicLocalFQ.net [email protected] праваподсети=10.0.0.0/24 правыйdns=8.8.8.8,8.8.4.4 ikelifetime=3600с keylife=3600с
Это конфигурация IPSec маршрутизатора Fritzbox.
vpncfg { соединения { включено = нет; редактируемый = да; conn_type = conntype_lan; имя = "EC2VPN"; boxuser_id = 0; всегда_обновлять = да; reject_not_encrypted = нет; dont_filter_netbios = да; localip = 0.0.0.0; local_virtualip = 0.0.0.0; удаленныйIP = 0.0.0.0; remote_virtualip = 0.0.0.0; keepalive_ip = 0.0.0.0; локальный идентификатор { fqdn = "MyPublicLocalFQ.net"; } удаленный_идентификатор { fqdn = "EC2PublicIP"; } режим = phase1_mode_idp; phase1ss = "все/все/все"; тип ключа = connkeytype_pre_shared; ключ = "THE_PSK_KEY"; cert_do_server_auth = нет; use_nat_t = да; use_xauth = нет; use_cfgmode = нет; phase2localid { ipnet { IP-адрес = 10.0.0.0; маска = 255.255.255.0; } } phase2remoteid { ipnet { IP-адрес = 10.0.1.0; маска = 255.255.255.0; } } phase2ss = "esp-all-all/ah-none/comp-all/pfs"; accesslist = "разрешить ip любой любой"; } ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500", "udp 0.0.0.0:4500 0.0.0.0:4500"; }
ipsec statusall
Состояние демона IKE charon (strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64): время работы: 91 секунда, с 13 дек. 01:57:01 2020 г. malloc: sbrk 1622016, mmap 0, используется 648096, свободно 973920 рабочие потоки: 11 из 16 простаивают, 5/0/0/0 работают, очередь заданий: 0/0/0/0, запланировано: 3 загруженные плагины: charon aesni aes rc2 sha2 sha1 md5 mgf1 случайный случайный номер x509 ограничения отзыва pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp агент xcbc hmac gcm drbg attr kernel-netlink разрешение socket-default connmark stroke updown eap-mschapv2 xauth-generic счетчики Прослушиваемые IP-адреса: 10.0.1.193 Соединения: fb: %any...MyPublicLocalFQ IKEv1/2 fb: local: [EC2PublicIP] использует аутентификацию с предварительным общим ключом fb: удаленно: [MyPublicLocalFQ] использует аутентификацию с предварительным общим ключом fb: child: 0.0.0.0/0 === 10.0.0.0/24 ТУННЕЛЬ Ассоциации безопасности (1 вверх, 0 подключается): fb[2]: УСТАНОВЛЕНО 90 секунд назад, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ] fb[2]: IKEv1 SPI: c1c1ef074becc316_i 3e3007efcc116605_r*, повторная аутентификация с помощью общего ключа за 43 минуты fb[2]: Предложение IKE: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 fb{1}: УСТАНОВЛЕНО, ТУННЕЛЬ, reqid 1, ESP в UDP SPI: cba035a9_i 4fbe83d8_o fb{1}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 5610 байт_i (83 пакета, 74 с назад), 840 байт_o (10 пакетов, 74 с назад), перекодировка через 43 минуты фб{1}: 10.0.1.0/24 === 10.0.0.0/24
iptables-сохранить
# Сгенерировано iptables-save v1.8.4 в воскресенье, 13 декабря 02:30:39 2020 г. *калечить :ПРЕДВАРИТЕЛЬНЫЙ МАРШРУТ ПРИНЯТ [214:19671] :ВВОД ПРИНЯТ [163:15822] :ПЕРЕДАТЬ ПРИНЯТЬ [0:0] :ВЫХОД ПРИНЯТ [82:7863] :ПОСТРАСПИСАНИЕ ПРИНЯТО [82:7863] -A ПЕРЕНАПРАВИТЬ -s 10.0.0.0/24 -o eth0 -p tcp -m политика --dir в --pol ipsec -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360 СОВЕРШИТЬ # Завершено в воскресенье, 13 декабря 02:30:39 2020 г. # Сгенерировано iptables-save v1.8.4 в воскресенье, 13 декабря 02:30:39 2020 г. *нат :ПРЕДВАРИТЕЛЬНЫЙ МАРШРУТ ПРИНЯТ [51:3849] :ВВОД ПРИНЯТ [0:0] :ВЫХОД ПРИНЯТ [4:361] :ПОСТРАСПИСАНИЕ ПРИНЯТЬ [4:361] -A POSTROUTING -s 10.0.0.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j МАСКАРАД СОВЕРШИТЬ # Завершено в воскресенье, 13 декабря 02:30:39 2020 г. # Сгенерировано iptables-save v1.8.4 в воскресенье, 13 декабря 02:30:39 2020 г. *фильтр :ПАДЕНИЕ ВХОДНОГО СИГНАЛА [0:0] :ПЕРЕДНИЙ ПАДЕНИЕ [0:0] :ВЫХОД ПРИНЯТЬ [0:0] :ufw-after-forward - [0:0] :ufw-после-ввода - [0:0] :ufw-после-регистрации-вперед - [0:0] :ufw-после-регистрации-ввода - [0:0] :ufw-после-регистрации-вывод - [0:0] :ufw-после-вывода - [0:0] :ufw-before-forward - [0:0] :ufw-before-input - [0:0] :ufw-before-logging-forward - [0:0] :ufw-before-logging-input - [0:0] :ufw-before-logging-output - [0:0] :ufw-before-output - [0:0] :ufw-logging-allow - [0:0] :ufw-logging-deny - [0:0] :ufw-не-локальный - [0:0] :ufw-отклонить-переслать - [0:0] :ufw-отклонить-вход - [0:0] :ufw-отклонить-вывод - [0:0] :ufw-skip-to-policy-forward - [0:0] :ufw-skip-to-policy-input - [0:0] :ufw-skip-to-policy-output - [0:0] :ufw-track-forward - [0:0] :ufw-track-input - [0:0] :ufw-track-вывод - [0:0] :ufw-пользователь-переслать - [0:0] :ufw-пользовательский-ввод - [0:0] :ufw-user-limit - [0:0] :ufw-user-limit-accept - [0:0] :ufw-user-logging-forward - [0:0] :ufw-user-logging-input - [0:0] :ufw-user-logging-output - [0:0] :ufw-user-output - [0:0] -A ВХОД -j ufw-before-logging-input -A ВХОД -j ufw-before-input -A ВХОД -j ufw-после-ввода -A ВХОД -j ufw-после-регистрации-вход -A ВХОД -j ufw-отклонить-вход -A ВХОД -j ufw-track-input -A ВПЕРЕД -j ufw-before-logging-forward -A ВПЕРЕД -j ufw-before-forward -A ВПЕРЁД -j ufw-after-forward -A ВПЕРЕД -j ufw-после-регистрации-вперед -A ПЕРЕСЫЛКА -j ufw-отклонить-переслать -A ВПЕРЕД -j ufw-track-forward -A ВЫВОД -j ufw-before-logging-output -A ВЫХОД -j ufw-before-output -A ВЫВОД -j ufw-after-output -A ВЫВОД -j ufw-после-регистрации-вывод -A ВЫХОД -j ufw-отклонить-выход -A ВЫХОД -j ufw-track-выход -A ufw-после-ввода -p udp -m udp --dport 137 -j ufw-перейти-к-политике-ввода -A ufw-после-ввода -p udp -m udp --dport 138 -j ufw-перейти-к-политике-ввода -A ufw-after-input -p tcp -m tcp --dport 139 -j ufw-skip-to-policy-input -A ufw-after-input -p tcp -m tcp --dport 445 -j ufw-skip-to-policy-input -A ufw-после-ввода -p udp -m udp --dport 67 -j ufw-перейти-к-политике-ввода -A ufw-после-ввода -p udp -m udp --dport 68 -j ufw-перейти-к-политике-ввода -A ufw-after-input -m addrtype --dst-type BROADCAST -j ufw-skip-to-policy-input -A ufw-after-logging-forward -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] " -A ufw-after-logging-input -m limit --limit 3/min --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] " -A ufw-before-forward -s 10.0.0.0/24 -m политика --dir in --pol ipsec --proto esp -j ACCEPT -A ufw-before-forward -d 10.0.0.0/24 -m политика --dir out --pol ipsec --proto esp -j ACCEPT -A ufw-before-forward -m conntrack --ctstate СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ -j ПРИНЯТЬ -A ufw-before-forward -p icmp -m icmp --icmp-type 3 -j ACCEPT -A ufw-before-forward -p icmp -m icmp --icmp-type 11 -j ПРИНЯТЬ -A ufw-before-forward -p icmp -m icmp --icmp-type 12 -j ACCEPT -A ufw-before-forward -p icmp -m icmp --icmp-type 8 -j ACCEPT -A ufw-before-forward -j ufw-user-forward -A ufw-before-input -i lo -j ACCEPT -A ufw-before-input -m conntrack --ctstate СВЯЗАННЫЕ, УСТАНОВЛЕННЫЕ -j ПРИНЯТЬ -A ufw-before-input -m conntrack --ctstate НЕВЕРНО -j ufw-logging-deny -A ufw-before-input -m conntrack --ctstate НЕВЕРНЫЙ -j ОТКАЗ -A ufw-before-input -p icmp -m icmp --icmp-type 3 -j ACCEPT -A ufw-before-input -p icmp -m icmp --icmp-type 11 -j ACCEPT -A ufw-before-input -p icmp -m icmp --icmp-type 12 -j ACCEPT -A ufw-before-input -p icmp -m icmp --icmp-type 8 -j ACCEPT -A ufw-before-input -p udp -m udp --sport 67 --dport 68 -j ПРИНЯТЬ -A ufw-before-input -j ufw-not-local -A ufw-before-input -d 224.0.0.251/32 -p udp -m udp --dport 5353 -j ПРИНЯТЬ -A ufw-before-input -d 239.255.255.250/32 -p udp -m udp --dport 1900 -j ПРИНЯТЬ -A ufw-before-input -j ufw-user-input -A ufw-before-output -o lo -j ACCEPT -A ufw-before-output -m conntrack --ctstate СВЯЗАННЫЕ,УСТАНОВЛЕННЫЕ -j ПРИНЯТЬ -A ufw-before-output -j ufw-user-output -A ufw-logging-allow -m limit --limit 3/мин --limit-burst 10 -j LOG --log-prefix "[UFW ALLOW] " -A ufw-logging-deny -m conntrack --ctstate НЕВЕРНО -m limit --limit 3/мин --limit-burst 10 -j RETURN -A ufw-logging-deny -m limit --limit 3/мин --limit-burst 10 -j LOG --log-prefix "[UFW BLOCK] " -A ufw-not-local -m addrtype --dst-type ЛОКАЛЬНЫЙ -j ВОЗВРАТ -A ufw-not-local -m addrtype --dst-type МНОГОАДРЕСНАЯ РАССЫЛКА -j ВОЗВРАТ -A ufw-not-local -m addrtype --dst-type BROADCAST -j RETURN -A ufw-not-local -m limit --limit 3/min --limit-burst 10 -j ufw-logging-deny -A ufw-not-local -j DROP -A ufw-skip-to-policy-forward -j DROP -A ufw-skip-to-policy-input -j DROP -A ufw-skip-to-policy-output -j ACCEPT -A ufw-track-output -p tcp -m conntrack --ctstate НОВЫЙ -j ПРИНЯТЬ -A ufw-track-output -p udp -m conntrack --ctstate НОВЫЙ -j ПРИНЯТЬ -A ufw-user-input -p tcp -m tcp --dport 22 -m comment --comment "\'dapp_OpenSSH\'" -j ACCEPT -A ufw-user-input -p udp -m multiport --dports 500,4500 -j ПРИНЯТЬ -A ufw-user-limit -m limit --limit 3/мин -j LOG --log-prefix "[БЛОК ЛИМИТА UFW]" -A ufw-user-limit -j ОТКЛОНИТЬ --reject-with icmp-port-unreachable -A ufw-user-limit-accept -j ПРИНЯТЬ СОВЕРШИТЬ # Завершено в воскресенье, 13 декабря 02:30:39 2020 г.
IP-маршрут
по умолчанию через 10.0.1.1 dev eth0 proto dhcp src 10.0.1.193 metric 100 10.0.1.0/24 dev eth0 proto ядро область ссылка src 10.0.1.193 10.0.1.1 dev eth0 proto dhcp область ссылка источник 10.0.1.193 метрика 100
EC2 использует образ Ubuntu 20.04.1 LTS.
Я также пробовал добавлять rightsourceip=10.10.10.0/24
в ipsec, заменяя pahse2remoteid.ipnet.ipaddr на ipaddr = 10.10.10.0
замену всего 10.0.0.0/24
в выводе tables-save 10.10.10.0/24
и используя tables-restore, но это все равно не сработало. Клиенту не назначаются никакие VirtualIP, даже если пул выделяется:
Состояние демона IKE charon (strongSwan 5.8.2, Linux 5.4.0-1029-aws, x86_64): время работы: 32 минуты, с 13 дек. 01:09:10 2020 г. malloc: sbrk 1622016, mmap 0, используется 728048, свободно 893968 рабочие потоки: 11 из 16 простаивают, 5/0/0/0 работают, очередь заданий: 0/0/0/0, запланировано: 3 загруженные плагины: charon aesni aes rc2 sha2 sha1 md5 mgf1 случайный случайный номер x509 ограничения отзыва pubkey pkcs1 pkcs7 pkcs8 pkcs12 pgp dnskey sshkey pem openssl fips-prf gmp агент xcbc hmac gcm drbg attr kernel-netlink разрешение socket-default connmark stroke updown eap-mschapv2 xauth-generic счетчики Пулы виртуальных IP-адресов (размер/онлайн/офлайн): 10.10.10.0/24: 254/0/0 Прослушиваемые IP-адреса: 10.0.1.193 Соединения: fb: %any...MyPublicLocalFQ.net IKEv1/2 fb: local: [EC2PublicIP] использует аутентификацию с предварительным общим ключом fb: удаленно: [MyPublicLocalFQ.net] использует аутентификацию с предварительным общим ключом fb: child: 0.0.0.0/0 === 10.0.0.0/24 ТУННЕЛЬ Маршрутизированные соединения: fb{1}: МАРШРУТИЗИРОВАНО, ТУННЕЛЬ, требуется 1 фб{1}: 0.0.0.0/0 === 10.0.0.0/24 Ассоциации безопасности (1 вверх, 0 подключается): fb[2]: УСТАНОВЛЕНО 32 минуты назад, 10.0.1.193[EC2PublicIP]...MyPublicLocalIP[MyPublicLocalFQ.net] fb[2]: IKEv1 SPI: 0da6b7368f560272_i 166b8161eae230c8_r*, повторная аутентификация с помощью общего ключа за 12 минут fb[2]: Предложение IKE: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024 fb{2}: УСТАНОВЛЕНО, ТУННЕЛЬ, reqid 2, ESP в UDP SPI: cda4bbc0_i 1ea590b2_o fb{2}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 170072 байта_i (2601 пакетов, 26 с назад), 1344 байта_o (16 пакетов, 26 с назад), перекодировка через 12 минут фб{2}: 10.0.1.0/24 === 10.0.0.0/24
Приветствуются любые идеи.