用route命令修改路由表来阻止本机访问特定IP的主机

场景:在本地有一台代理服务器,这台服务器会定时检查部署在远程的服务器的状态,如果检测到某台服务器是工作异常的,那么该台服务器就会被移除到生产服务器列表;如果过了一段时间,程序发现原来工作异常的服务器已经恢复正常,那么该服务器就会被重新添加到生产服务器列表中。那些被检测服务器的IP是以配置文件的方式记录。

测试的一个关键点:某台服务器Down了以后被代理服务器剔除出生产列表,如果这个台服务器恢复正常以后,代理服务器上的监控能否检测到该服务器已恢复正常,并且把该服务器添加到生产服务器列表中。

限制:1. 我没有远程服务器的管理员权限,甚至无法登陆到那些远程服务器;2. 没有处于测试状态的服务器,全部服务器都是线上生产服务器。

远程服务器不能工作的情况有很多,例如:

  • 网络连接有问题
  • 在远程服务器上运行的服务出错
  • 远程服务器上没有运行指定服务

就服务器工作异常的情况就有许多,由于不能登陆到那些服务器上,并且这些都是线上的生产服务器,任何对服务器的操作都是危险的,所以测试的时候就不能动那些服务器。思路就转到从本地的测试环境上来。只要我在本地测试环境中把远程服务器对应的IP地址封掉,就能达到目的,封IP可以选择很多方法:

  • Windows的IP安全策略
  • 安装第三方软件

我请教OPS后,就选用了一个很直接的方法:修改路由表,把需要封的IP,直接路由到一个不存在的地址那里去。

route print,打印出现在的路由表看看

然后就是往路由表添加一条记录:route add 10.44.17.205 mask 255.255.255.255 10.60.0.5。10.44.17.205是被封的IP地址;,因为我只要封1个IP,所以子网掩码就是255.255.255.255;10.60.0.5是一个不存在的地址。

路由表有了这条记录以后,本机向10.44.17.205发起的请求都会被“拒绝”啦,不过测试完了别忘记把这条记录删掉哦,命令是:route delete 10.44.17.206

不足:1. 这个方法只能模拟网络出现问题的情况,未能测试更多远程服务器异常的情况;2. 如果配置文件是一个VIP(Virtual IP)的话,没法模拟VIP背后某台服务器挂了的情况。

Leave a Reply

Your email address will not be published. Required fields are marked *