IPTABLES - 如何从单个 IP 转发到 URL

IPTABLES - 如何从单个 IP 转发到 URL

我需要使用 iptables 从单个 IP 转发到一个 URL(因为目标服务器使用一系列 IP 在它们之间进行交换)。

可以这样做吗?

如果是这样我正在考虑使用这个:

iptables -t nat -A PREROUTING -p tcp --dport 10022 -j DNAT --to sftp.cl.cloud.mypega.com:22
iptables -A FORWARD -d sftp.cl.cloud.mypega.com -p tcp --dport 22 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth69 -j MASQUERADE

它是否正确?

答案1

不,它不起作用。虽然您可以向 iptables 提供主机名,但它们不会动态解析。根据手册页:

在规则提交给内核之前,主机名只会被解析一次。

因此,规则会将包转发到提交规则后解析的 IP 地址。

答案2

这不适用于裸机iptables。您需要设置一个代理(即,,haproxy),以对所需目的地进行反向代理,并将 DNAT 改为到该代理。apache httpdnginx

答案3

真正的问题是我如何允许 sftp 流量离开我的主机?

iptables -A OUTPUT -o eth0 -p tcp --dport 22 -j ACCEPT

是的,这与 SSH 相同。如果您想将其限制为仅网络中的某些主机,请进行相应调整。我从这里获取了它: IPTables:允许传出 SSH。还建议了两个状态规则,以允许在建立连接后继续通信:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

目的地的 DMZ、FQDN、IP 地址方案和 IP 轮换无关紧要。只要您提供的 FQDN 有效且已注册,DNS 就会允许 TCP/IP 将数据包发送到需要到达的地方。

如果您提到的 DMZ 服务器是您的 DMZ,并且该服务器充当您的防火墙,则您需要接受来自源服务器的数据包并将其转发到托管面向公众的 IP 的接口。您还需要打开入站流量、端口 22、内部服务器的目标地址。接受并转发到内部网络。

请注意,您不需要知道所有这些操作的目标 FQDN。如果他们有一个不错的静态 IP 地址,您可以锁定规则以仅允许 sftp(和 SSH)往返于这些站点。

相关内容