Как починить client-domain TCP через IPSec? Приветствую. Решил перелезть с OpenVPN на IKEv2, заодно заведя туда же свои устройства от фруктовой компании. Сертификаты от OpenVPN подошли замечательно, соединение (с определёнными проблемами, но всё же) установилось. Теперь к проблемам. Конфигурация следующая: на сервере (он же роутер в домашнюю сеть) есть интерфейс br-local (192.168.x.1/24), с настроенным DHCP. Strongswan настроен использовать его же, клиенты получают IP в той же подсети, и всё хорошо. Теперь я с клиента (ноутбук) стучусь... да много куда, до домашнего компьютера, до виртуалок на том же сервере, и т.д. - всё хорошо. Ping 192.168.x.1 проходит. DIG рапортует, что DNS использует тот же - 192.168.x.1 (ответы получает, в том числе про локальные ресурсы). Теперь вопрос. Какого Ктулху в этой идиллии не работает TCP до 192.168.x.1? Ни SSH, ни HTTP(S)... ничего. В wireshark вижу пакеты, которые уходят по адресу. В tcpdump вижу, что они принимаются. В логах серверов вижу запросы. А вот куда уходит трафик "обратно" - никак не пойму. Может, в /dev/null, может в lo, но уж точно не клиенту./etc/ipsec.confconfig setup # strictcrlpolicy=yes # uniqueids = no conn %default dpdaction=clear dpddelay=35s dpdtimeout=300s fragmentation=yes rekey=no compress=yes mobike=yes keyexchange=ikev2 ike=... esp=... conn phoenix left=%any leftauth=pubkey leftsubnet=0.0.0.0/0 leftsourceip=%config leftcert=vpn-server.crt leftid=@REDACTED leftsendcert=always leftfirewall=yes right=%any rightsourceip=%dhcp rightca=REDACTED rightdns=192.168.x.1,8.8.8.8,8.8.4.4 conn phoenix-pubkey also=phoenix auto=add conn phoenix-pubkey-noxauth also=phoenix rightauth2=xauth-noauth auto=add conn phoenix-eap also=phoenix eap_identity=%identity rightauth=eap auto=add conn phoenix-eap-tls also=phoenix eap_identity=%identity rightauth=eap-tls auto=add/etc/iptables/rules.v4*filter :INPUT DROP [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [1:136] -A INPUT -i br-local -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -i wan -p udp -m udp --dport 500 -j ACCEPT -A INPUT -i wan -p udp -m udp --dport 4500 -j ACCEPT -A INPUT -i wan -p esp -j ACCEPT -A INPUT -m policy --dir in --pol ipsec --proto esp -j ACCEPT -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu COMMIT *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 192.168.x.0/24 -m policy --dir out --pol ipsec -j ACCEPT -A POSTROUTING -j MASQUERADE COMMIT *mangle :PREROUTING ACCEPT [375:162632] :INPUT ACCEPT [57:8507] :FORWARD ACCEPT [318:154125] :OUTPUT ACCEPT [43:6847] :POSTROUTING ACCEPT [361:160972] -A FORWARD -p tcp -m policy --pol ipsec --dir in --syn -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360 -A FORWARD -p tcp -m policy --pol ipsec --dir out --syn -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360 COMMIT
Есть несколько возможных причин, по которым TCP не работает до 192.168.x.1 через IPSec. Давайте их рассмотрим:
Ошибки в настройках IPSec: Проверьте параметры IKEv2 и ESP в вашем конфигурационном файле ipsec.conf. Убедитесь, что правильно настроены параметры шифрования, аутентификации и т.д. Также убедитесь, что правильно настроены подсети leftsubnet и rightsubnet.
Проблемы с брандмауэром: Проверьте правила брандмауэра на сервере и убедитесь, что пакеты TCP до 192.168.x.1 разрешены. В вашем iptables правилах, убедитесь что правило для разрешения TCP-трафика до 192.168.x.1 добавлено.
Проблемы с маршрутизацией: Убедитесь, что сервер правильно маршрутизирует обратный трафик к клиентам IPSec. Может потребоваться настроить соответствующие маршруты для подсети 192.168.x.0/24 на сервере.
Проблемы с DNS: Убедитесь, что DNS запросы правильно обрабатываются и правильно настроены на сервере и клиенте. Возможно, проблема может быть связана с DNS настройками на сервере или клиенте.
Если после проверки вышеуказанных причин проблема не решится, вам может потребоваться более детальный анализ с помощью инструментов мониторинга сети, таких как tcpdump или Wireshark, чтобы увидеть, где именно теряется TCP-трафик.
Есть несколько возможных причин, по которым TCP не работает до 192.168.x.1 через IPSec. Давайте их рассмотрим:
Ошибки в настройках IPSec: Проверьте параметры IKEv2 и ESP в вашем конфигурационном файле ipsec.conf. Убедитесь, что правильно настроены параметры шифрования, аутентификации и т.д. Также убедитесь, что правильно настроены подсети leftsubnet и rightsubnet.
Проблемы с брандмауэром: Проверьте правила брандмауэра на сервере и убедитесь, что пакеты TCP до 192.168.x.1 разрешены. В вашем iptables правилах, убедитесь что правило для разрешения TCP-трафика до 192.168.x.1 добавлено.
Проблемы с маршрутизацией: Убедитесь, что сервер правильно маршрутизирует обратный трафик к клиентам IPSec. Может потребоваться настроить соответствующие маршруты для подсети 192.168.x.0/24 на сервере.
Проблемы с DNS: Убедитесь, что DNS запросы правильно обрабатываются и правильно настроены на сервере и клиенте. Возможно, проблема может быть связана с DNS настройками на сервере или клиенте.
Если после проверки вышеуказанных причин проблема не решится, вам может потребоваться более детальный анализ с помощью инструментов мониторинга сети, таких как tcpdump или Wireshark, чтобы увидеть, где именно теряется TCP-трафик.