• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    如何使用openwrt搭建ipsec隧道

    发布者: 福建二哥 | 发布时间: 2025-8-16 11:11| 查看数: 70| 评论数: 0|帖子模式

    背景:最近同事遇到了个ipsec问题,做的ipsec特性,ftp下载ipv6性能只有100kb, 正面定位该问题也蛮久了,项目没有用openwrt, 不过用了开源组件strongswan, 加密算法这些也是内核自带的,想着开源的不太可能有问题,想着我帮他调试一下开源的,他继续正面定位。顺便学习一下怎么玩一下ipsec。ipsec和strongswanWan网上资料很多,这里我们不再做过多的介绍,我们主要先介绍一下针对同事的该问题,环境怎么搭建。
    环境搭建:我们知道ipsec 主要是实现不同局域网网段之间的加密传输,实际对于现网用户的话需要服务器和客户端之间有公网ip,我们这里没有用公网ip也没有什么影响,环境top图如下:

    ipsec编译:一开始想着能不能直接用opkg在线安装,发现安装之后会遇到各种各样的问题,解决一个又接着下一个,这条路暂时行不通。我们直接去编译一下带ipsec的openwrt的固件,遇到问题也好解决一点,这里我选择的lean大佬的openwrt源码,在国内我们玩openwrt的玩家基本都在用lean的代码,因为lean的代码适配了国内基本上常见的路由器固件,我们只需要make menuconfig开一下对应产品的宏就可以编译,非常简单上手。
    我这里编译的路由器型号是gl.mt3000,lean帮忙我们适配了其它ipsec依赖的strongswan对应的宏,不需要我们去开,截图如下

    我们可以看到lean的源码web界面适配了ipsec  ikev1版本,不支持ikev2

    我们可以需要自己去改一下ipsec的配置文件ipsec.conf就可以让客户端和服务端连接,配置文件内容如下:
    1. config setup
    2. conn %default
    3.         ikelifetime=28800
    4.         keylife=20m
    5.         rekeymargin=3m
    6.         keyingtries=1
    7.         keyexchange=ikev2
    8. conn site_to_site
    9.         left=192.168.250.40 #这里填当前路由器wan ip
    10.         leftsubnet=192.168.1.0/24 #这里填当前路由器网段
    11.         leftid=192.168.250.40 #这里填当前路由器wan ip
    12.         leftauth=secret
    13.         rightauth=secret
    14.         right=192.168.250.94 #这里填对方路由器wan ip
    15.         rightsubnet=192.168.10.0/24 #这里填对方路由器网段
    16.         rightid=192.168.250.94 #这里填对方路由器wan ip
    17.         ike=aes128-sha1-modp2048!
    18.         esp=aes128-sha1!
    19.         auto=start
    复制代码
    ipsec.secrets配置psk,服务器和客户端psk要保存一致
    1. root@OpenWrt:/etc# cat  ipsec.secrets
    2. # /etc/ipsec.secrets - strongSwan IPsec secrets file
    3. : PSK "1"
    4. mw : XAUTH "1"
    复制代码
    另外一台路由器我们也需要这样配置,就是上面ipsec.conf里面填写ip地址的地方需要和上面反过来就可以了。
    我们都编辑好之后,如果之前ipsec进程已经运行了,我们可以用执行命令ipsec restarts,如果之前没有运行,我们需要执行ipsec start, 然后我们可以执行ipsec statusall查看当前的转态,我们可以看到有个connecting,说明正在连接中,如果up前面不是0,那么说明我们ipsec 已经连接上了。

    我们配置好ipsec.conf后,发现死活连接不上,up前面一直是0,然后做了一个尝试,把配置文件里面的ipsec.conf里面的ikv2改成了ikv1发现连接上了,之前一直怀疑加密算法有问题,看来加密算法是没有问题,此刻阻塞了。刚好手机拍下了日志,把日志往群里发了一下,细心的群友看出了问题点。

    openssl制作证书的时候需要,这里不知道为啥ikv1可以ikv2不行,可以找一下提示的这个函数openssl_plugin_create在哪里定义,安装试一下

    然后我搜了一下这个函数是在哪个地方定义的,只需要我们去开一下对应的宏就行

    然后重新编译了一下版本,发现连接上去了。
    我们简单测试一下:发现只能ping通网关,2台路由器下面的lan侧设备不能互相ping通,之前怀疑策略路由有问题,命令如下

    可是不管怎么去改策略路由还是不行,还在页面上去配置了静态路由器,之前在bibi看到过有说需要配置一下静态路由,只能病急乱投医,做了很多尝试还是不行。又继续查询资料,说的是关闭防火墙,因为之前我已经做过了一个尝试,就是只关闭一台路由器的防火墙,没有关闭另外一台路由器的,这次我尝试2台路由器都关闭了,竟然都ping通了。
    关闭防火墙命令如下:
    1. etc/init.d/firewall stop
    复制代码


    ipsec报文是加密的,我们抓包看一下,是否是这样的,用tcpdump抓了一下,然后报文没有加密,很疑惑,转念一想,不应该呀。可能是抓包点位的问题,我们tcpdump是在协议栈入口抓的,可能还没有经过ipsec加密的地方,然后我又抓了一下wan口的报文,这次对得上了。
    我们用iperf3打流测试一下ipv4看一下性能怎么样,性能不是很高,只有20bps,不过规格说的是10bps, 也满足了要求。接下来我们看一下ipv6性能怎么样,直接ftp下载一下文件,速率和ipv4差不多,也是20bps左右。ipv6的配置文件如下:主要和ipv4的区别就是填写ipv4地址的地方都写ipv6的就行。
    到此这篇关于如何使用openwrt搭建ipsec隧道的文章就介绍到这了,更多相关openwrt搭建ipsec隧道内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    来源:互联网
    免责声明:如果侵犯了您的权益,请联系站长(1277306191@qq.com),我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

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

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

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