找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9634|回复: 6

[脚本] IPSEC脚本适合ADSL

[复制链接]
发表于 2012-3-20 16:32:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 fandl 于 2012-3-23 13:50 编辑

#适合一个固定IP(IPSEC设置端),一个动态IP。
:global ipsecadsl
#定义本地变量ipsecadsl
:set ipsecadsl [/ip ipsec policy get [/ip ipsec policy find comment="ipadsl" ] sa-dst-address ]
#在ipsec的policy里取得对方IP地址。给变量ipsecadsl
:if ([:resolve *.changeip.net] != $ipsecadsl ) do={
#解析对方ADSL的IP地址,如果不对
/ip ipsec policy set [/ip ipsec policy find comment="ipadsl"] sa-dst-address=[:resolve *.changeip.net]
#修改/ip ipsec policy 里注释为ipadsl的对方外网IP
/ip ipsec peer set [/ip ipsec peer find comment="peer1"]  address=[:resolve *.changeip.net]}
#修改/ip ipsec peer 里注释为peer1的对方外网IP

ros5.12测试了,可以修改。

新手学习脚本。有错误的请指出。

也可以
:global ipsecadsl
#定义本地变量ipsecadsl
:set ipsecadsl [/ip ipsec policy get 0 sa-dst-address ]
#在ipsec的policy里取得对方IP地址。给变量ipsecadsl
:if ([:resolve *.changeip.net] != $ipsecadsl ) do={
#解析对方ADSL的IP地址,如果不对
/ip ipsec policy set 0 sa-dst-address=[:resolve *.changeip.net]
#修改/ip ipsec policy 里第一条的对方外网IP
/ip ipsec peer set 0 address=[:resolve *.changeip.net]}
#修改/ip ipsec peer 里第一条的对方外网IP

注释:0为第一条
routeros
 楼主| 发表于 2012-3-20 18:31:53 | 显示全部楼层
本帖最后由 fandl 于 2012-3-21 21:47 编辑

双方ADSL情况下的IPSEC设置。
在 ROS-A机ROS设置:
/ip fir nat add chain=srcnat src-address=192.168.8.0/24 dst-address=192.168.9.0/24 action=accept
/ip fir nat add chain=srcnat out-interface=wan action=masquerade
#说明:根据自己的实际修改。192.168.9.0/24 ROS-B机的局域网IP地址段,192.168.8.0/24 ROS-A机的局域网IP地址段
#第二条有的话,可以不做。wan ROS-A机的外网端口。也可以修改为pppoe-out端口。
/ip ipsec polic add src-add=192.168.8.0/24 dst-add=192.168.9.0/24 protocol=all tunnel=y sa-src-add=1.1.1.1 sa-dst-add=2.2.2.2
#1.1.1.1为 ROS-A机外网IP。2.2.2.2为 ROS-B机外网IP
/ip ipsec peer add addres=2.2.2.2 secret=password nat-traversal=y generate-policy=y dpd-interval=0
#password为密码,dpd-interval为0(关闭)DPD用来检测对等体是否存活。ADSL用户建议关闭DPD。
添加自动修改IP脚本:
:local iasda
#定义本地变量iasda
:local iassa
#定义本地变量iassa
:set iasda [/ip ipsec policy get 0 sa-dst-addres]
#在ipsec的policy里取得ROS-B机外网IP地址,给变量iasda  (get 0:获取第一条)
:set iassa [/ip ipsec policy get 0 sa-src-addres]
#在ipsec的policy里取得ROS-A机外网IP地址,给变量iassa
:if ([:resolve B.changeip.net] != $iasda ) do={
#解析ROS-B ADSL的IP地址,如果不对
/ip ipsec policy set 0 sa-dst-address=[:resolve B.changeip.net]
#修改/ip ipsec policy 里第一条对方外网IP
/ip ipsec peer set 0 addres=[:resolve B.changeip.net]}
#修改/ip ipsec peer 里第一条对方外网IP
:if ([:resolve A.changeip.net] != $iassa ) do={
#解析自己ADSL的IP地址,如果不对
/ip ipsec policy set 0 sa-src-address=[:resolve A.changeip.net]}
#修改/ip ipsec policy 里第一条自己外网IP

注释:B.changeip.net,ROS-B机 ADSL的DDNS。
      A.changeip.net,ROS-A机 ADSL的DDNS。

添加DDNS脚本:
:local newaddres
#定义本地变量newaddres
:local dnsip
#定义本地变量dnsip
:set newaddres [/ip addres get [/ip addres find dynamic=yes interface=("pppoe-out1")] addres]
#设置变量newaddres为pppoe-out1的动态IP地址(带/24)。
:set dnsip [:pick $newaddres 0 [:find $newaddres "/"]]
#设置变量dnsip为去掉/24后的IP。
:if ([:resolve A.changeip.net] != $dnsip ) do={
#如果解析DDNS域名和变量dnsip不同,则执行
/tool dns-update name="A.changeip.net" addres=$dnsip key-name="*" key="*"
#更新DDNS IP。
}


在 ROS-B机ROS设置:
/ip fir nat add chain=srcnat src-address=192.168.9.0/24 dst-address=192.168.8.0/24 action=accept
/ip fir nat add chain=srcnat out-interface=wan action=masquerade
#说明:根据自己的实际修改。192.168.9.0/24 ROS-B机的局域网IP地址段,192.168.8.0/24 ROS-A机的局域网IP地址段
#第二条有的话,可以不做。wan ROS-B机的外网端口。也可以修改为pppoe-out端口。
/ip ipsec polic add src-add=192.168.9.0/24 dst-add=192.168.8.0/24 protocol=all tunnel=y sa-src-add=2.2.2.2 sa-dst-add=1.1.1.1
#1.1.1.1为 ROS-A机外网IP。2.2.2.2为 ROS-B机外网IP
/ip ipsec peer add addres=1.1.1.1 secret=password nat-traversal=y generate-policy=y dpd-interval=0
#password为密码,dpd-interval为0(关闭)DPD用来检测对等体是否存活。ADSL用户建议关闭DPD。
添加脚本:
:local iasda
#定义本地变量iasda
:local iassa
#定义本地变量iassa
:set iasda [/ip ipsec policy get 0 sa-dst-addres]
#在ipsec的policy里取得ROS-A机外网IP地址,给变量iasda  (get 0:获取第一条)
:set iassa [/ip ipsec policy get 0 sa-src-addres]
#在ipsec的policy里取得ROS-B机外网IP地址,给变量iassa
:if ([:resolve A.changeip.net] != $iasda ) do={
#解析ROS-A ADSL的IP地址,如果不对
/ip ipsec policy set 0 sa-dst-address=[:resolve A.changeip.net]
#修改/ip ipsec policy 里第一条对方外网IP
/ip ipsec peer set 0 addres=[:resolve A.changeip.net]}
#修改/ip ipsec peer 里第一条对方外网IP
:if ([:resolve B.changeip.net] != $iassa ) do={
#解析自己ADSL的IP地址,如果不对
/ip ipsec policy set 0 sa-src-address=[:resolve B.changeip.net]}
#修改/ip ipsec policy 里第一条自己外网IP

注释:B.changeip.net,ROS-B机 ADSL的DDNS。
      A.changeip.net,ROS-A机 ADSL的DDNS。

添加DDNS脚本:
:local newaddres
#定义本地变量newaddres
:local dnsip
#定义本地变量dnsip
:set newaddres [/ip addres get [/ip addres find dynamic=yes interface=("pppoe-out1")] addres]
#设置变量newaddres为pppoe-out1的动态IP地址(带/24)。
:set dnsip [:pick $newaddres 0 [:find $newaddres "/"]]
#设置变量dnsip为去掉/24后的IP。
:if ([:resolve B.changeip.net] != $dnsip ) do={
#如果解析DDNS域名和变量dnsip不同,则执行
/tool dns-update name="B.changeip.net" addres=$dnsip key-name="*" key="*"
#更新DDNS IP。
}

注释:pppoe-out1,根据自己实际修改!
在ROS5.12测试成功。5.14测试未成功(:resolve不能用了??)
新手,请多关照!
routeros
回复 1 0

使用道具 举报

 楼主| 发表于 2012-3-20 18:45:53 | 显示全部楼层
这也可以
/ip ipsec peer set address=192.169.3.103 numbers=0
routeros
回复

使用道具 举报

发表于 2012-3-21 02:37:20 | 显示全部楼层
ipsec 是不是两边都要有IP...有一边的IP没有得到就不行呀..
routeros
回复

使用道具 举报

 楼主| 发表于 2012-3-21 22:03:48 | 显示全部楼层
双ADSL的IPSEC,现在ok了。你们测试一下吧,看看能不能用在3.3!
routeros
回复

使用道具 举报

 楼主| 发表于 2012-3-23 13:49:01 | 显示全部楼层
3.3的话,把本地变量改为全局变量即可!
routeros
回复

使用道具 举报

 楼主| 发表于 2012-3-23 19:18:26 | 显示全部楼层
晕倒!

5.14也可以的。

自己的ROS机子有问题。

在虚拟机测试通过,自动修改IP
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-5-17 11:55 , Processed in 0.051897 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表