Недавно настраивая маршрутизатор вручную с нуля с помощью Debian, я решил использовать nftables вместе с strongSwan для обеспечения доступа IKEv2 VPN к этому.
После долгих разочарований вместе с испытанием и ошибка, я наконец обнаружил правильные правила для использования с nftables, чтобы разрешить доступ VPN к маршрутизатору и локальной сети за ним.
В дополнение к этому я хотел также убедиться, что маршрутизатор пересылает трафик обратно, чтобы при подключении , он не нарушает доступ к Интернету к подключенному устройству (например, смартфону).
Я обнаружил, что с помощью meta ipsec существует accept
в таблицах ввода / пересылки фильтров, это позволяет трафику в маршрутизатор правильно.
Разрешение на вход разрешает доступ к маршрутизатору, а пересылка позволяет перенаправлять трафик в локальную сеть.
Хотя эти правила работают, я не уверен, насколько они безопасны.
Следует ли мне использовать это мета-выражение соответствует или я должен совпадать что-нибудь еще? Возможно, что-нибудь еще, предоставляемое IPSEC, может быть настроено с помощью strongSwan?
На самом деле я пошел дальше и проверил, так как мне тоже было интересно, как перевести правила политики iptables
в nftables
.
nftables
имеет более или менее недокументированное соответствие ipsec
, которое можно увидеть в doc/primary-expression.txt
репозитория nftables
. .
ipsec {in | out} [ spnum 'NUM' ] {reqid | spi}
ipsec {in | out} [ spnum 'NUM' ] {ip | ip6} {saddr | daddr}
Выражение ipsec относится к данным ipsec, связанным с пакетом.
Ключевое слово «in» или «out» необходимо использовать, чтобы указать, должно ли выражение проверять входящие или исходящие политики. Ключевое слово in можно использовать в хуках prerouting, input и forward. Ключевое слово 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
должно быть тем, что вы ищете.