我正在Zorin主机上运行UbuntuServer18-04VM。
我希望将通过enp0s3离开的所有数据包的源地址翻译到带有nftable的192.168.1.120。这就是我所做的:
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我得到:
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‘的输出是:
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“链。现在,我遇到了一个不同的错误:
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;}
add规则nat postrouting eth0 snat至1.2.3.4
发布于 2018-09-14 06:17:47
规则应为nft,将nat规则添加到192.168.2.120后“enp0s3的子网地址”
enp0s3的subnet地址示例可能类似于<#>10.4.0.1/16
发布于 2018-09-26 07:22:47
好吧我想明白了。
"postrouting“不是钩子,而是链的名称。由于我的链被命名为"post“,正确的语法是:
nft add rule nat post oif enp0s3 snat to 192.168.2.120https://askubuntu.com/questions/1073846
复制相似问题