再会,
我有 2 个使用 libvirt 运行的虚拟机。
Machine 1 : PostgreSQL on port 5432
Machine 2 : Attempting to use psql to connect to a PostgreSQL server on the internet.
我转发了端口 5432,以便我可以从外部/作为服务访问机器 1 上的 PostgreSQL。
我遇到的问题是:机器 2 尝试连接到互联网上的 PostgreSQL 服务器,但是当数据包返回时,它们会被转发到机器 1,然后机器 1 再响应机器 2。因此,我从未与外部 PostgreSQL 建立正确的连接。
我该如何更改端口转发规则来适应这种情况?
(我曾经在 VirtualBox 上使用 nat-networking 来解决这个问题,但是 KVM 更酷吧 :-)
现行规则机器 1:
/sbin/iptables -I FORWARD -o virbr66 -d 192.168.223.115 -j ACCEPT
/sbin/iptables -t nat -I PREROUTING -p tcp --dport 5432 -j DNAT --to 192.168.223.115:5432
答案1
弄清楚了。
我所需要做的就是在规则中添加 -d,这样它就不会路由到任何目的地,但前提是目的地是本地主机,在本例中为 10.10.10.10。
/sbin/iptables -t nat -I PREROUTING -p tcp -d 10.10.10.10 --dport 5432 -j DNAT --to 192.168.223.115:5432