shell 腳本監控公網出口IP
http://keep11.blog.51cto.com/1443840/1862279
1、情景
公司有2條二級運營商的鏈路,鏈路非常不穩定。更爲嚴重的是我們申請固定IP,出口IP竟然總是變動。公司所有業務都需要通過外網,影響面非常大。有人提示可以對出口做監測,發現IP變動趕緊處理。我百度發現curl可以通過網站拿到出口地址後就直接寫了,測試成功,就記錄下來share一下。新辦公區選址,運營商線路選擇也是非常重要,不然是更多的坑在等着你。
鏈路監測首先保證你做監測的服務器在你的那條出口鏈路上,這不用多說,如下簡單示意圖:
先用ip138,就可以查看你本地址。
2、
開始監控郵件想用sendmail,但問題百出。於是用linux自帶的postfix,把命令行放到腳本里即可。
1>關閉selinux
[root@bogon ~]# 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開啓
[root@bogon ~]# service postfix status
master (pid 53164) 正在運行...
[root@bogon ~]# 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變動就可以及時收到通知。大家還可以加入出口連通性測試,但閥值設高點,不然敏感了容易誤判。
[root@bogon home]# tail iptest.txt