服务器迁移后如何处理硬编码旧IP的遗留客户端?
服务器迁移后如何处理硬编码旧IP的遗留客户端?
这种硬编码IP的遗留应用真的是赶工期时的“拦路虎”,既然没法改代码,又不想碰服务器端的网络/防火墙,那咱们就从客户端本地入手,给你几个亲测有效的临时方案:
方案一:用Windows自带的netsh portproxy做端口转发(无需额外工具)
这是最推荐的方案,完全依赖系统自带工具就能搞定,步骤如下:
- 给本地网卡添加旧IP的别名:
portproxy需要监听旧IP的端口,所以得先让本地机器“接管”这个IP- 打开「控制面板」→「网络和共享中心」→「更改适配器设置」,找到当前在用的网卡,右键选「属性」
- 找到「Internet协议版本4 (TCP/IPv4)」,双击打开,点击「高级」
- 在「IP地址」栏点击「添加」,输入旧服务器的IP(
<OLD_SERVER_IP>)和对应的子网掩码(比如旧服务器用的是255.255.255.0就填这个),确定保存
- 配置端口转发规则:
- 以管理员身份打开命令提示符(CMD),运行以下命令(把端口换成你的MySQL实际端口,一般是3306):
netsh interface portproxy add v4tov4 listenaddress=<OLD_SERVER_IP> listenport=3306 connectaddress=<NEW_SERVER_IP> connectport=3306
- 以管理员身份打开命令提示符(CMD),运行以下命令(把端口换成你的MySQL实际端口,一般是3306):
- 验证生效:运行
telnet <OLD_SERVER_IP> 3306,如果能连通,说明转发成功了(实际连的是新服务器) - 迁移完成后清理:删掉转发规则和网卡别名即可:
然后回到网卡属性的高级设置,删掉添加的旧IP别名netsh interface portproxy delete v4tov4 listenaddress=<OLD_SERVER_IP> listenport=3306
方案二:用本地代理工具实现IP映射(适合更灵活的场景)
如果portproxy因为某些限制没法用(比如旧IP在其他子网没法添加别名),可以用像Proxifier这类工具(有免费试用版,临时用足够),专门针对特定程序做IP映射:
- 安装Proxifier后,打开软件,点击顶部菜单「Profile」→「Address Mapping」
- 点击「Add」,在「Map From」里填旧服务器IP
<OLD_SERVER_IP>,「Map To」里填新服务器IP<NEW_SERVER_IP>,端口保持MySQL的3306,确定保存 - (可选)如果不想影响其他程序,可以设置只针对遗留应用生效:点击「Profile」→「Proxification Rules」,添加一条规则,「Target Hosts」填
<OLD_SERVER_IP>,「Application」选择遗留应用的exe文件,「Action」选「Map」即可 - 启动应用,所有发往旧IP的请求都会被Proxifier默默转到新服务器
注意事项
- 不管用哪个方案,都要确保客户端机器能正常访问新服务器的MySQL端口(3306),提前测试连通性
- 用
portproxy时,要确保Windows的「IP Helper」服务是开启的(可以在服务管理器里检查),不然转发规则不会生效 - 这些都是临时方案,等后续有时间了还是建议修改应用代码,去掉硬编码的IP,避免下次迁移再踩坑
备注:内容来源于stack exchange,提问作者Marc Fischer
相关产品推荐
相关产品推荐

