将所有流量(端口 3336 和其他一些端口除外)从 eth0 路由到特定 IP

将所有流量(端口 3336 和其他一些端口除外)从 eth0 路由到特定 IP

如何将所有传入流量从eth0接口路由到 IP 10.8.0.5(VPN 隧道)?

我需要将端口 3666 以外的传入流量转发到 ubuntu 22.04 机器上的特定 IP。

将来不应路由的端口列表将会变得越来越大。

我怎样才能以最好的方式做到这一点?

我已经在这里解释了我的情况 ->使用 nginx 或其他任何工具将所有请求从一台机器代理到另一台机器

答案1

如果我正确理解了您的描述和其他 (proxy-post),您将需要在除 3666/tcp 之外的所有端口上执行 DNAT (目标网络地址转换...也称为端口转发),因此接口 eth0 上的入站流量 (带有服务器本身的目标地址) 被端口转发到 10.8.0.5。这在 iptables nat 表中很容易实现:

如果你希望这在任何其他可能退出的 PREROUTING 规则之前发生,请以 root 身份:

iptables --table nat --insert PREROUTING --in-interface eth0 --jump DNAT --to-destination 10.8.0.5
iptables --table nat --insert PREROUTING --in-interface eth0 --protocol tcp --destination-port 3666 --jump ACCEPT

或者如果你想要在可能存在的 PREROUTING 规则之后执行此操作,请以 root 身份执行:

iptables --table nat --append PREROUTING --in-interface eth0 --protocol tcp --destination-port 3666 --jump ACCEPT
iptables --table nat --append PREROUTING --in-interface eth0 --jump DNAT --to-destination 10.8.0.5

(请注意--append,而不是--insert倒序

答案2

正如@frax 所说,在我的情况下我必须使用 DNAT 来路由流量。

经过数小时的搜索、谷歌搜索、与 ChatGPT 交流,我得到了所需的结果。

首先,我决定使用iptables控制台实用程序作为设置防火墙和 NAT 的最强大的工具。

要将端口添加3666到“排除列表”,防火墙必须接受来自该端口的传入流量:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3666 -j ACCEPT

笔记:我的网络接口是eth0,在其他情况下可能会有所不同。要检查它,请运行以下命令:

ip a

现在,要添加将所有剩余流量转发到特定 IP 的规则,我们可以在命令行中运行以下命令:

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -j DNAT --to-destination 10.8.0.5

笔记:我的目标 IP(10.8.0.5)属于之前建立的 VPN 连接。将其更改为您需要的任何 IP 地址

相关内容