是否可以将所有呼叫重定向到 Internet 上的外部 IP 到本地主机(不使用主机)?
我有一个旧的应用程序,但我没有源代码,这个应用程序尝试使用 IP 连接到 postgres 服务器
我可以指示 ubuntu 将所有对此外部 IP 的调用重定向到 localhost 吗?
通过这种方式,我将能够在本地主机上运行 postgres 服务器并使用我的应用程序。
注意:应用程序使用 IP,而不是 dns。
iptables是要走的路。
sysctl -w net.ipv4.conf.eth0.route_localnet=1 # to enable redirecting to localhost
EXTERNAL_IP=8.8.8.8 #change this line to reflect external ipaddress
sudo iptables -t nat -A OUTPUT -d ${EXTERNAL_IP} -j DNAT --to-destination 127.0.0.1
-t nat
允许您将 127.0.0.1 称为有效目的地。
-A OUTPUT
, 附加到OUTPUT
iptables 链。这是一个内置链。存在其他内置链,例如INPUT
,适用于传入数据包和PREPROCESSING
,适用于任何其他内置链到达之前的所有传入数据包。您还可以制作自己的链并将它们附加到这些内置链之一,以便更好地管理您的设置。
-d ${EXTERNAL_IP}
过滤通过 OUTPUT 链的数据包的目标 IP 地址。
-j DNAT
将规则的目标设置为DNAT
,可以修改报文的目的地址。
--to-destination 127.0.0.1
是 DNAT 目标的参数,指定要更改这些匹配数据包的内容。
您还可以使用--dports ${ORIGINAL_PORT_NUMBER}
after来限制地址的重定向端口,-d ${EXTERNAL_IP}
并通过将端口附加到 127.0.0.1 来让它们重新路由到特定端口,如下所示127.0.0.1:${FINAL_PORT_NUMBER}
。
使用以下内容从 iptables 中删除。
# note: -A is replaced by -D
sudo iptables -t nat -D OUTPUT -d ${EXTERNAL_IP} -j DNAT --to-destination 127.0.0.1
并使用sudo iptables -t nat -L -n -v
where-t nat
来检查 iptables 列表,让您可以查看 iptables 映射,包括与 NAT 相关的映射。
如果您计划与应用程序通信并且应用程序检查源 IP 地址和端口,您可能还需要伪装或重定向来自 postgres 服务器的数据包以匹配外部 IP 地址和预期端口。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句