我正在尝试帮助同事连接到我的 MySQL 服务器。但是情况有点特殊,原因如下(我们称他为 A,称我为 B):
甲有一台电脑,上面有一台虚拟机,与他实际运行的电脑在同一个网络中。然而,甲也与乙在同一个网络中(不同的网络)。
我希望 A 虚拟机上的网站能够连接到 B 电脑上的 MySQL 服务器。为此,我认为端口转发是合适的:从 到ip-of-person-A:3306
。ip-of-person-B:3306
这样,网站将连接到它所在的电脑(而不是虚拟机)的 IP,然后转发到 A 的 MySQL。
我看过几个端口转发的例子,但我觉得这不是我需要的,从我所看到的来看,情况恰恰相反。那么这样的事情可以实现吗?
答案1
人员 A 可以在其机器上使用 iptables 进行端口转发,它将允许与其机器 10.0.0.1 建立的连接转发到人员 B 的机器 172.16.0.1
echo "1" > /proc/sys/net/ipv4/ip_forward
personB=172.16.0.1
personA=10.0.0.1
personA_VM=10.0.0.2
personA_2=172.16.0.2
mysql=3306 # port
### Make all packets from VM to mysql go to Person B
iptables -t nat -I PREROUTING -p tcp --dport $mysql \
-s $personA_VM/32 -d $personA -j DNAT --to $personB:$mysql
### Make all packets local to PersonBs network.
iptables -t nat -I POSTROUTING -p tcp --dport $mysql \
-s $personA_VM/32 -d $personB/32 -j MASQUERADE
但正如我在评论中所说,更好的解决方案是将虚拟机添加到两个网络