前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RouterOS(ros)与云上VPC通过IPsec实现内网互通 - 涵盖GUI/CLI两种配置方式

RouterOS(ros)与云上VPC通过IPsec实现内网互通 - 涵盖GUI/CLI两种配置方式

原创
作者头像
RokasYang
修改2022-08-31 02:28:11
6.2K0
修改2022-08-31 02:28:11
举报
文章被收录于专栏:RokasYang

一、前言

ipsec诞生于20世纪90年代,迄今为止,在实现内网互通解决方案中ipsec都是较为常用的。不少网关设备都会考虑集成ipsec的能力,ros便是如此,它作为一个软路由系统,支持的ipsec算法较为完善,本文将以GUI、CLI两种方式讲解ros的ipsec配置,与云上VPC网络实现内网互通。

架构图
架构图

二、云上VPN网关与通道配置

1.创建VPN网关

在腾讯云VPN控制台新建VPN网关,并选择需要被打通的VPC,如果涉及到云上多个VPC与云下互通,则需要使用云联网类型网关。

2.创建VPN通道

如下所示创建SPD策略型通道,填写基本配置,本端vpc、vpn网关、对端网关IP:

通信模式可选目的路由和SPD策略类型,具体区别可参考官方文档说明

选择IKE版本、IKE算法、协商模式、远端标识:

需要注意的是,远端标识如果选FQDN,可以是域名也可以是任何标识。是域名的时候,它也只是一个标识,而且云下的本地标识要和云上配置的一样,不要误以为会跟随域名解析到的IP地址来和对端协商,对端网关在第一步基本配置的时候就已经固定了。

配置IPsec算法,生存周期等:

最后点击完成即可。

3.将VPC路由指向VPN网关

修改VPC路由表,将指向192.168.1.0/24的目的路由,下一跳到VPN网关。

到此云上的配置已经完成。

三、GUI模式配置Ros IPsec

1.配置IPsec Profile

winbox登陆到ros后,在IP -> IPsec里打开IPsec配置菜单:

配置IPsec profile:

DH group用来确定密钥交换过程中使用的密钥强度,强度越高开销也会越高,对应比特位参考如下表格:

DH group

Modulus

1

768 bits

2

1024 bits

5

1536 bits

14

2048 bits

15

3072 bits

16

4096 bits

19

ecp256 bits

20

ecp384 bits

21

ecp521 bits

2.配置对端Peer

如下图配置对端网关、协商模式、引用的ipsec profile等:

3.配置身份验证(Identities)

配置用于身份验证的字段,包括本端标识、远端标识、预共享密钥等:

4.配置IPsec Proposal

配置ipsec提议,指定认证算法、加密算法等:

5.配置感兴趣流(Policies)

如下配置策略,指定本端和对端通信的网段即协议,并采用隧道模式(Tunnel):

6.增加NAT ACCEPT规则

增加一条ACCEPT允许规则,并把优先级调整到第一位:

增加一条accept允许规则:

之后鼠标拖动让此规则置顶。

7.查看IPsec状态并测试连通性

上面配置完毕后,回过头来看IPsec的连接状态及系统日志:

可以看到和云上VPC网段已经建联成功。

连通性测试也正常:

到此,本端和云上VPC已实现内网互通。

四、CLI模式配置Ros IPsec

当某些特殊场景下,ros关闭了winbox登陆,只允许ssh的情况下,CLI并发挥用武之地,配置方法和GUI一致,只是用命令行替代图形界面操作,仅此而已,因此在非必要情况下,要写自动化脚本除外,都建议采用GUI配置,对新手较为友好。

1.配置IPsec Profile
代码语言:shell
复制
[admin@MikroTik] > /ip ipsec profile
[admin@MikroTik] /ip ipsec profile> add dh-group=modp768 hash-algorithm=md5 enc-algorithm=aes-128 name=to_tencent
[admin@MikroTik] /ip ipsec profile>
2.配置对端Peer
代码语言:shell
复制
[admin@MikroTik] /ip ipsec profile> /ip ipsec peer
[admin@MikroTik] /ip ipsec peer> add address=119.91.254.122 name=to_tencent profile=to_tencent exchange-mode=main
[admin@MikroTik] /ip ipsec peer>
3.配置身份验证(Identities)
代码语言:shell
复制
[admin@MikroTik] /ip ipsec profile> ..
[admin@MikroTik] /ip ipsec> identity add peer=to_tencent auth-method=pre-shared-key secret=123456
[admin@MikroTik] /ip ipsec> 
4.配置IPsec Proposal
代码语言:shell
复制
[admin@MikroTik] /ip ipsec> proposal add name=to_tencent auth-algorithms=md5 enc-algorithms=aes-128-cbc pfs-group=none 
[admin@MikroTik] /ip ipsec> 
5.配置感兴趣流(Policies)
代码语言:shell
复制
[admin@MikroTik] /ip ipsec> policy add peer=to_tencent tunnel=yes src-address=192.168.1.0/24 dst-address=10.100.1.0/24 protocol=all proposal=to_tencent
[admin@MikroTik] /ip ipsec> 
6.增加NAT ACCEPT规则

增加一条NAT规则,并把优先级调整到第一位:

