背景:
某个基础鉴权服务架构调整,有几台接口机下线回收。业务调用方需要修改ip:port。
问题是有个erlang的老业务,调用方居然都是hardcode方式写死的。而且目前能维护的只有1个开发,更加悲剧的是这个项目的开发测试环境机器被破坏了。总而言之,替换ip重新编译的方式,短时间内没法弄。
如果不尽快处理,将会影响业务的登陆。这种紧急关头,当然必须得我上前线!
处理过程:
大概情况是这样:
业务机器:
10.213.117.43
待下架鉴权接口机:
172.23.62.23
新鉴权接口机:
10.231.48.133
一开始想到的是iptables的nat表, 用POSTROURING转发, 但
POSTROURING只能和SNAT一起用,修改源字段。我的需求是需要修改目的ip与端口,必须使用DNAT ,翻看iptables手册,发现DNAT除了PREROUTING,还能和OUTPUT一起用。应该能满足这个需求。
找了2台机器,跑了个python的udp_echo_server测试,可以成功转发。最后,在现网业务机器执行如下命令,搞掂!
-
iptables -t nat -A OUTPUT -p udp -d 172.23.62.23 --dport 8081 -j DNAT --to 10.231.48.133:8081
感慨:
看起来很基础的东西关键时候都很有用,例如:iptables
阅读(7560) | 评论(0) | 转发(0) |