Крупное обновление FreeBSD прервало соединение vpnc, входящий трафик ESP не выглядит незашифрованным на интерфейсах

Я обновил FreeBSD коробка от 10.4 в 11.2-RELEASE-p4 недавно, и, кажется, сломал vpnc VPN-подключение.

Вот vpnc.conf:

IPSec gateway 10.1.0.1
IPSec ID vpnuser
IPSec secret su0hoh8liNgeiT8
Xauth username vpnuser
Xauth password miuthei3Niew2ee
Nat Traversal Mode none
Noninteractive

После настройки интерфейса; em0 - аппаратный интерфейс с частным IP-адресом, настройте интерфейс vpnc с публичным адресом.

em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
  options=209b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,WOL_MAGIC>
  inet 10.2.2.1 netmask 0xfffffe00 broadcast 10.2.3.255
  nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
  media: Ethernet autoselect (100baseTX <full-duplex>)
  status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
  options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
  inet6 ::1 prefixlen 128
  inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
  inet 127.0.0.1 netmask 0xff000000
  nd6 options=21
  groups: lo
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1412
  options=80000<LINKSTATE>
  inet x.11.11.60 --> x.11.11.60 netmask 0xffffffff
  nd6 options=29
  groups: tun
  Opened by PID 90343

До сих пор я узнал:

  • vpnc может установить VPN-соединение, запустив vpnc с --no-detach не показывает никаких критических ошибок. Я использую тот же конфиг, что и раньше с предыдущим FreeBSD версия, где она работала без нареканий. Я также попробовал несколько версий vpnc-scripts, Я также проверил это с правилами брандмауэра pf, сброшенными с pfctl -F all,

  • пинги отправленные с локальной машины (ping 8.8.8.8) показать в tcpdump -ni tun0 как исходящий трафик:

    00:58:24.017976 IP x.11.11.60 > 8.8.8.8: ICMP echo request, id 42593, seq 4, length 64
    
  • пинги, отправленные с местной машины, показывают в tcpdump -ni em0; Интересно, что VPN-пакет, кажется, каждый раз получает правильный ответ, и этот ответ достигает аппаратного интерфейса локальной машины:

    00:58:24.018029 IP 10.2.2.1 > 10.1.0.1: ESP(spi=0x1bcc60be,seq=0x3c), length 132
    00:58:24.078558 IP 10.1.0.1 > 10.2.2.1: ESP(spi=0xe48f7620,seq=0x6b), length 132
    
  • однако возвращаемый пакет не отображается в tcpdump,

  • ping-пакеты со случайного внешнего (интернет) хоста на x.11.11.60 вызывают аналогичный трафик, который можно увидеть на em0 но не на tun0:

    01:35:32.612015 IP 10.1.0.1 > 10.2.2.1: ESP(spi=0xe48f7620,seq=0x124), length 132
    

изменения sysctl ценность net.inet.ip.forwarding кажется, не имеет никакого эффекта.

VPN (tun0) должен быть маршрутизацией хоста по умолчанию. Основываясь на обнаружении, что пример ping получает ответ до em0 похоже, это не проблема маршрутизации.

Можете ли вы заметить что-то, что мне не хватает? Какие-нибудь идеи, как я мог заставить VPN-соединение работать снова?


ОБНОВЛЕНИЕ - Новые выводы:

Теперь кажется вероятным, что это не vpnc конкретная проблема. Скорее всего, может быть что-то с обработкой ESP на FreeBSD 11,

  • Я нашел обходной путь к проблеме, которая состоит в том, чтобы просто заставить режим обхода NAT с --natt-mode force-natt несмотря на то, что между хостами нет NAT. По какой-то причине нет проблем с инкапсулированным UDP:

Что показывает на em0...

14:15:18.500251 IP 10.2.2.1.4500 > 10.1.0.1.4500: UDP-encap: ESP(spi=0x66842bb7,seq=0x3), length 132
14:15:18.527137 IP 10.1.0.1.4500 > 10.2.2.1.4500: UDP-encap: ESP(spi=0x3a4661f0,seq=0x3), length 132

... теперь можно увидеть в незашифрованном виде tun0:

14:15:18.500200 IP x.11.11.60 > 172.217.21.142: ICMP echo request, id 64016, seq 2, length 64
14:15:18.527188 IP 172.217.21.142 > x.11.11.60: ICMP echo reply, id 64016, seq 2, length 64
  • Я создал отдельное решение с racoon используя руководство FreeBSD, и оно показало аналогичное поведение, когда дело доходит до того, что он явно не обрабатывает входящие пакеты ESP. Почему-то теперь я получаю ошибку vpnc[3372]: esp sendto: Invalid argument когда я пытаюсь пинговать, если vpnc был начат с --natt-mode none,

  • Кажется, в IPsec, ESP и NAT-T произошли некоторые изменения в FreeBSD 11.0R и 11.1R. Может быть, эти изменения что-то мешают сейчас.

Любая помощь по-прежнему ценится.

0 ответов

Другие вопросы по тегам