ipsec 订阅
[1]  (英语:Internet Protocol Security,缩写为IPsec),是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。 展开全文
[1]  (英语:Internet Protocol Security,缩写为IPsec),是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。
信息
缩    写
IPsec
本    质
开放标准的框架结构
作    用
保障网络安全
中文名
互联网安全协议
学    科
通信工程
外文名
Internet Protocol Security
ipsec简介
互联网安全协议(英语:Internet Protocol Security,缩写为IPsec),是一个协议包,通过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。 [1]  IPsec主要由以下协议组成:一、认证头(AH),为IP数据报提供无连接数据完整性、消息认证以及防重放攻击保护;二、封装安全载荷(ESP),提供机密性、数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性;三、安全关联(SA),提供算法和数据包,提供AH、ESP操作所需的参数。
收起全文
精华内容
下载资源
问答
  • IPSEC

    2021-02-07 14:52:07
    一丶IPSEC ipsec概述(RF 2401) (1) vpn的概念 网络层的安全保障机制(3层),可实现访问控制,机密性,完整性校验,数据源验证,拒绝重播报文等安全功能。 可以引入多种验证算法。加密算法和秘钥管理 iP Sec ...

    IPSEC

    1. ipsec概述(RF 2401)

    (1) vp#的概念

    • 网络层的安全保障机制(3层),可实现访问控制,机密性,完整性校验,数据源验证,拒绝重播报文等安全功能。
    • 可以引入多种验证算法。加密算法和秘钥管理
    • iP Sec vp#是利用IPSEC隧道实现的L3 vpn
    • IPsec具有配置复杂,消耗运算资源较多,增加延迟,不支持组播的缺点。
    1. IPSEC的体系结构
      (1) 安全协议:负责保护数据;AH/ESP
      (2) 工作模式:传输模式:实现端到端保护(终端到终端)---------不会新加包头。(用的很少)
      隧道模式:实现站点到站点的保护(路由器或者防火墙之间建立隧道)
      隧道模式报文发送流程:
      在这里插入图片描述
      A发送报文给B,RTA收到数据后会给这个数据报文新加一个包头,把原始的报文信息加密起来。此IP包头为两个隧道之间的端点。公网上看到的是路由器A发送给路由器B的,但是报文是由终端A发给终端B的。
      (3)协商方式
      秘钥协商:手工配置密钥
      通过IKE协商密钥(用的最多)

    3. Ah/ESP(两种安全协议)AH认证头—RFC 2402

    1>AH介绍

    • 提供数据的完整性校验和源验证
    • 不能提供数据加密功能
    • 可提供有限的抗重播能力(当使用AH认证方式时,例:防止某些攻击者在公网上抓取到认证报文,用此报文进行认证)

    2>AH的报头(AH用IP协议号51标识)
    在这里插入图片描述

    • sequence number field(序列号)—提供抗重播能力

    3>传输模式AH封装。
    在这里插入图片描述
    拿着原始报文经过哈希算法得到哈希的结果,将结果放入报文的AH头里面。然后接受方经过同样的算法,可以得到相同的结果。可以验证报文有没有被篡改。
    密钥(Hmac):密钥化的哈希;提供数据源验证,(用来验证是否是我想要的这个用户发我的数据报文)

    4>隧道模式的AH封装
    在这里插入图片描述
    新的IP包头:配置IPsec那两个路由器的IP地址。
    整个报文加上密钥做哈希运算得到一个哈希的值,放到AH头中。接入方拿收到的报文做运算,将AH头部中的哈希值进行对比。

    (2) ESP (Encapsulating Security Payload) --封装安全载荷

    1> ESP介绍

    • RFC2406
    • 可提供数据的机密性保证
    • 可提供数据的完整性校验和源验证
    • 可提供一定的抗重播能
      2> ESP头尾格式
      在这里插入图片描述
    • 此报文也存在序列号—提供抗重播能力

    3> ESP的封装模式
    (1) 传输模式
    在这里插入图片描述

    • 将除了原始IP包头的的声誉部分与加密秘钥做加密运算得到密文
    • 拿着密文和验证密钥做哈希运算的到哈希值,放到ESP AUth中

    (2) 隧道模式
    在这里插入图片描述

    • 运算与传输模式相同,不过会加上新的IP头部

    4. IKE(RFC 2409)

    (1) IKE与ipsec的关系

    • IKE为IPsec提供自动协商交换秘钥丶建立SA服务
    • IPsec安全协议提供实际的安全服务。
      在这里插入图片描述
      (2) IKE协商的两个阶段
      1> 阶段1
    • 在网络上建立一个IKE SA,为阶段2协商提供保护
    • 主模式(Main Mode)和野蛮模式(Aggressive Mode)
      2> 阶段2
    • 在阶段1建立的IKE SA的保护下完成IPSec SA的协商
    • 快速模式(Quick Mode)

    (3) IKE的主模式
    在这里插入图片描述
    1> 策略协商的内容

    • 加密算法(DES/3DES/AES)
    • 散列算法(MD5/SHA)
    • 验证方法(预共享秘钥/RSA/DSA)
    • DH交换组(1.MODP 768位 2. MODP 1024位 3.EC2N 155字节 4. EC2N 185字节 5.MODP 1680字节)
    • IKE SA生存时间(Life Time)

    2> DH算法
    在这里插入图片描述
    (4) IKE的野蛮模式

    在这里插入图片描述
    区别:

    • 主模式安全性较好,野蛮模式验证通过明文发放

    (5) 总结

    • IPsec可提供IP通信的机密性,完整性和数据验证服务
    • AH可提供数据源验证和完整性保证,ESP还可提供机密性保证
    • IPsec通过SA为数据提供安全服务
    • IKE为IPSEc提供了安全的密钥交换手段
    1. IPSEC的配置
      在这里插入图片描述
      (1) 确定配置之前网络是通的
    crypto ike  key 123456 any//配置身份协商的密钥123456,与任何人都可以建立协商
    crypto  tunnel 1//建立隧道1(在隧道1模式下)
    	local  interface g0 //本地用来协商的接口地址
    	peer  address 23.1.1.2,如果为点到多点的模式,则配置为 peer  address  any//建立邻居对端的地址
    	set  sec-level basic/high/medium//使用设备预定义好的算法(有三种)
    	set  authentication  preshare//认账采用预共享秘钥的方式来认证。
    show  crypto sec-level//显示当前、安全等级信息。
    
    

    在这里插入图片描述
    字段 描述

    crypto security level 安全等级
    ike proposal 安全等级对应的IKE提议
    ipsec proposal 安全等级对应的IPsec提议
    	crypto policy p1//设置感兴趣流(什么IP可以进行协商)
    	flow  192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0 ip tunnel 1//如果为点到多点,则多点的网段都需要宣告进去
    
    //配置安全策略p1,保护主机192.168.1.0/24到主机192.168.2.0/24的IP通信,关联隧道1。
    配置规格:前面为本机网段,后面为目的网段
    
    **********************************************************
    正常情况下隧道不会主动建立的,需要建立隧道的话命令为:
    	crypto  tunnel 1
    		set  auto-up
    

    排错命令:
    Debug crypto ike normal

    Clear cr sa//使重新协商

    Show crypto ike sa//查看隧道建立的情况
    在这里插入图片描述
    字段 描述

    sa-id SA标识
    negotiation-state 协商状态
    peer-identity 对端IKE ID
    localaddr 本端地址
    peeraddr 对端地址

    状态显示为R的话为发起方,结束状态为R3
    状态显示为I的话为接收方,结束状态为I4
    分别对应了协商的状态,发起方为三个,接收方为4个

    检测方式,带源ping,不然不通

    展开全文
  • IPSec

    2020-03-04 15:28:46
    IPsec学习笔记 目录 IPsec学习笔记 虚拟专用网络简介 IPSec概述 通信安全要求 SA SA的建立方式 安全协议 AH协议 ESP协议 IPSec数据传输模式 传输模式 隧道模式 ...

    IPsec学习笔记

    目录

    IPsec学习笔记

    虚拟专用网络简介

    IPSec概述

    通信安全要求

    SA

    SA的建立方式

    安全协议

    AH协议

    ESP协议

    IPSec数据传输模式

    传输模式

    隧道模式

    IPSec通信过程


     


    虚拟专用网络简介

    IPSec概述

    IPSec 可以理解成一个框架,通过这个框架来实现建立虚拟专用网

    通信安全要求

    SA

    SA的建立方式

    安全协议

    AH协议

    ESP协议

    IPSec数据传输模式

    传输模式

    • 传输模式中的AH:在IP头部之后插入AH头,对整个IP数据包进行完整性校验。
    • 传输模式中的ESP:在IP头部之后插入ESP头,在数据字段后插入尾部以及认证字段。对高层数据和ESP尾部进行加密, 对IP数据包中的ESP报文头,高层数据和ESP尾部进行完整性校验。
    • 传输模式中的AH+ESP:在IP头部之后插入AH和ESP头,在数据字段后插入尾部以及认证字段。

    隧道模式

    •  隧道模式中的AH:对整个原始IP报文提供完整性检查和认证,认证功能优于ESP。
    • 隧道模式中的ESP:对整个原始IP报文和ESP尾部进行加密,对ESP报文头、原始IP报文和ESP尾部进行完整性校验。
    • 隧道模式中的AH+ESP:对整个原始IP报文和ESP尾部进行加密,AH、ESP分别会对不同部分进行完整性校验。

    IPSec通信过程

    建立IPSec首要任务是保证其安全性,安全性的具体要求在前文可找到。根据上图我们可以知道IPsec的通信过程如下:先进行SA协商,然后再用安全协议对报文进行加密。保证安全的第一步是IPsec SA。

    IPsec SA生成的原材料是传输数据的一些参数+网络管理员的key,SA就像一个盒子,这个盒子里面包含了各种算法,IKE根据这些算法生成IPsec SA。IPsec SA里面包含各种流量保护策略,只有两端完全匹配才能进行通信。

    SA协商成功了便是用安全协议对所要传输的数据进行加密,然后传输数据。

    展开全文
  • IPsec

    2019-10-14 13:58:45
    GRE没有去往对端公网IP路由 keepalive只支持GRE,不支持...ipsec只支持ipv4单播 VPN:企业级别,不需要花钱 MPLS VPN :运营商级别,需要花钱 telnet抓包可以看到访问者对自己做的所有操作 对称:私钥算法,加密和解...
    1. GRE没有去往对端公网IP路由
    2. keepalive只支持GRE,不支持MGRE,默认10s发一个
    3. logging monitor
    4. terminal monitor(永不保存)
    5. logging console随手打上日志
    6. ipsec只支持ipv4单播

    VPN:企业级别,不需要花钱
    MPLS VPN :运营商级别,需要花钱

    telnet抓包可以看到访问者对自己做的所有操作
    对称:私钥算法,加密和解密都是使用这个密钥,一旦丢了,数据不安全,3次DES算法,加密大量数据很快
    非对称:公钥算法,生成公钥和私钥,公钥加密,私钥课解开,私钥加密,只能成对的公钥解开rsa(缺点慢)
    作用:给数字证书加密

    对称加密算法:
    des:40bit
    3des:168bit
    aes:128bit

    非对称算法:
    迪福赫尔曼算法:生成密钥(group1(768bit),group2(1024bit),group5)
    RSA:不可逆
    hash:不能反运算,防止:将data+对称密钥用hash加密,对端也将收到data+对称密钥hash比较(md5,SHA)

    1. A使用对称加密生产key

    2. Akey+data算法生成数据

    3. B使用key解密

    4. (问题)A怎么将key传递B?

    5. B用非对称加密生成publickey和privatekey

    6. B将publickey传给A(黑客也会得到publickey)

    7. A将publickey加密key后发给B(黑客回截到加密后数据,但是没有publickey无法解开)

    8. B用privatekey解密得到key

    9. 此时用key加密数据data发送就算被截获也不会被解开

    10. (问题)黑客虽不能解开但是可以串改数据

    • 哈希校验和防串改
    • 如果B发送数据给A借钱,过后不认账?

    1. B将data+对称密钥哈希后通过privatekey加密,生成signature
    2. 将data+signature通过key加密送给A
    3. A通过key解密,再通过publickey解密得到哈希后data
    4. 再将data哈希得到的值和data对比
      在这里插入图片描述

    • 如果黑客模拟B生成publickey和privatekey给A发数据?

    1. 找到公安局用B的publickey用公安局privatekey生成数字证书
    2. B发送数据时带着signature和证书
    3. A拿着证书去公安局请求用公安局publickey解开得到B的publickey
    4. 看从公安局拿到的publickey能否解开signature
    5. 若能解开证明是B没错,再看哈希后的数据对比是否被篡改
    6. RA作为代理帮助收集用户公钥和所有信息发给CA,CA生成证书
      在这里插入图片描述
      在这里插入图片描述

    https数字签名+公安局证书,防止第三者将公钥,私钥串改
    • 哈希算法,校验和
    • 数字签名,确认是bob发的
    • 数字证书,到公安局确认bob身份
    • key加密
    • 随机数短信

    • 防止重放攻击:随机数避免,即使密码一样,但是随机数还是原来的(可能被截获)也不会认证通过

    1. 客户端向server发送request请求认证
    2. server回复随机数
    3. 客户端用认证密码+key+随机数生成的内容发给server
    4. (黑客)截获3生成的内容,发给server
    5. server用key解开得到认证密码和随机数,发现随机数还是上次的,验证不通过

    VPN:隧道+安全,GRE隧道是明文传输的

    IPSec:框架,里面的组件可以实现安全,
    • 安全联盟SA=规则(2条):IKESA和ipsec SA,需要手动输入
    • SA生存周期(类似更改密码保证安全)
    默认在到期之前隐含建一条,以在续期后平滑过度
    生存周期长,越不安全,节省资源
    生存时间越短,越安全,消耗资源
    • 转换集:算法保证安全
    • 感兴趣流:定义哪些数据需要被保护
    • 安全策略:真正应用的安全策略

    组件(协议):2个SA
    1. IKE:保证密钥交换安全,混合协议(UDT,source-port:500,destination-port:500)
    v1:理论复杂,配置简单
    v2:理论简单,配置复杂
    2. ESP:保证数据安全,一种封装方式(50)3des
    优点:加密,公安局,哈希
    3. AH:认证头,一种封装方式,不能保证安全(IP之上51)
    缺点:未对数据进行加密

    IKE有3种认证:pre-share,RSA,

    两种工作mode
    1. 传输:无法形成vpn,封装ipsec头部(50,51可选)没有隧道(没有类似GRE头封装)
    2. 隧道:自带隧道,IPsec保证安全=vpn,不能启协议
    在这里插入图片描述

    在这里插入图片描述

    认证:签名
    密钥算法:赫尔曼
    hash算法
    对称算法

    1. phase1:上述4个,密钥认证,主模式:l2l,积极模式:reemote-access
    会将所有policy发送过来,选择一个进行认证
    2. 发送密钥材料:DH算法生成公共值+pre-key,相互发随机数,生成密钥
    3. pre身份认证(key老地方)
    
    • 触发协商phase1:只有感兴趣流经过时acl(ping)
    • ping会丢一个包,不是因为ARP而是因为需要协商
    
    clear crypto isakmp(1)清理第一阶段SA,不会重新协商,第2条SA仍在,不会丢包
    

    (第一阶段配置错误修改过来后,仍不通,因为没有触发协商,只有clear session后,才会重新触发协商 )
    • clear crypto session(local 12.1.1.1 remote 23.1.1.3)清理第2阶段SA,会丢包因为感兴趣流触发协商

    1. 开启isakmp:crypto isakmp enable
    2. 开启策略(越小越优先):crypto isakmp policy 1(可配置多条,优先级最高的生效,当地一条协商失败,会继续找后续SA)
    3. 封装esp算法:encryption 3des
    4. 哈希算法:hash md5
    5. 签名:authentication pre-share(以上仅保证数据安全)(pre-share两个人约定老地方见,结果一个人没出现,证明此人不是A)
    6. key安全算法:group 2
    7. SA寿命:life-time 86400(默认一天)
    8. 配置pre-share密钥:crypto isakmp key cisco address 目的公网IP(key是pre-share约定的老地方,目的IP代表只有该IP地址给我提供的key值和我的key值一样我才认)不支持vrf(phase3)
    

    到此第一条SA相关配置完毕,保证密钥安全(isakmp=ike)
    第2条SA保证数据安全(转换集)

    1. ACL把要保护的数据抓取,也叫感兴趣流 允许两个私网IP抓取(不允许用any)
    ip access-list extended ccie 
    permit ip 源私网IP 目的私网IP
    2. 转换集:crypto ipsec transform-set ccie2 esp-3des esp-md5-hmac
    3. 修改模式:mode transport(可以不写,默认就是隧道模式)
    4. 静态安全策略:crypto map gou 1 ipsec-isakmp(此处的号跟policy的1没有任何关系)
    5. 指定策略要保护的流量:match address ccie
    6. 设置转换集:set transform-set ccie2
    7. 设置邻居:set peer 23.1.1.3(公网IP)
    

    调用策略
    (接口下)encrypto map gou(策略名两端可以不一样)
    在这里插入图片描述

    #####动态VPN######################自在hub上配置一次即可,spoke上配值多次,建一个分布就需要加配置

    动态l2l:hub有固定IP
    (hub不需要感兴趣流)

    • 定义标识符:
    r1(config)#crypto keyring ccna
    r1(conf-keyring)#pre-shared-key address 0.0.0.0 0.0.0.0 key 123

    • 引入第一阶段配置文件:
    

    r1(config)#crypto isakmp profile ccnp
    r1(conf-isa-prof)#keyring ccna
    r1(conf-isa-prof)#match identity address 0.0.0.0(谁都可以跟我协商)

    • 动态map:
    

    r1(config)#crypto dynamic-map cisco 1
    r1(config-crypto-map)#set isakmp-profile ccnp
    r1(config-crypto-map)#set transform-set ccie
    • 关联
    r1(config)#crypto map l2l 1 ipsec-isakmp dynamic cisco(静态不能直接调用第一阶段profile)

    (接口下)crypto map l2l

    ###########此时在接口下配置######################

    第2阶段配置文件:
    crypto ipsec profile ccie
    set isakmp-profile ccnp(引入第一阶段配置文件)
    set transform ccie

    tunnel口下调用:
    (接口)tunnel protection ipsec profile l2l

    • 此时从总部无法ping其他分部,因为没有感兴趣流,只有分布主动发起感兴趣流激活才能协商
    • 如果分部有多个网段仍需要写多条感兴趣流,因为tunnel vpn只支持单播,不能运行IGP协议,所以需要借助GRE
    

    DMVPN :分部之间可以自己建隧道

    EIGRP:单播,组播
    BMA:有几个点只发一份,NBMA:有几个点发几份,不具备广播功能
    MGRE:类似NBMA,总比和分布在一个网段
    hub端 p2mp默认hello是30s,维护数据库,记录spoke的公网IP地址
    NHRP:一分部向总部发送,解析到另一分部公网IP地址,实现两个分部建隧道,当有流量触发
    每个spoke在启动时,将自己的IP地址注册在hub

    hub
    int tunnel 1
    ip add 1.1.1.1 255.255.255.0
    mode gre multiple

    ip nhrp network-id 1(进程号)
    ip nhrp map multicast dynamic(动态获取spoke端IP地址)

    EIGRP
    两个分布直接建立隧道:no ip next-hop-self eigrp 100

    下一跳问题
    在hub端:ip nhrp redirect
    在spoke端:ip nhrp shortcut

    OSPF
    hub默认是点到点,需要改成10s建邻居
    ip ospf network p-2-mp
    ip hello-interval 10

    (查看nhrp表)show ip nhrp br
    • ospf无法建立邻居,因为时nbma网络,不是广播,无法发hello包
    • EIGRP有水平分割问题:no ip split-horizon eigrp 100

    spoke
    tunnel source e0/0
    ip address 1.1.1.2 255.255.255.0
    mode gre multipoint

    ip nhrp network-id 1
    ip nhrp map 1.1.1.1 15.1.1.1(手动写一条映射告诉hub)
    ip nhrp nhs 1.1.1.1(去服务器注册)
    ip nhrp map multicast 15.1.1.1(承载组播报文)

    //tunnel key 12345
    // ip nhrp authentication cisco

    hub:
    在这里插入图片描述

    spoke:
    在这里插入图片描述

    展开全文
  • ipsec

    2018-11-13 15:06:00
    ipsec 早在2005年,为解决国内办公室访问香港邮件服务器时连接被随机中断而产生大量重复邮件的问题,我们在香港IDC机房的NetScreen防火墙上部署了IPsec VPN服务器,国内员工电脑上安装VPN客户端软件...

    ipsec

    早在2005年,为解决国内办公室访问香港邮件服务器时连接被随机中断而产生大量重复邮件的问题,我们在香港IDC机房的NetScreen防火墙上部署了IPsec VPN服务器,国内员工电脑上安装VPN客户端软件,在发送邮件前先VPN拨号,虽然麻烦,但成功解决了问题。

    到了2007年,公司在Nasdaq上市,按照SOX法案要求,必须加强全球各办公室、机房的IT架构安全,我们将网络设备全部升级为Cisco的产品。当然,我最感兴趣的是Cisco的防火墙产品,它有一套完整的IPsec VPN解决方案。当时我们采用的是ASA5520,构建site to site VPN,将各个办公室和机房的内网打通,并统一部署微软的AD森林,IT基础服务非常稳定,各方面都很满意。而最受员工好评的就是,在办公室里上网可以无阻碍地访问国外网站,并无需事前做任何动作,只因为我们将流量做了分流,访问国内的走国内线路,访问国外的走VPN加密通道从香港出去。同样的,对于移动办公人员,给他们安装Cisco System VPN Client来拨号访问香港的VPN服务器。

    期间,还有在美国的朋友要看中国网上直播的奥运节目,在香港的朋友要看内地网上点播的连续剧,而有些节目不对境外IP开放。办法当然是在国内架设远程访问VPN服务器。

    这就是一个标准的围城格局。

    皆大欢喜的背后是高昂的成本,众所周知,思科产品相当的贵。

    那有没有廉价的解决方案呢?当然有,还有不少呢,这得感谢软件开源项目,技术先进,功能强大,还不用花钱。

    今年春节前,公司为接收美国节点的数据做大数据分析,购置了IBM旗下Softlayer香港节点的云服务器,这给我测试Linux下的开源VPN软件提供了合适的资源条件,于是我开始寻找合适的开源VPN软件。

    先看看常用VPN协议有哪些?

    参考:维基百科 - 虚拟专用网

    常用的虚拟专用网协议有:

    • L2F
    • L2TP
    • PPTP
    • IPsec (如Cisco IPSec VPN)
    • SSL VPN
    • AnyConnect(Cisco SSL VPN)
    • OpenVPN
    • SoftEther


    各协议的优缺点就不说了,有兴趣可以自己去查,这里我只关注IPsec。

    基于IPsec的VPN通道其实包含以下两个部分:

    • IKE协议(互联网密钥交换协议): 两个系统端使用IKE协议来互相验证,并协商建立IPsec通道所需的特定加密参数和两端特定的网段。
    • IPsec协议(IP安全协议):使用特定加密参数对特定数据进行加密传输,通常由操作系统内核实现,目前基本上所有主流操作系统都支持IPsec协议。


    用白话说就是,IKE负责连接双方的身份验证,双方协商得出的密码和使用的加密算法都告知给操作系统,操作系统对两边网段之间的流量数据进行加密传输。

    既然数据加密传输的活都给操作系统来干了,操作系统我们也没什么好选的,能选的就只有实现IKE协议的软件了。

    IKE的版本发展:
    1988年11月,互联网工程任务组在一系列的RFC文件中,定义了这个协议,其中包括了 RFC 2407,RFC 2408 以及 RFC 2409。
    2005年以后,IKE版本升级到了IKEv2版本,RFC文件有所更新,其中包括 RFC 4306, RFC 4718,RFC 5996 以及 RFC 7296。

    IKEv2的主要改进:

    • 更精简的RFC标准化文档
    • 对移动设备更好的支持
    • 全面支持NAT穿越和SCTP协议
    • 简化的信息交换机制
    • 增强的可靠性和状态管理
    • 更好的防范DoS攻击机制



    参考 - 维基百科 - IKEv2的实现

    如下为当前可用的IKEv2开源实现:

    • OpenIKEv2,
    • strongSwan,
    • Openswan,
    • IKEv2,
    • Racoon and Racoon2 from the KAME project,
    • iked from the OpenBSD project.,
    • Libreswan,
    • Rockhopper VPN Software


    名单的有些软件已经很久不更新了。

    而稍微留心一下这个名单,会发现有个字眼很显眼,很明显就是天鹅swan家族:strongSwan, Openswan, Libreswan。

    它们其实有一个共同的鼻祖:FreeS/WAN开源项目,历史还真是悠久,为了厘清脉络,我特别做了一些翻译和编辑工作。

    参考 - Libreswan官网 - 历史

    FreeS/WAN时代(1996 - 2004)
    1996年John Gilmore和Hugh Daniel创建FreeS/WAN开源项目,致力于开发用于互联网加密的IPsec和DNS标准,愿景是以每年5%的速度推进流量加密,直到整个互联网全部使用加密通讯。FreeS/WAN项目通常有5个付费人员来开发代码,所有费用由Gilmore支付。

    那个时候,加密并不普遍,用于实施加密的免费软件也非常少见。OpenSSL的前身SSLeay也刚刚被开发出来用于web服务器和客户端之间的加密通讯。虽然美国政府与民间组织之间有关隐私的争论已经如火如荼,大多数人并没有深入思考美国政府对网络通讯的侦听和监视。Freeswan软件的目标就是在美国政府以国家安全为由出台法律禁止公众加密之前,广泛普及随机加密技术(Opportunistic Encryption,OE)使加密无处不在。为防止美国政府根据国家安全法案对freeswan的所有者提起控诉,Gilmore要求美国公民包括他本人都不得为freeswan编写代码。这个限制造成了很多不良后果,因为它阻止了freeswan代码被合并进Linux内核,因此使得部署freeswan变得更加困难。

    同时,各公司对于在互联网上建立安全连接和VPN的强烈需求,极大地推动了可用的加密标准的开发,为满足不同公司的各种加密需求,各种实现方式的IPsec标准也应运而生。

    现在大家所知的IPsec标准套件,是来自于国际互联网工程任务组(IETF)的标准,包含了许多标准文档来实现用于验证的互联网密钥交换(IKE)协议和用于传输加密数据的IPsec协议。大量的加密和验证算法被支持和标准化。然而,并没有采用随机加密(OE)机制。同时,因为一些技术障碍造成的部署困难,使得DNS的安全版本也一度被延迟了好多年。2010年7月15日DNS根区(root zone)最终获准使用DNSSEC,这已经是延迟十年之后的事情了。这期间,freeswan的DNSSEC并未被采用,
    因为IETF声明只有DNS自己可以使用DNSSEC KEY记录(现在改名为DNSKEY记录),这意味着freeswan不得不重回过去糟糕的文本记录格式。在2005年IPsec也引入了它自己的DNS记录类型IPSECKEY,但是需要耗费很多年的努力来部署新DNS软件来实际支持这个新记录类型。另外,最终用户也不希望访问他们的反向DNS区来发布OE IPsec需要的公钥。

    freeswan也始终没有被Linux内核采用过,一部分原因是Gilmore强制非美国代码的规则,更大的原因在于与负责网络和加密的Linux内核开发人员疏于协作。
    尽管freeswan团队多年一直参与Linux研讨会和内核顶层决策会议,Linux开发团队依然沿着他们自己的开发路径,最终只是推出了一些并没有获得广泛支持的加密子系统。结果导致了两个团队花费多年时间来努力维护两个互相竞争的内核IPsec协议栈,KLIPS和NETKEY,直到今日也没有人将这两个协议栈的优点统一整合起来。

    一般来说,公众似乎并不太关心政府的侦听,哪怕在Nikcy Hager揭示以美国为中心的情报收集分析网络梯队系统(Echelon)的时候,也没有引起公众对部署加密通讯的足够重视。从90年代到21世纪初,并没有太多的人认为不加密的互联网是个真实的问题,直到2013年6月斯诺登(Edward Snowden)在香港将美国国家安全局关于棱镜计划监听项目的秘密文档披露给英国《卫报》和美国《华盛顿邮报》的时候,这已经是Gilmore放弃用freeswan对整个互联网加密的企图整整十年之后了。

    从FreeS/WAN到Openswan(2004 - 2012)
    虽然很多商业公司已经在使用freeswan作为它们密钥协作性测试的工具之一,Gilmore和他的开发团队之间的矛盾却与日俱增。Andreas Steffen(strongSwan项目的维护者)编写了大量补丁使freeswan能够支持X.509数字证书标准,但Gilmore拒绝将其并入freeswan。Mathieu Lafon编写的另一个商用VPN的基本功能NAT-Traversal支持代码,也被Gilmore拒绝。freeswan的志愿者Ken Bantoft,维护了一个包含上述补丁的freeswan的版本,并将之命名为超级freeswan。然而,Gilmore看到这个名字并不高兴,因为他不想那些杂七杂八的互联网技术和freeswan这个名字有任何瓜葛。

    2003年7月,Gilmore和另一位积极的freeswan志愿者Paul Wouters在柏林附近召开的Chaos Communication Camp会议上碰面。他们想出了一个办法,在没有Gilmore提供赞助的条件下使用freeswan继续对IPsec进行开发。Wouters和其他志愿者将freeswan代码复制出一个分支,同时Gilmore将商业VPN开发相关的大块代码剔除后构建新的freeswan发布版本。Wouters的这个软件分支,被起名为openswan,源于freebsd/openbsd的命名历史,这个名字就这么叫开了。

    Gilmore在发布了2个移除了VPN代码的freeswan版本后,就在2004年3月1日,著名的开源网络安全项目 FreeS/WAN 宣布停止开发,其原因主要是开发者的意图和用户的需求不吻合。对于网络安全系统,用户更多考虑的是系统功能的完整、强大,而不是它可预知的先进性,因此,FreeS/WAN 新版本中主打推出的 Opportunistic Encryption (OE) - 随机加密没有吸引到足够数量的用户测试。鉴于此,投资者停止了对 FreeS/WAN 项目的资助,FreeS/WAN从此淡出江湖。

    总的来说,Openswan项目将注意力从随机加密(OE)技术转向VPN技术。4个Openswan志愿者创立了Xelerance公司来提供对Openswan的商业支持,盈利被用来对Openswan继续开发。由于不再有Gilmore强加于freeswan的限制这样的障碍,脱胎于freeswan的Openswan代码,被广泛采用并被整合进主要的Linux发行版中,例如RHEL,Debian和SuSe Linux。很多企业级特性被加入,像Xauth和SAref,在企业环境中Openswan如鱼得水。但这种状况本身造成了Xelerance公司收入锐减,因为企业用户大多使用RHEL,很自然付费给Red Hat来提供商业支持,而IPsec和IKE运行得足够好以致于用户基本上没有对新特性的开发要求,或者他们宁愿等待别人来付费或开发新功能。因此,虽然Xelerance公司此时仍然对Openswan项目提供赞助,但公司的运营方向已经发生了改变。一个又一个原始创始者离开了公司,Wouters是在2011年12月最后一个离开的,他的离开引发了Openswan项目团队和Xelerance公司之间关于Openswan商标所有权的争执,引发了法律诉讼。而当免费软件开发者被公司提起诉讼时,比较经济和简单的办法就是走人并给软件改名,Libreswan就这样诞生了。

    参考 - strongSwan官方文档 - The strongSwan Open Source VPN Solution



    可以看到strongSwan其实是和Openswan并列的两个开源项目,strongSwan更早就对IKEv2提供了完整支持,就选它了。

    安装strongSwan

    先升级操作系统CentOS至最新版本,我这里比较喜欢用CentOS 6.x的版本。

    1. yum -y update
    复制代码

    升级完后需要reboot重启服务器。

    查看CentOS版本号

    1. uname -a
    2. Linux slhk 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
    复制代码


    查看SELinux状态

    1. [root@slhk ~]# sestatus 
    2. SELinux status: disabled
    复制代码

    如果SELinux没有被禁用,需禁用之,并重启服务器

    查看当前网卡配置

    1. [root@slhk ~]# ifconfig
    2. eth0      Link encap:Ethernet  HWaddr 06:3C:1D:E3:9C:46  
    3.           inet addr:10.110.71.123  Bcast:10.110.71.127  Mask:255.255.255.192
    4.           inet6 addr: fe80::43c:1dff:fee3:9c46/64 Scope:Link
    5.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    6.           RX packets:88318851 errors:0 dropped:0 overruns:0 frame:0
    7.           TX packets:25328422 errors:0 dropped:0 overruns:0 carrier:0
    8.           collisions:0 txqueuelen:1000 
    9.           RX bytes:110102171108 (102.5 GiB)  TX bytes:2571529525 (2.3 GiB)
    10.           Interrupt:246 
    11. eth1      Link encap:Ethernet  HWaddr 06:F8:19:A1:0C:27  
    12.           inet addr:119.81.236.70  Bcast:119.81.236.71  Mask:255.255.255.248
    13.           inet6 addr: fe80::4f8:19ff:fea1:c27/64 Scope:Link
    14.           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
    15.           RX packets:15095342 errors:0 dropped:0 overruns:0 frame:0
    16.           TX packets:17748377 errors:0 dropped:0 overruns:0 carrier:0
    17.           collisions:0 txqueuelen:1000 
    18.           RX bytes:1133594452 (1.0 GiB)  TX bytes:42002925032 (39.1 GiB)
    19.           Interrupt:245 
    20. lo        Link encap:Local Loopback  
    21.           inet addr:127.0.0.1  Mask:255.0.0.0
    22.           inet6 addr: ::1/128 Scope:Host
    23.           UP LOOPBACK RUNNING  MTU:65536  Metric:1
    24.           RX packets:217503 errors:0 dropped:0 overruns:0 frame:0
    25.           TX packets:217503 errors:0 dropped:0 overruns:0 carrier:0
    26.           collisions:0 txqueuelen:0 
    27.           RX bytes:29181128 (27.8 MiB)  TX bytes:29181128 (27.8 MiB)
    复制代码

    可以看到,服务器公网IP是119.81.236.70,对应网卡是eth1。

    安装strongSwan的运行依赖环境

    1. yum -y install gpm-devel pam-devel openssl-devel make gcc
    复制代码


    现在正式开始安装strongSwan

    安装方法一:使用yum安装
    strongSwan的发行版已包含在EPEL源中, 但源中的包版本5.3.2比较低,目前官网上5.4.0已经发布了。

    • 安装EPEL源:
      1. yum -y install epel-release
      复制代码
    • 安装strongswan:
      1. yum -y install strongswan
      复制代码
      注意:使用yum安装,命令ipsec被替代为strongswan。可设置别名来解决这个问题:
      1. alias ipsec='strongswan'
      复制代码


    安装方法二:下载源程序编译安装
    为使用最新版本,还是得自己下载源码编译安装,我测试时的版本是5.3.5。

    • 下载源代码压缩包
      1. cd /root
      2. wget http://download.strongswan.org/strongswan.tar.gz
      复制代码
    • 解压
      1. tar zxvf strongswan.tar.gz
      复制代码
    • 编译安装
      程序安装路径:/usr
      strongSwan配置文件路径:/etc/strongswan
      1. cd strongswan-5.3.5
      2. ./configure --prefix=/usr --sysconfdir=/etc/strongswan --enable-eap-identity --enable-eap-md5 \
      3.             --enable-eap-mschapv2 --enable-eap-tls --enable-eap-ttls --enable-eap-peap \
      4.             --enable-eap-tnc --enable-eap-dynamic --enable-eap-radius --enable-xauth-eap \
      5.             --enable-xauth-pam --enable-dhcp --enable-openssl --enable-addrblock \
      6.             --enable-unity --enable-certexpire --enable-radattr --enable-tools \
      7.             --enable-openssl --disable-gmp
      8. make
      9. make install
      复制代码


    配置私钥和证书

    • 生成CA私钥,并使用此私钥自签名生成CA证书
      1. cd /etc/strongswan
      2. ipsec pki --gen --outform pem > ca.pem
      3. ipsec pki --self --in ca.pem --dn "C=CN, O=VPN, CN=strongSwan CA" --ca --lifetime 3652 \
      4.              --outform pem > ca.cert.pem
      复制代码

      这里C表示国家名,O表示组织名,CN为通用名。默认证书有效期为3年,这里配置3652天,即10年。
    • 生成服务器私钥,然后从私钥中导出公钥,用CA证书签发服务器证书
      ipsec pki命令可用来生成RSA密钥对,包含了私钥和公钥,公钥是在网络上传输的,而私钥是藏好用来和接收到的公钥配对的(因此私钥里也有整个公钥,用来配对)。
      1. ipsec pki --gen --outform pem > server.pem
      2. ipsec pki --pub --in server.pem | ipsec pki --issue --lifetime 3652 --cacert ca.cert.pem \
      3.              --cakey ca.pem --dn "C=CN, O=VPN, CN=119.81.236.70" --san="119.81.236.70" \
      4.              --flag serverAuth --flag ikeIntermediate --outform pem > server.cert.pem
      复制代码

      • iOS 客户端要求 CN 也就是通用名必须是你的服务器的 URL 或 IP 地址。
      • 除了上述要求,Windows 7 还要求必须显式说明这个服务器证书的用途(用于与服务器进行认证)--flag serverAuth。
      • 非 iOS 的 Mac OS X 要求了“IP 安全网络密钥互换居间(IP Security IKE Intermediate)”这种增强型密钥用法(EKU)--flag ikdeIntermediate。
      • Android 和 iOS 都要求服务器别名(serverAltName)就是服务器的 URL 或 IP 地址,--san。

      所以这里C、O的值要跟第1步的一致,CN值及--san值是服务器公网地址或url,另外这里可以设置多个--san值。否则会出现错误 13801:IKE身份验证凭证不可接受。
    • 生成客户端私钥,然后从私钥中导出公钥,用CA证书签发客户端证书
      1. ipsec pki --gen --outform pem > client.pem
      2. ipsec pki --pub --in client.pem | ipsec pki --issue --lifetime 3652 --cacert ca.cert.pem \
      3.              --cakey ca.pem --dn "C=CN, O=VPN, CN=strongSwan Client" --outform pem > client.cert.pem
      复制代码

      这里C、O的值要跟第1步的一致。
    • 生成 pkcs12 证书,用来导入手机或电脑
      1. openssl pkcs12 -export -inkey client.pem -in client.cert.pem -name "strongSwan Client" \
      2.                       -certfile ca.cert.pem -caname "strongSwan CA" -out client.cert.p12
      3. Export Password: pceva.com
      复制代码

      生成时需设置密码,例如:pceva.com,请记住这个密码,在客户端导入此证书时需输入该密码。



    安装证书

    把刚才生成的私钥和证书文件复制到目录/etc/strongswan/ipsec.d/下的指定目录下即可。

    1. cp -r ca.cert.pem /etc/strongswan/ipsec.d/cacerts/
    2. cp -r server.cert.pem /etc/strongswan/ipsec.d/certs/
    3. cp -r server.pem /etc/strongswan/ipsec.d/private/
    4. cp -r client.cert.pem /etc/strongswan/ipsec.d/certs/
    5. cp -r client.pem /etc/strongswan/ipsec.d/private/
    复制代码


    cacerts/目录下放置CA证书
    certs/目录下放置服务器和客户端证书
    private/目录下放置服务器和客户端私钥

    配置strongSwan

    strongSwan包含3个配置文件,在目录/etc/strongswan/下。
    strongswan.conf            strongSwan各组件的通用配置
    ipsec.conf                     IPsec相关的配置,定义IKE版本、验证方式、加密方式、连接属性等等
    ipsec.secrets                 定义各类密钥,例如:私钥、预共享密钥、用户账户和密码

    vi /etc/strongswan/strongswan.conf

    1. # strongswan.conf - strongSwan configuration file
    2. #
    3. # Refer to the strongswan.conf(5) manpage for details
    4. #
    5. # Configuration changes should be made in the included files
    6. charon {
    7.         load_modular = yes
    8.         duplicheck.enable = no                          #冗余检查关闭,以允许同时连接多个设备
    9.         compress = yes                                  #传输启用压缩
    10.         plugins {
    11.                 include strongswan.d/charon/*.conf
    12.         }
    13.         dns1 = 8.8.8.8                                  #给远程端指定DNS服务器
    14.         dns2 = 8.8.4.4
    15.         nbns1 = 8.8.8.8                                 #指定Windows的WINS服务器
    16.         nbns2 = 8.8.4.4
    17.         filelog {                                       #配置strongSwan日志级别和路径
    18.                 /var/log/strongswan.log {
    19.                    time_format = %b %e %T
    20.                    default = 2
    21.                    append = no
    22.                    flush_line = yes
    23.                 }
    24.         }
    25. }
    26. include strongswan.d/*.conf
    复制代码


    vi /etc/strongswan/ipsec.conf

    1. # ipsec.conf - strongSwan IPsec configuration file
    2. config setup
    3.           uniqueids=never               #关闭ID唯一性,即允许多个客户端使用同一个证书,多设备同时在线
    4. conn %default                           #默认配置项,其他conn配置项都会调用此默认项
    5.     left=%any                           #left表示local,即本地端(服务器端)IP地址;%any是魔数字,表示任意地址
    6.     leftsubnet=0.0.0.0/0                #本地端网络,0.0.0.0/0为通配,表示所有IP网段
    7.     right=%any                          #right表示remote,即远程端(客户端)IP地址可为任意地址
    8.     rightsourceip=10.11.12.0/24         #分配给远程端的虚拟IP地址段,尽量避免使用常用私网地址段以免冲突
    9.     dpdaction=clear                     #dpd表示Dead Peer Detection,对端失效检测,clear表示对端失效时关闭连接
    10. conn IKEv1-CERT-XAUTH                   #供老版本IOS使用。IKEv1,使用证书和XAUTH验证
    11.     keyexchange=ikev1                   #密钥交换使用IKEv1
    12.     fragmentation=yes                   #允许分片
    13.     leftauth=pubkey                     #本地端使用公钥验证
    14.     leftcert=server.cert.pem            #指定本地端证书
    15.     rightauth=pubkey                    #远程端使用公钥验证
    16.     rightauth2=xauth                    #远程端使用用户账号验证
    17.     rightcert=client.cert.pem           #指定远程端证书
    18.     auto=add                            #auto定义strongSwan服务启动时该连接的行为,add是添加连接类型但不启动
    19. conn IKEv1-PSK-XAUTH                    #供IOS, Android使用。IKEv1,使用预共享密钥和XAUTH验证
    20.     keyexchange=ikev1                   #密钥交换使用IKEv1
    21.     leftauth=psk                        #本地端使用预共享密钥验证
    22.     rightauth=psk                       #远程端使用预共享密钥验证
    23.     rightauth2=xauth                    #远程端使用用户账号验证
    24.     auto=add                            #strongSwan启动时添加连接类型但不启动
    25. conn IKEv2-CERT                         #供Windows 7+, Linux使用。IKEv2,使用证书验证
    26.     keyexchange=ikev2                   #密钥交换使用IKEv2
    27.     leftauth=pubkey                     #本地端使用公钥验证
    28.     leftcert=server.cert.pem            #指定本地端证书
    29.     rightauth=pubkey                    #远程端使用公钥验证
    30.     rightcert=client.cert.pem           #指定远程端证书
    31.     auto=add                            #strongSwan启动时添加连接类型但不启动
    32. conn IKEv2-EAP                          #供Windows 7+, IOS9+使用。IKEv2,EAP验证
    33.     keyexchange=ikev2                   #密钥交换使用IKEv2
    34.     ike=aes256-sha256-modp1024,3des-sha1-modp1024,aes256-sha1-modp1024!                #第一阶段加密方式
    35.     esp=aes256-sha256,3des-sha1,aes256-sha1!                                           #ESP的顺序与IKE一致
    36.     rekey=no                            #本地端对Windows远程端发出rekey请求会断开连接,所以需配置为no
    37.     leftauth=pubkey                     #本地端使用公钥验证
    38.     leftcert=server.cert.pem            #指定本地端证书
    39.     leftsendcert=always                 #本地端总是发送证书
    40.     leftid=119.81.236.70                #本地端标识,使用本地端公网IP地址作为标识,和生成服务器证书时的--san参数对应
    41.     rightauth=eap-mschapv2              #远程端使用eap-mschapv2验证
    42.     rightsendcert=never                 #不要求远程端发送证书
    43.     eap_identity=%any                   #指定EAP验证身份,任意账户
    44.     fragmentation=yes                   #允许分片
    45.     auto=add                            #strongSwan启动时添加连接类型但不启动
    复制代码


    密码文件ipsec.secrets文件默认不存在,需要自己生成。
    vi /etc/strongswan/ipsec.secrets

    1. : RSA server.pem                        #指定服务器的RSA私钥文件
    2. : PSK "hello2016.pceva.com"             #配置预共享密钥为:hello2016.pceva.com
    3. stone : XAUTH "PCeva2016"               #配置XAUTH验证的用户名stone和密码PCeva2016,可配置多个用户账户
    4. stone : EAP "PCeva2016"                 #配置EAP验证的用户名stone和密码PCeva2016,可配置多个用户账户
    复制代码


    更改密码文件读写权限,仅限root可读写

    1. chmod 600 ipsec.secrets
    复制代码


    CentOS配置转发

    1. sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
    2. sysctl -p
    复制代码


    CentOS配置iptables防火墙,允许UDP500,UDP4500,并配置转发和NAT规则。
    vi /etc/sysconfig/iptables

    1. # Generated by iptables-save v1.4.7 on Thu Mar 31 17:56:08 2016
    2. *filter
    3. :INPUT DROP [0:0]
    4. :FORWARD DROP [0:0]
    5. :OUTPUT ACCEPT [17175:5181315]
    6. -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    7. -A INPUT -p icmp -j ACCEPT 
    8. -A INPUT -i lo -j ACCEPT 
    9. -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT 
    10. -A INPUT -i eth1 -p udp -m udp --dport 500 -j ACCEPT 
    11. -A INPUT -i eth1 -p udp -m udp --dport 4500 -j ACCEPT 
    12. -A INPUT -j REJECT --reject-with icmp-host-prohibited 
    13. -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 
    14. -A FORWARD -s 10.10.10.0/24 -j ACCEPT 
    15. -A FORWARD -j REJECT --reject-with icmp-host-prohibited 
    16. COMMIT
    17. # Completed on Thu Mar 31 17:56:08 2016
    18. # Generated by iptables-save v1.4.7 on Thu Mar 31 17:56:08 2016
    19. *nat
    20. :PREROUTING ACCEPT [69:5938]
    21. :POSTROUTING ACCEPT [13:839]
    22. :OUTPUT ACCEPT [13:839]
    23. -A POSTROUTING -s 10.10.10.0/24 -o eth1 -j MASQUERADE 
    24. COMMIT
    25. # Completed on Thu Mar 31 17:56:08 2016
    复制代码


    配置完成后,重启iptables服务,使新规则生效。

    1. service iptables restart
    复制代码


    配置init.d服务启动脚本(源码编译安装不带此脚本)
    vi /etc/init.d/strongswan

    1. #!/bin/sh
    2. #
    3. # strongswan   An implementation of key management system for IPsec
    4. #
    5. # chkconfig:   - 48 52
    6. # description: Starts or stops the Strongswan daemon.
    7. ### BEGIN INIT INFO
    8. # Provides: ipsec
    9. # Required-Start: $network $remote_fs $syslog $named
    10. # Required-Stop: $syslog $remote_fs
    11. # Default-Start:
    12. # Default-Stop: 0 1 6
    13. # Short-Description: Start Strongswan daemons at boot time
    14. ### END INIT INFO
    15. # Source function library.
    16. . /etc/rc.d/init.d/functions
    17. exec="/usr/sbin/ipsec"
    18. prog="strongswan"
    19. status_prog="starter"
    20. config="/etc/strongswan/strongswan.conf"
    21. lockfile=/var/lock/subsys/$prog
    22. start() {
    23.     [ -x $exec ] || exit 5
    24.     [ -f $config ] || exit 6
    25.     echo -n $"Starting $prog: "
    26.     daemon $exec start
    27.     retval=$?
    28.     echo
    29.     [ $retval -eq 0 ] && touch $lockfile
    30.     return $retval
    31. }
    32. stop() {
    33.     echo -n $"Stopping $prog: "
    34.     $exec stop
    35.     retval=$?
    36.     echo
    37.     [ $retval -eq 0 ] && rm -f $lockfile
    38.     return $retval
    39. }
    40. restart() {
    41.     stop
    42.     start
    43. }
    44. reload() {
    45.     restart
    46. }
    47. force_reload() {
    48.     restart
    49. }
    50. _status() {
    51.     # run checks to determine if the service is running or use generic status
    52.     status $status_prog
    53. }
    54. _status_q() {
    55.     _status >/dev/null 2>&1
    56. }
    57. case "$1" in
    58.     start)
    59.         _status_q && exit 0
    60.         $1
    61.         ;;
    62.     stop)
    63.         _status_q || exit 0
    64.         $1
    65.         ;;
    66.     restart)
    67.         $1
    68.         ;;
    69.     reload)
    70.         _status_q || exit 7
    71.         $1
    72.         ;;
    73.     force-reload)
    74.         force_reload
    75.         ;;
    76.     status)
    77.         _status
    78.         ;;
    79.     condrestart|try-restart)
    80.         _status_q || exit 0
    81.         restart
    82.         ;;
    83.     *)
    84.         echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
    85.         exit 2
    86. esac
    87. exit $?
    复制代码


    配置开机时strongswan服务自启动

    1. cd /etc/init.d
    2. chmod +x strongswan
    3. chkconfig --add strongswan
    4. chkconfig strongswan on
    复制代码


    启动strongswan服务

    1. service strongswan start       #或者  ipsec start
    复制代码


    查看strongswan服务状态

    1. service strongswan status       #或者  ipsec status
    复制代码

    注:以上防火墙配置只是添加了nat转发功能,ip映射在web页面操作完成的   
    服务器防火墙配置如下

    *nat
    :PREROUTING ACCEPT [69:5938]
    :POSTROUTING ACCEPT [13:839]
    :OUTPUT ACCEPT [13:839]
    -A POSTROUTING -s 10.11.12.0/24 -o eth0 -j MASQUERADE
    COMMIT

    注:服务器的dns地址为内网dns

    本机电脑vpn配置dns也为内网dns

    ----------------------------------------------------------------------

    电脑vpn配置

    在 Mac 上输入 VPN 服务器信息

    1. 点击网络设置页面左下角的 + 添加按钮。
    2. 在 接口 栏位选择  VPN 。
    3. 在 VPN 类型 栏位选择 Cisco IPSec。
    4. 输入 VPN 连接的服务名称。
    5. 点击 创建

     

     

    步骤三: 创建 VPN 连接。

    1. 进入网页图形界面(Web GUI)的 虚拟专用网(VPN)服务器 页面。
    2. 在网络设置画面的 服务器地址 栏位,输入 虚拟专用网(VPN)服务器 页面 服务器 IP 地址 栏位显示的 IP 地址。
    3. 进入网页图形界面(Web GUI)的 虚拟专用网(VPN)服务器 页面,在 帐号 栏位输入访问 VPN 服务器的用户名称。然后在 Mac 网络设置画面中输入同样的帐户名称。
    4. 进入网页图形界面(Web GUI)的 虚拟专用网(VPN)服务器 页面,在 密码 栏位输入访问 VPN 服务器的用户名称。然后在 Mac 网络设置画面中输入同样的密码。
    5. 完成后,在 虚拟专用网(VPN)服务器 页面点击 + 图标。

     

    步骤四: 连接至 VPN

    1. 在 Mac 网络设置画面,点击 认证设置。
    2. 在 虚拟专用网(VPN)服务器 页面输入Pre Shared Key,然后在 机器鉴定 窗口的 共享的密钥 栏位输入同样的密钥
    3. 完成后,在 机器鉴定 窗口中点击 好。
    4. 在 虚拟专用网(VPN)服务器 页面点击 应用本页面设置。
    5. 在 Mac 网络设置画面中点击 连接。


    以上为VPN服务器端的配置
    posted @ 2018-11-13 15:06 疯狂的米粒儿 阅读(...) 评论(...) 编辑 收藏
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,896
精华内容 2,358
关键字:

ipsec