Назад | Перейти на главную страницу

Проверка существования IPSEC как мета-выражения в nftables

Недавно настраивая маршрутизатор вручную с нуля с помощью 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 должно быть то, что вы ищете.