代码语言:shell
复制
[admin@MikroTik] /ip firewall nat> /ip ipsec 
[admin@MikroTik] /ip ipsec> /ip firewall nat
[admin@MikroTik] /ip firewall nat> print all   #如果规则较多一页展示不完,按Enter键翻页,否则会影响下面的move操作找不到items
[admin@MikroTik] /ip firewall nat> move 20 0
[admin@MikroTik] /ip firewall nat> 
7.查看IPsec状态并测试连通性
代码语言:shell
复制
[admin@MikroTik] /ip firewall> /ip ipsec 
[admin@MikroTik] /ip ipsec> active-peers print where comment=to_tencent
Flags: R - responder, N - natt-peer 
 #    ID                   STATE              UPTIME          PH2-TOTAL REMOTE-ADDRESS                                                                                          DYNAMIC-ADDRESS                                                                
 0  N ;;; to_tencent
                           established        10m34s                  1 119.91.254.122                                                                                         
[admin@MikroTik] /ip ipsec> installed-sa print where (spi=0x2953159 or spi=0x8051BFF6) and (src-address="113.87.48.200:4500" or dst-address~"113.87.48.200")
Flags: H - hw-aead, A - AH, E - ESP 
 0  E spi=0x2953159 src-address=119.91.254.122:4500 dst-address=113.87.48.200:4500 state=mature auth-algorithm=md5 enc-algorithm=aes-cbc enc-key-size=128 auth-key="75dfa24b76a571dcc9eccbb5c48b5b5d" enc-key="df47098bf78a98a7be4e45b1f2a64908" 
      addtime=aug/28/2022 17:22:10 expires-in=19m17s add-lifetime=24m/30m current-bytes=3303 current-packets=19 replay=128 

 1  E spi=0x8051BFF6 src-address=113.87.48.200:4500 dst-address=119.91.254.122:4500 state=mature auth-algorithm=md5 enc-algorithm=aes-cbc enc-key-size=128 auth-key="20e63c4d95095d1f8d96c9e5b0f256cf" enc-key="8d33ed1bea1d2df33f8aa8a28fd073b4" 
      addtime=aug/28/2022 17:22:10 expires-in=19m17s add-lifetime=24m/30m current-bytes=4121 current-packets=25 replay=128 
[admin@MikroTik] /ip ipsec> /ip firewall connection print where tcp-state~"est" and (src-address="^192.*" or dst-address~"^10.100.1.*:[0-9]+")
Flags: E - expected, S - seen-reply, A - assured, C - confirmed, D - dying, F - fasttrack, s - srcnat, d - dstnat 
 #          PROTOCOL SRC-ADDRESS           DST-ADDRESS           TCP-STATE   TIMEOUT     ORIG-RATE REPL-RATE ORIG-PACKETS REPL-PACKETS      ORIG-BYTES      REPL-BYTES
 0  SAC     tcp      192.168.1.12:48964    10.100.1.6:18888      established 23h51m23s        0bps      0bps           23           18           4 009           3 263
[admin@MikroTik] /ip ipsec> 

可以看到建联是成功的,使用本端客户端测试:

到此,CLI模式配置也大功告成。

五、建联过程中涵盖的报错及其含义

报错

原因

invalid HASH_V1 payload length, decryption failed? could not decrypt payloads message parsing failed

预共享密钥不一致。

parsed IKE_SA_INIT response 0 N(NO_PROP) received NO_PROPOSAL_CHOSEN notify error received AUTHENTICATION_FAILED error notify

IKE协议版本不一致。

received AUTHENTICATION_FAILED error notifyed

协商模式不一致。

IKE IDir xxxx does not match to xxxx

本端标识和远端标识不一致。

IKE sending retransmit 1 of request message ID 0, seq 1

对端网关不响应。

received UNSUPPORTED_CRITICAL_PAYLOAD error notify

创建用户网关时,设置错误的公网IP。

received INVALID_ID_INFORMATION error notify

主模式下感兴趣流不一致。

received HASH payload does not match integrity check failed

野蛮模式下感兴趣流不一致。

parsed INFORMATIONAL_V1 request xxxx HASH N(NO_PROP) received NO_PROPOSAL_CHOSEN error notify

加密算法或认证算法不一致。

ESP:AES_CBC_256/HMAC_SHA1_96/MODP_1024/NO_EXT_SEQ no matching proposal found, sending NO_PROPOSAL_CHOSEN

DH分组不一致。

建联过程中遇到各类报错,首先可以对比两端参数配置、算法等是否完全保持一致,常见问题及报错含义部分,可参照腾讯云和阿里官方文档说明。

最后,附上PDF版本:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、云上VPN网关与通道配置
    • 1.创建VPN网关
      • 2.创建VPN通道
        • 3.将VPC路由指向VPN网关
        • 三、GUI模式配置Ros IPsec
          • 1.配置IPsec Profile
            • 2.配置对端Peer
              • 3.配置身份验证(Identities)
                • 4.配置IPsec Proposal
                  • 5.配置感兴趣流(Policies)
                    • 6.增加NAT ACCEPT规则
                      • 7.查看IPsec状态并测试连通性
                      • 四、CLI模式配置Ros IPsec
                        • 1.配置IPsec Profile
                          • 2.配置对端Peer
                            • 3.配置身份验证(Identities)
                              • 4.配置IPsec Proposal
                                • 5.配置感兴趣流(Policies)
                                  • 6.增加NAT ACCEPT规则
                                    • 7.查看IPsec状态并测试连通性
                                    • 五、建联过程中涵盖的报错及其含义
                                    相关产品与服务
                                    VPN 连接
                                    VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
                                    领券
                                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档