На FreeBSD-шлюзе локальной сети был поднял IPSec-туннель до провайдера. Весь трафик в/из интернета проходит через этот туннель, о чем свидетельстует множество ESP пакетов, бегающих между крайними точками туннеля (по данным tcpdump). Правила файрвола следующие:
00100 allow log ip from any to 194.87.0.50
00110 allow log ip from 194.87.0.50 to any
65535 allow ip from any to any
Т.е. по сути есть всего два правила 100 и 110, которые ведут логи пакетов с/на адрес www.ru. С некоторого компа в локальной сети (с адресом 1.2.3.4) начинаю пинговать www.ru. На шлюзе логи в /var/log/security следующие:
100 Accept ICMP:8.0 1.2.3.4 194.87.0.50 in via ng6
110 Accept ICMP:0.0 194.87.0.50 1.2.3.4 out via ng6
100 Accept ICMP:8.0 1.2.3.4 194.87.0.50 in via ng6
110 Accept ICMP:0.0 194.87.0.50 1.2.3.4 out via ng6
100 Accept ICMP:8.0 1.2.3.4 194.87.0.50 in via ng6
110 Accept ICMP:0.0 194.87.0.50 1.2.3.4 out via ng6
100 Accept ICMP:8.0 1.2.3.4 194.87.0.50 in via ng6
110 Accept ICMP:0.0 194.87.0.50 1.2.3.4 out via ng6
Т.е. видно как файрвол принимает ICMP-запросы с интерфейса ng6 (pptp-интерфейс на клиента) и отправляет на этот интерфейс ICMP-ответы от www.ru. Однако файрвол не показывает как ICMP-запрос уходит со шлюза в инет и как приходит ответ. Очевидно пакет после приема с ng6 сразу же инкапсулируется в esp и отправляется по ipsec туннелю. Через файрвол проходит только исходящий esp-пакет с зашифрованными адресами источника и получателя. То же самое происходит по приходу пакета по ipsec туннелю. А можно ли как-нибудь сделать, чтобы уходящие в инет пакеты перед шифрованием и входящие из инета пакеты после дешифрования тоже проходили через файрвол? Это требуется для подсчета трафика.