IP别名+TCP转发+端口映射实现跨网络访问[原创]
[
2007-8-21 18:46 | by 张宴 ]

[文章作者:张宴 本文版本:v1.0 最后修改:2007.08.21 转载请注明出处:http://blog.zyan.cc]
我这两天在工作中遇到了一些问题,在今天下午全部解决,于是决定写一篇文章,将实现方法记录下来:
一、背景环境:
1、都是Linux服务器;
2、“服务器A”与“服务器C”不在同一网络,两者之间是不通的;
3、“服务器A”、“服务器C”分别与“服务器B”相通。
二、要实现的需求:
1、让“服务器A”上的PHP程序能够连接“服务器C”上的MySQL数据库(IP:10.10.1.4,端口:3306);
2、不允许在“服务器A”上的PHP程序中更改MySQL地址(10.10.1.4)和MySQL端口(3306)。
三、实现原理:
理论上从“服务器A”是无法直接连接“服务器C”的IP地址(10.10.1.4)及其3306端口的【图中的虚线】,但通过“IP别名+TCP转发+端口映射”,我在“服务器A”上的PHP程序无须作任何修改的情况下实现了这项功能【图中的实线】。
访问路线:“服务器A”上的PHP程序─→虚拟10.10.1.4:3306─→192.168.1.3:8520─→真实10.10.1.4:3306

四、实现方法:
我这两天在工作中遇到了一些问题,在今天下午全部解决,于是决定写一篇文章,将实现方法记录下来:
一、背景环境:
1、都是Linux服务器;
2、“服务器A”与“服务器C”不在同一网络,两者之间是不通的;
3、“服务器A”、“服务器C”分别与“服务器B”相通。
二、要实现的需求:
1、让“服务器A”上的PHP程序能够连接“服务器C”上的MySQL数据库(IP:10.10.1.4,端口:3306);
2、不允许在“服务器A”上的PHP程序中更改MySQL地址(10.10.1.4)和MySQL端口(3306)。
三、实现原理:
理论上从“服务器A”是无法直接连接“服务器C”的IP地址(10.10.1.4)及其3306端口的【图中的虚线】,但通过“IP别名+TCP转发+端口映射”,我在“服务器A”上的PHP程序无须作任何修改的情况下实现了这项功能【图中的实线】。
访问路线:“服务器A”上的PHP程序─→虚拟10.10.1.4:3306─→192.168.1.3:8520─→真实10.10.1.4:3306

四、实现方法: