RouterOS在一端动态IP情况下配置GRE over IPSec VPN

PSec有两种模式:transport和tunnel。Transport模式双方仍然使用各自的公网IP互联,只不过传送的数据会被自动加密,必须两端的IP固定(否则服务器端也要动态更新客户端IP),tunnel模式则是建立一个类似VPN的点对点通道,需要给通道分配内网IP,在公网IP的要求上则相对比较宽松(只需要客户端更新自己的IP),缺点是浪费20MTU,传输效率稍低。本文讲解如何配置IPSec tunnel连接,以及在其上配置一个GRE隧道。

 

配置IPSec

这里我们统一把固定IP的一侧叫做服务端,动态IP的一侧叫做客户端。需要准备两组IP地址:

  • 服务端的公网IP
  • 客户端当前的公网IP
  • 服务端的隧道内网IP
  • 客户端的隧道内网IP(如果你有多个客户端,在服务器那侧可以填写一个IP段;而对于每台客户端需要填写准确IP)

注:请不要把这里所述隧道内网IP段加入OSPF等动态路由协议的网段。如果需要跑动态路由协议,可以在GRE隧道上另配一组IP。

在建立完IPSec隧道以后,两台设备就可以使用这里规定的内网IP互相通信(即建立VPN)了。

服务端

 

 

客户端

 

完成以上两部分设置以后,在任意一侧的IPSec Policies里应该可以看到一条连接,PH2 state为established,表示IPSec握手成功。

注:

  • 如果你使用图形界面方式来设置的话,在添加policy时protocol请填入数字47(GRE协议号);
  • 如果你在配置之前已有对该内网网段的NAT规则并且有设备尝试连接过该IP,NAT规则可能已被conntrack缓存;此时会出现IPSec Policy显示established但是GRE隧道不通的情况。清空conntrack缓存或者重启路由器即可解决。

IPSec调试

客户端动态更新IP

把以下脚本作为你PPPoE拨号端口对应PPP Profile的On Up触发脚本。

 

建立GRE隧道

刚才的IPSec隧道只是点对点连接。如果我们要把点对点以外的流量也路由到隧道那头,就需要GRE协议的帮助。

因为已经建立了IPSec隧道,GRE隧道的配置就变得很简单:

服务端

客户端

然后,你就可以把路由表里面的部分条目指向这个GRE隧道啦。

注:这边写死了MTU,你可以试试不填让路由器自动计算(提醒:RouterOS的MTU永远算不对)或者自己去算一个更优的值。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