我有一种情况,我需要与仅允许来自一个特定IP的连接的API进行通信。
所以api.example.com接受来自白名单ip的端口443上的连接
我希望能够从任何地方连接到白名单-ip端口443,并将它转发到端口443上的api.example.com,并将响应发送回连接的机器。
我认为有一些类似于透明鱿鱼代理的方法,但我无法弄清楚。
我尝试使用下面的语句在这里的例子( http://www.tldp.org/HOWTO/TransparentProxy-6.html ),但没有成功。
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j DNAT --to api.example.com:443 iptables -t nat -A POSTROUTING -o eth1 -d api.example.com -j SNAT --to whitelisted-ip
任何帮助,将不胜感激。
更新:
我也尝试了下面,无济于事:
iptables -t nat -A PREROUTING -p tcp -d whitelisted-ip --dport 443 -j DNAT --to api.example.com:443 iptables -t nat -A POSTROUTING -p tcp -s api.example.com --sport 443 -j SNAT --to whitelisted-ip:443
谢谢
从我理解你想从任何地方到达服务器与一个IP(白名单,IP)这是不是您正在使用的客户端IP。 你不能这样做,因为你可能能够到达服务器的白名单IP,但服务器将无法响应原因,只是它不是你的IP地址在networking
在whitelisted-ip shell上,你可以尝试使用netcat来完成这些任务。
通过在whitelisted-ip shell上发出以下命令,您将绑定端口4443并将连接转发到api.example.com:443。
nc -l -p 4443 -c "nc api.example.com 443"
因此,您可以从任何其他端点连接到whitelisted-ip:4443。
提醒 :我不推荐这个绑定在没有任何保护的任何公共可访问的接口,你可以将端口绑定到loopback接口添加-s 127.0.0.1参数。
我刚刚意识到这是另一个问题的重复:
如何在同一个networking中从一个IP到另一个IP的端口转发?
我使它与以下工作:
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination api.example.com:443 iptables -t nat -A POSTROUTING -p tcp -d api.example.com --dport 443 -j SNAT --to-source whitelisted-ip
随着ip转发sysctl:
echo 1 > /proc/sys/net/ipv4/ip_forward