当前位置: 首页 > 知识库问答 >
问题:

nftables 如何将 eth0 接口的流量通过 192.168.100.1:1080 转发?

葛勇锐
2023-09-14

我在 192.168.100.1:1080 上有一个代理,可以转发流量,我知道使用:

iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 192.168.100.1:1080iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

可以将 eth0 的流量转发到 192.168.100.1:1080,但是我使用 nftables 却无法实现,测试了 iptables-translate 等工具也不行。

我期望的结果是,将 eth0 的所有流量通过 192.168.100.1:1080 代理转发。

请问我如何通过 nftables 实现上述需求?

注:192.168.100.1 不会走 eth0,假设要是走 eth0,需要排除 192.168.100.1 的转发。

共有2个答案

鱼锦
2023-09-14
nft add table inet natnft add chain inet nat prerouting { type nat hook prerouting priority 0 \; }nft add chain inet nat postrouting { type nat hook postrouting priority 100 \; }nft add set inet nat exclude_ips { type ipv4_addr; flags interval; }nft add element inet nat exclude_ips { 192.168.100.1 }nft add rule inet nat prerouting iif "eth0" tcp daddr != @exclude_ips dnat 192.168.100.1:1080nft add rule inet nat postrouting oif "eth0" masquerade
鲁羽
2023-09-14

您可以使用以下 nftables 规则来实现将 eth0 接口的流量通过 192.168.100.1:1080 转发:

nft -f /dev/stdin <<EOFtable inet nat {    rule output薮终端{ source link == "eth0" } {        return dest sport == "192.168.100.1:1080"    }    rule output薮终端{ source link == "eth0" } {        return dest sport != "192.168.100.1:1080"    }}

上述规则中,我们定义了两个规则,分别用于处理源端口为 192.168.100.1:1080 的流量和源端口不为 192.168.100.1:1080 的流量。在处理源端口为 192.168.100.1:1080 的流量时,我们将其重定向到目标地址为 192.168.100.1:1080 的网络接口。在处理源端口不为 192.168.100.1:1080 的流量时,我们将其发送到原始接口。

 类似资料:
  • 我有一个方法,可以尝试使用WebClient返回Mono 它可以返回我期望的结果。然后我尝试创建另一个方法来支持列表作为参数 但这一次返回一个奇怪的结果。 我是反应式编程新手,将流和单声道结合起来,然后转换为流量的正确方法是什么?

  • 我用头盔部署了格拉法纳,现在它正在吊舱中运行。我可以访问它,如果我代理端口3000到我的笔记本电脑。我试图指向一个域,以便我可以从外部访问该pod。我在route53中有一个域,可以连接到负载平衡器(应用程序负载平衡器、网络负载平衡器、经典负载平衡器)。该负载平衡器可以将流量从端口80转发到端口80,再转发到一组节点(让我们稍后保留端口443)。我真的很难设置这个。我肯定少了些什么,但我不知道是什

  • 在我的设置中,我希望通过SSE通道(服务器发送的事件)转发某些状态更改。状态更改是通过调用RESTendpoint来启动的。因此,我需要将传入的状态更改转发到SSE流。 在Quarkus中实现这一点的最佳/最简单方法是什么。 我能想到的一个解决方案是使用EventBus(https://quarkus.io/guides/reactive-messaging)。SSEendpoint将订阅状态更改

  • 问题内容: 我正在尝试将所有流量从端口6999转发到端口7000(我知道我可以使用iptables,但想法是使用Node.js进行某些数据包检查)。 这是我有沙发的代码: 它似乎似乎不起作用。当我在端口7000上执行tcpdump时,什么都没有显示。有人有什么建议吗? 提前谢谢了, 问题答案: 这是我的努力: 支持从命令行提供“从”和“到”,并支持远程计算机。 (另存为proxy.js) 从loc

  • 我正在进行spring webflux文件上传。我想从控制器上传文件到amazon S3 bucket上。在控制器中,我收到了以下物体 从文件部分。content()我可以 我的问题是如何转换这个通量

  • 问题内容: 您可以使用以下名称获取张量 但是,您可以获得诸如之类的操作,还是队列中的操作? 在我的第一个模型中,我返回了函数所需的所有张量和运算。但是张量的列表很难看。在以后的模型中,我将所有张量和操作数丢入字典中,以方便访问。这次,我以为我只是在需要时按名称查找张量,但我不知道该如何使用ops。 还是有更好的方法来做到这一点?我发现到处都需要各种张量和操作。训练,推理代码,测试用例,因此,需要一