首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用nftable转换离开特定接口的所有数据包的源地址。

用nftable转换离开特定接口的所有数据包的源地址。
EN

Ask Ubuntu用户
提问于 2018-09-10 06:47:31
回答 2查看 200关注 0票数 0

我正在Zorin主机上运行UbuntuServer18-04VM。

我希望将通过enp0s3离开的所有数据包的源地址翻译到带有nftable的192.168.1.120。这就是我所做的:

代码语言:javascript
复制
apt install nftables

modprobe nft_nat

modprobe nft_chain_nat_ipv4

nft add table nat

nft add chain nat post { type nat hook postrouting priority 0 \; }

nft add chain nat pre { type nat hook prerouting priority 0 \; }

nft add rule nat postrouting oif enp0s3 snat to 192.168.2.120

我得到:

代码语言:javascript
复制
Error: Could not process rule: No such file or directory

根据这篇文章,这里

“注意:您可能必须创建/etc/ modules load.d/nftables.conf,并将您所需的所有nftable相关模块作为systemd服务正确工作的条目。您可以使用以下命令获得一个模块列表:$ lsmod \ grep '^nf‘’^nf‘否则,可能会出现可怕的错误:无法处理规则:没有这样的文件或目录错误。”

$ lsmod \ grep '^nf‘的输出是:

代码语言:javascript
复制
nft_chain_nat_ipv4     16384  2    
nf_conntrack_ipv4      16384  1    
nf_defrag_ipv4         16384  1 nf_conntrack_ipv4    
nf_nat_ipv4            16384  1 nft_chain_nat_ipv4    
nft_nat                16384  0    
nf_nat                 32768  2 nft_nat,nf_nat_ipv4    
nf_conntrack          131072  4    
nft_nat,nf_conntrack_ipv4,nf_nat_ipv4,nf_nat    
nf_tables_inet         16384  4    
nf_tables_ipv6         16384  1 nf_tables_inet    
nf_tables_ipv4         16384  2 nf_tables_inet    
nf_tables              90112  5     
nft_nat,nft_chain_nat_ipv4,nf_tables_ipv6,nf_tables_ipv4,nf_tables_i$    
nfnetlink              16384  1 nf_tables

我已经将它剪切并粘贴到/etc/modules-load.d/nftables.conf文件中,但没有成功。

有人知道我如何解决这个错误吗?

编辑:

我更改了添加链的顺序,首先添加了“预”链,然后添加了"post“链。现在,我遇到了一个不同的错误:

代码语言:javascript
复制
nft add rule nat postrouting oif eno1 snat to 192.168.2.120
:1:40-41: Error: syntax error, unexpected to
add rule nat postrouting oif eno1 snat to 192.168.2.120
                                       ^^

这个错误在我看来很奇怪,因为我得到了nftable手册页的语法:

使用NAT语句

为所有其他示例创建合适的表/链设置(

)

添加表nat添加链nat预路由{类型nat钩子预路由优先级0;}添加链nat postrouting { nat钩子加载优先级100;}

将通过eth0离开的所有数据包的源地址转换为1.2.3.4

add规则nat postrouting eth0 snat至1.2.3.4

EN

回答 2

Ask Ubuntu用户

发布于 2018-09-14 06:17:47

规则应为nft,将nat规则添加到192.168.2.120后“enp0s3的子网地址”

enp0s3的subnet地址示例可能类似于<#>10.4.0.1/16

票数 0
EN

Ask Ubuntu用户

发布于 2018-09-26 07:22:47

好吧我想明白了。

"postrouting“不是钩子,而是链的名称。由于我的链被命名为"post“,正确的语法是:

代码语言:javascript
复制
nft add rule nat post oif enp0s3 snat to 192.168.2.120
票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1073846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档