Недавно настраивая маршрутизатор вручную с нуля с помощью Debian, я решил использовать nftables вместе с strongSwan для обеспечения доступа IKEv2 VPN к нему.
После долгих разочарований, а также проб и ошибок я наконец обнаружил правильные правила для использования с nftables, чтобы разрешить доступ VPN к маршрутизатору и локальной сети за ним.
В дополнение к этому я хотел также убедиться, что маршрутизатор перенаправляет трафик обратно, чтобы при подключении он не нарушал доступ в Интернет к подключенному устройству (например, смартфону).
Я обнаружил, что используя meta ipsec exists accept
в таблицах ввода / вывода фильтра это позволяет правильно направлять трафик в маршрутизатор.
Разрешение его через вход позволяет получить доступ к маршрутизатору, а пересылка позволяет перенаправлять трафик в локальную сеть.
Хотя эти правила работают, я не уверен, насколько они безопасны.
Должен ли я использовать это совпадение мета-выражения или должно совпадать по чему-нибудь еще? Возможно, что-нибудь еще, что предоставляется IPSEC, можно настроить с помощью strongSwan?
На самом деле пошел дальше и проверил, так как мне тоже было интересно, как перевести iptables
правила политики nftables
также.
nftables
имеет более или менее недокументированный ipsec
матч, который можно увидеть в doc/primary-expression.txt
из nftables
репозиторий.
ipsec {в | вне} [ spnum 'NUM'] {reqid | spi}
ipsec {в | вне} [ spnum 'NUM'] {ip | ip6} {Saddr | папа}
Выражение ipsec относится к данным ipsec, связанным с пакетом.
Ключевое слово in или out необходимо использовать, чтобы указать, должно ли выражение проверять входящие или исходящие политики. Ключевое слово in может использоваться в обработчиках предварительной маршрутизации, ввода и пересылки. Ключевое слово out применяется к перехватчикам пересылки, вывода и постмаршрутизации.
Необязательное ключевое слово spnum может использоваться для соответствия определенному состоянию в цепочке, по умолчанию оно равно 0.
Это примерно соответствует тому, что проверял модуль политики, хотя на самом деле я не сравнивал все xt_policy
и nft_meta
/nft_xfrm
чтобы убедиться, что они подтверждают одно и то же.
В общем, что-то вроде nft add rule ip filter INPUT meta ipsec exists ipsec in ip saddr 192.168.1.0/24 accept
должно быть то, что вы ищете.