mwjhw216 发表于 2018-8-27 09:43:24

shell 脚本监控公网出口IP-keep

  1、情景
  公司有2条二级运营商的链路,链路非常不稳定。更为严重的是我们申请固定IP,出口IP竟然总是变动。公司所有业务都需要通过外网,影响面非常大。有人提示可以对出口做监测,发现IP变动赶紧处理。我百度发现curl可以通过网站拿到出口地址后就直接写了,测试成功,就记录下来share一下。新办公区选址,运营商线路选择也是非常重要,不然是更多的坑在等着你。
  链路监测首先保证你做监测的服务器在你的那条出口链路上,这不用多说,如下简单示意图:

  先用ip138,就可以查看你本地址。

  2、
  开始监控邮件想用sendmail,但问题百出。于是用linux自带的postfix,把命令行放到脚本里即可。
  1>关闭selinux
  # cat /etc/selinux/config
  # This file controls the state of SELinux on the system.
  # SELINUX= can take one of these three values:
  #   enforcing - SELinux security policy is enforced.
  #   permissive - SELinux prints warnings instead of enforcing.
  #   disabled - No SELinux policy is loaded.
  SELINUX=disabled
  # SELINUXTYPE= can take one of these two values:
  #   targeted - Targeted processes are protected,
  #   mls - Multi Level Security protection.
  SELINUXTYPE=targeted
  2>关闭防火墙
  service iptables off
  chkconfig iptables off
  3>关闭sendmail
  service sendmail stop
  chkconfig sendmail off
  4>开启postfix
  service postfix restart
  chkconfig postfix on
  5>保证sendmail关闭,postfix开启
  # service postfix status
  master (pid53164) 正在运行...
  # service sendmail status
  sendmail 已停
  sm-client 已停
  现在用postfix相当于foxmail一样,都属于客户端,用客户端主动去连接服务器端,然后发送邮件。
  以QQ企业邮箱为例,首先在邮箱客户端设置如下,开启SMTP,有什么授权验证码的自行解决处理:

  postfix端配置如下:
  FROM 填自己的邮箱,SMTP,SMTP-AUTH-USER填自己邮箱,PASSWORD填密码,方式LOGIN。

  测试邮箱发送报警邮件,test后面加自己的邮箱测试,成功后写入下面脚本:

  做监控脚本:
  创建ip_changed用来存放IP改变的时间,创建iptest用来存放监控脚本是否按计划任务来执行。由于目前出口IP固定,可以用错误的IP来实现if的mail测试(我已经实验成功)。

  3、计划任务
  1分钟做一次IP的探测,保证能及时收到通知。
  crontab -e 编缉一下计划任务

  查看历史记录,如下数据说明脚本执行成功,如果有IP变动就可以及时收到通知。大家还可以加入出口连通性测试,但阀值设高点,不然敏感了容易误判。
  # tail iptest.txt


页: [1]
查看完整版本: shell 脚本监控公网出口IP-keep