自动更新DDNS并更新IPSEC
IPSEC更新域名脚本
:local localip [/ip address get [find interface=pppoe-out1] address];
:set localip [:pick $localip 0 [:find $localip "/"]]
:local remoteip [:resolve XXX.3322.org]
:local peerA [/ip ipsec peer find comment=site-to-site]
:local policyA [/ip ipsec policy find comment=site-to-site]
:if ([/ip ipsec peer get $peerA address]!="$remoteip/32" || [/ip ipsec peer get $peerA local-address]!=$localip || [/ip ipsec policy get $policyA sa-dst-address]!=$remoteip || [/ip ipsec policy get $policyA sa-src-address]!=$localip) \
do={/ip ipsec peer set $peerA address="$remoteip/32" local-address=$localip
/ip ipsec policy set $policyA sa-dst-address=$remoteip sa-src-address=$localip}
DDNS更新脚本
:local ednsuser "root"
:local ednspass "GzysCwLp"
:local ednshost "XXX.3322.org"
:local ednsinterface "pppoe-out1"
:local members "http://members.3322.org/dyndns/update?system=dyndns"
:local status
:local status [/interface get [/interface find name=$ednsinterface] running]
:if ($status!=false) do={
:local ednslastip [:resolve $ednshost]
:if ([ :typeof $ednslastip ] = nil ) do={ :local ednslastip "0" }
:local ednsiph [ /ip address get [/ip address find interface=$ednsinterface ] address ]
:local ednsip [:pick $ednsiph 0 [:find $ednsiph "/"]]
:local ednsstr "&hostname=$ednshost&myip=$ednsip"
:if ($ednslastip != $ednsip) do={
/tool fetch url=($members . $ednsstr) mode=http user=$ednsuser password=$ednspass dst-path=$ednshost
:delay 2
:local result [/file get $ednshost contents]
:log info ($ednshost . " " .$result)
/file remove $ednshost ;
}
}
留言评论
暂无留言