По первому вопросу не сразу, но все-таки самостоятельно допер до того, что xfrm интерфейс нужно создавать самому (собственно в мануале strongswan'а это тоже же делается руками конфигурирующего). Просто показалось, что первый XFRM0 был создан системными средствами. Не могу объяснить почему, наверное это уже первые проявления старческого маразма.
Второе и третье сделал следующим образом: изменения в iptables сделал скриптом в netfilter.d, правда пришлось в шелл-скрипте делать проверку на присутствие записей. А смену параметров интерфейса и его адресов - скриптом в ifipchanged.d - там, слава богу, ничего плохого от повторённого введения команд не возникает. Позднее займусь более тонкой фильтрацией, чтобы реже гонять скрипты. Спасибо за информацию.
Однако, возникла с IPSEC туннелем следующая проблема: трафик который приходит внутри туннеля, без проблем достигает адресов рутера, но если его нужно выкинуть обратно в ISP, чтобы достигнуть управляющего интерфейса PON-бокса, то связность пропадает из-за того, что происходит TTL expired на адресах туннеля. То же самое приходит, если трафик из XFRM0 нужно направить, например, в XFRM1 или br0. Причем если снимать PCAP на xfrm0, то он видит только приходящие в туннель пакеты с уменьшающимся TTL. Исходящие пакеты в капчу не попадают. Капча прилагается, конфиг капчи следующий:
monitor
capture
interface XFRM0
direction in-out
filter "host 198.18.100.20"
promisc-mode
output-directory disk:pcap
timeout 1000
buffer-size 512
max-frame-size 1518
!
!
!
Еще снял капчу на ответной стороне, которая, в отличии от кинетика, снимает пакеты в обе стороны, а не только входящие, и видит свой же пакет, возвращенный без изменений кроме уменьшенного на единицу TTL. (См. приложенный файл PCAP.pcap).
Проблем в таблице маршрутизации заметить не удалось. Ну кроме того, что CLI Keenetic-а по-моему неправильно обрабатывает двухстрочные маршруты в выводе ip route и вместо одного маршрута демонстрирует в выводе "show ip route" два: один с нулевой метрикой и второй с установленной:
(config)> show ip route | grep "XFRM2" -A 2 -B 3
================================================================================
Destination Gateway Interface F Metric
================================================================================
198.18.102.32/30 0.0.0.0 XFRM2 U 0
198.18.102.32/30 0.0.0.0 XFRM2 U 32
(config)>
~ # ip route | grep nxfrm2
198.18.102.32/30 dev nxfrm2 scope link src 198.18.102.34
198.18.102.32/30 dev nxfrm2 scope link metric 32
~ #
На XFRM0 NAT и файрволинг на данном этапе развития исторического материализма не нужен, поэтому установлена команда security-level private. Конфиг интерфейса прост:
interface XFRM0
description "-> HGW Tu6"
security-level private
ip address 198.18.102.26 255.255.255.252
ip mtu 1400
ip tcp adjust-mss 1360
up
!
Пробовал и с "ip nat XFRM0" и без него.
Счетчики в iptables ни на какие идеи не наводят, кроме того, что возможно имеются какие-то mark для пакетов, которые переопределяют решения по маршрутизации и пакет вместо ISP (eth3) отправляется в обратно в XFRM0.
Куда еще можно поглядеть, чтобы найти причину такого поведения и, самое главное, его исправить?
capture-XFRM0-Sep 7 09-08-10.pcapng PCAP.pcap