问题标签 [nftables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1258 浏览

nat - 使用 libnftnl API 添加 nftables nat 规则

我想使用 nftables 添加以下snat规则dnat

在这里,preandpostnat表中链的名称,我使用以下命令添加了这些链:

我已经用nft命令检查了它,它工作得很好。

我想通过我的应用程序中的 API 方法来实现相同的目标。libnftnl库中提供了一些示例和测试程序。根据nft-rule-add.cnft-expr_nat-test.c的参考,我做了一个相同的测试应用程序,如下所示:

在这里,main()函数调用setup_rule()是构建整个规则的地方。setup_rule()调用构建add_nat()表达式的snat位置。应该用于snatdnat作为参数传递给的 IP 和端口add_nat()。据我了解,建立规则的哲学是用各种表达方式建立规则。在add_nat()一个表达是为做snat而建的,这就是我开始摸索的地方。不知道如何处理NFTNL_EXPR_NAT_REG_ADDR_MINNFTNL_EXPR_NAT_REG_PROTO_MIN种类的宏。如何传递将在 snat 或 dnat 中使用的 IP 地址和端口地址。

我按如下方式运行上述测试应用程序:

并使用以下命令

得到如下输出:

可能是方法不对,但是,如上图,最后显示snat to出来了。这让我希望这是前进的道路。我还挖掘了nftables实用程序代码,但无济于事。

所以要列出所有查询:

  1. 如何使用 nftable api添加snat或规则?dnat
  2. 有什么用NFT_REG_1?这些寄存器应该如何使用以及应该在哪里使用?
  3. 命令输出中@之后写的是nft list table nat -a什么?当我使用命令应用规则时,nft它不会在 @ 之后的输出中显示信息nft list table
  4. 此外,命令ip addr 0.0.0.0的输出中还显示了一个额外的内容。nft list table nat -a在哪里添加?
0 投票
0 回答
960 浏览

ipv6 - 如何通过 nftables 进行 NETMAP

我的局域网中有一些家庭服务器,通过adsl连接到互联网我的路由器是基于linux的x86服务器,我在上面写了脚本几个月前我将脚本更新为nftables ...

它在 ipv4 中运行良好....

有一天,我发现我的isp通过dhcp-pd提供了ipv6 由于ipv6地址可能会改变,服务器上设置静态全局ipv6地址会很困难。然后我正在考虑使用唯一的本地地址。我需要类似的东西: ip6tables -t nat -A POSTROUTING -o eth0 -s fc00::/64 -j NETMAP --to 2006::/64 将地址转换为全局地址(并使用适当的 dnat 规则)但是我在 nftables 中找不到类似的东西......

我查看了官方 wiki: nft_nat

但我无法理解如何使用 nft_nat。

如果它是 ipv4 中的 /24 块,甚至可以将所有地址枚​​举到映射中。但是在 ipv6 中枚举 /64 块真的是不可能的......

那么有没有办法通过 nftables 来做 netmap 呢?或者我必须恢复到 ip(6)tables?或者有什么其他建议?

谢谢你。

0 投票
2 回答
172 浏览

nftables - 测试数据包不匹配集

我想编写一个 nftables 规则来匹配在集合中找不到的数据包字段:

不幸的是,这给出了一个语法错误:“意外!” 将“不”移动到语句中的其他各种可能点对错误消息没有影响。是否允许否定?

0 投票
1 回答
296 浏览

tunnel - 让 SSH 隧道工作的 nft 规则是什么?

我可以使用 nft 中的“所有 IP 都匹配”规则进行 SSH 连接:

SSH 隧道在没有上述规则集的情况下工作,但在出现 nft 规则集时不起作用:

油灰

问题:在保持输入策略“丢弃”的同时使 SSH 隧道正常工作的最小规则是什么?

0 投票
2 回答
1441 浏览

docker - 如何使用 nftables 从系统上的 Docker 容器发布端口?

我有一个相当简单的 Debian Buster 安装。Debian Buster 使用 nftables 而不是 iptables。如果我尝试运行具有已发布端口的容器:

然后我得到这个错误:

如何让端口发布工作?

0 投票
1 回答
228 浏览

nftables - 在 nftables 中添加规则时如何指定子网掩码?

在 nftables 中添加规则时如何指定子网掩码?

紧跟在指定 IP 地址后面的斜杠会导致语法错误。

结果是

(操作系统:Debian Buster:nftables v0.9.0)

0 投票
1 回答
324 浏览

logging - nftables:如何记录从路由器发出的数据包?

我们的 VoIP 突然出现故障,无法连接。我可以看到 UDP 5060 数据包通过以下线路进入路由器:

但是我没有找到记录输出的技巧,以确保数据包被发送到 ADSL 盒子。以下两行不时给出一个数据包(大约 1 比 100)。

我用 tcp 端口 80 进行了测试(互联网工作正常),这给出了相同的结果,所以这并不意味着 5060 数据包丢失,而只是日志写得不好。

我知道我可以使用 wireshark 或 tcpdump 来做到这一点,如这篇文章所示: 分析从我的计算机发出的数据包, 但在 nftables 内有一个连续的日志对我来说更容易

0 投票
1 回答
1153 浏览

linux - 如何将 iptables --physdev 语句翻译成 nftables

我正在尝试将我的条目翻译成本机。我遇到的问题是physdev语句 - 我正在使用一些链来对通过网桥的流量进行分类:

如何使用本机 nft 正确实施此规则?iptables-translate 仅提供以下内容:

提前感谢您的帮助!

0 投票
1 回答
280 浏览

ipv6 - nftables - IPv6 端口敲击 - 接受整个子网

我想将端口敲门添加到已经在工作的服务器上。我的客户端发送数据包的神奇序列,服务器将在特定时间将其添加到一组允许的客户端的 nftables 中。因此,允许客户端使用某些服务。有关详细信息,请参阅下面的我的配置。

现在我想从我的路由器自动敲击端口。对于 IPv4,这是可行的,但对于 IPv6,这是行不通的,因为不涉及 NAT,因此每个客户端都有一个唯一的地址。这就是为什么我想将敲门客户端的整个子网 (/56) 添加到允许的客户端集。

这可能使用 nftables 吗?我读过“标志间隔”,但我不明白如何动态地将客户端子网添加到它。

0 投票
2 回答
846 浏览

set - 无法刷新 nftable 元素的集合

我实际上正在学习在测试环境中使用 nftables,并且我实际上正在使用 nftables 集。我使用的是 0.7 版,由于我的测试无法正常工作,我更新到 0.9.4 版,但我的问题仍然相同。

我可以毫无问题地在我的桌子上创建我的套装。而且我的集合元素必须包含 ipv4 地址。我使用 nftables 表、链和集合没有问题,我的规则有效等等......

所以我想做但找不到怎么做的是删除我所有的集合元素,而不是一一精确的ipv4地址。

假设我的表名称是test并且我的设置名称是tmp类型为 ipv4_addr,我的配置将如下所示:

我可以使用以下命令成功地将元素添加到该集合中:

现在我要做的是删除我的集合中的所有元素,我查看了 nft 的手册页,它说我可以使用 flush 命令刷新集合中的所有元素:

所以我尝试了这个命令从我的集合中删除我的所有元素:

但它返回给我这个错误:

我以相同的方式尝试了很多命令(在设置之前添加表格,而不是精确表格),它总是返回错误,但并非每次都相同。

我想我一定做错了什么,但我不知道是什么。如果你有任何想法,请?我将非常感谢!

也许我的整体配置不好,我不能这样想套?

如果无法从集合中刷新元素,有没有办法从集合中删除所有元素(除了定义标志超时)?

抱歉,如果我的信息不清楚,我是法语,用另一种语言来描述问题有点困难......

谢谢!

问候。