最近,我使用 Debian 从头开始手动设置路由器,并决定使用 nftables 和 strongSwan 来提供 IKEv2 VPN 访问。
经过多次反复尝试后,我终于发现了使用 nftables 的正确规则,以允许 VPN 访问路由器及其后面的 LAN。
除此之外,我还想确保路由器正在将流量转发回去,以便在连接时不会中断连接设备(例如智能手机)的互联网访问。
我发现通过使用meta ipsec exists accept
过滤器输入/转发表,可以让流量正确进入路由器。
通过输入允许它可以访问路由器,通过转发允许将流量转发到 LAN。
虽然这些规则有效,但我不确定它们有多安全。
我应该使用这个元表达式匹配还是应该匹配其他内容?也许是 IPSEC 提供的其他任何可以通过 strongSwan 配置的内容?
答案1
实际上,我继续进行检查,因为我也想知道如何翻译iptables
政策规则nftables
。
nftables
有一个或多或少没有记录的ipsec
匹配,可以在doc/primary-expression.txt
的nftables
存储库。
IPSec{在|出去} [孢子数‘数字’] {请求|spi}
IPSec{在|出去} [孢子数‘数字’] {知识产权|IP6} {萨德尔|达德尔}
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
应该就是您要找的东西。
答案2
总而言之,类似的东西
nft add rule ip filter INPUT meta ipsec exists ipsec in ip saddr 192.168.1.0/24 accept
应该就是您要找的东西。
meta ipsec exists
似乎暗示了这一点ipsec in
。即使没有它,规则也能成功解析。