加入收藏 | 设为首页 | 会员中心 | 我要投稿 十堰站长网 (https://www.0719zz.com/)- 混合云存储、网络、视频终端、云计算、媒体处理!
当前位置: 首页 > 综合聚焦 > CentOS > 正文

CentOS 6.3下Strongswan搭建IPSec VPN

发布时间:2023-02-17 10:04:44 所属栏目:CentOS 来源:互联网
导读:一、软件说明 IPsec 是虚拟私密网络(VPN)的一种,用于在服务器和客户端之间建立加密隧道并传输敏感数据之用。它由两个阶段组成,第一阶段(Phrase 1,ph1),交换密钥建立连接,使用互联网密钥交换(ike)协议; 第二阶段(Phrase 2,ph2),连接建立后对数据

 
  2.leftauth/rightauth 这是最重要的改动。新版主要是作废了之前的 authby 和 xauth=server/client 选项而都改用这种方法。因此使得 ikev1 也能够出现混血认证(左右两边认证的方法不同)了。参数主要有 pubkey 表示用证书,psk 表示用密码,eap 表示用扩展验证协议。
 
  3.leftauth2/rightauth2 是为了应对旧版很常见的 authby=xauthpsk/xauthrsasig 的。现在 xauth 只能写在这里。而 psk 对应 leftauth/rightauth 里的 PSK 方法,rsasig 则对应 pubkey 方法。
 
  4.leftsubnet 最重要的,引入了魔术字 0.0.0.0/0。如果你在右侧为客户端分配虚拟 IP 地址的话,那表示你之后要做 iptables 转发,那么左边就必须是用魔术字。
 
  5.leftcert/rightcert 就是指定证书名字。
 
  6.rightsourceip 为客户端分配的虚拟 IP 段。
 
  7.auto 定义 strongswan 启动时该连接的行为。start 是启动; route 是添加路由表,有数据通过就启动; add 是添加连接类型但不启动; ignore 是当它不存在。默认是 ignore。看起来似乎是 route 比较好,但问题是我们服务器端不能预分配虚拟 IP,所以服务器端一般用的都是 add。而客户端文本配置可以选择 start。
 
  另外说下旧版的 xauth=server/client 的问题。它表示在服务器端还是在客户端执行 xauth 认证。而在新版中主要通过左右方向来体现。比如你在服务器端执行认证,那认证请求是由客户端发出的,所以要写 rightauth2=xauth。如果在客户端执行认证,那认证请求是服务器发出的,所以要写 leftauth2=xauth。
 
  另外网上很常见的一个配置选项是 leftfirewall=yes。这是完全错误的。看上去它的唯一作用是定义你的服务器是不是在防火墙后面,但实际上它是作为 ipsec_updown 脚本的参数被开发出来,是表明你的本机 subnet 是不是用 iptables 转发/伪装出来的。如果是的话,就调用 left/rightupdown 定义的路径下的脚本,脚本的作用是对通过 ipsec 连接的数据包进行 iptables 豁免。
 
  之所以说它是错到离谱的(虽然没有产生影响),因为这些人完全就不懂,有公网 IP 的服务器的 subnet 很少是伪装的。另外必须写了脚本该选项才有意义,没看过一个定义了这个选项的人写过脚本。还有,leftsubnet=0.0.0.0/0 通过魔术字把 subnet 定义为了 any,你根本没法写脚本啊。所以我们这里完全就不用。
 
  至于某类型连接,主要是根据设备规格定义的,一些特殊选项的解释如下:
 
  1.fragmentation=yes 开启对 iOS 拆包的重组支持。
 
  2.ike=aes256-sha1-modp1024! Windows 指定的第一阶段加密方法。
 
  3.rekey=no 服务器对 Windows 发出 rekey 请求会断开连接。
 
  4.rightsendcert=never 因为这是一个混血连接。服务器对自己的身份进行认证时使用的是证书,而服务器对客户端的认证使用的只是 eap-mschapv2。如果不设置的话默认是 ifasked,意思是如果服务器向客户端请求证书,客户端就会给它,但客户端给不出,连接就会断。这里设置为客户端永远不给,实际上的意思其实是服务器不要向客户端请求证书。
 
  5.eap_identity=%any 使用 Windows 的 eap 身份。不然会出现”no eap key found for host <rightid>“错误。
 
  4、ipsec.secrets配置
 
  这个文件默认是没有的,我自己来进行创建
 
  # vim/etc/strongswan/ipsec.secrets
 
  将上面的myPSKkey单词更改为你需要的PSK认证方式的密钥;
  将上面的myXAUTHPass单词更改为你需要的XAUTH认证方式的密码,该认证方式的用户名是随意的;
  将上面的[用户名]改为自己想要的登录名,[密码]改为自己想要的密码([]符号去掉),可以添加多行,得到多个用户,这即是使用IKEv2的用户名+密码认证方式的登录凭据.
 
  : PSK "PSK password" 相当于:%any%any: PSK "PSK password"
 
  遵循:“主机 对等点: 方法 <本机证书/协议密码> <本机证书密码>”的格式。以 :为分界,分别从左到右填充,除了各类密码缺失以 null 补位,其它都用%any 补位(密码怎么可能是%any)。
 
  5、strongswan.conf配置
 
  #vim /etc/strongswan/strongswan.conf
 
  dns可以改为你想使用的dns,可以添加两个dns1 dns2
 
  五、服务的启动
 
  # service strongswan start
 
  然后我们就可以使用手机进行连接了
 
  六、客户端的设置
 
  iOS
 
  把 CA 证书和之前做好的 pkcs12(.p12)发邮件给自己。在 iOS 上收邮件,导入两者。然后新建 IPSec VPN:
 
  服务器,都是 IP 或都是 URL
 
  账户和密码写 ipsec.secrets 里 XAUTH 前后的那两个
 
  如果要使用证书,证书选刚才的那个。否则可以不使用证书,输入 ipsec.secrets 里设置的 PSK 密码。
 
  Android
 
  IPSec Xauth PSK
 
  主要还是:
 
  服务器,都是 IP 或都是 URL
 
  IPSec 预共享密钥:写 ipsec.secrets 里 PSK 后面的那个密码。
 
  然后登入时还是用 XAUTH 前后的那两个做用户名密码。
 
  "strongSwan VPN Client" for Android 4.0 (ICS)+
 
  这是官方自己出的客户端,Google Play 里就有。
 
  把之前做好的 pkcs12 发邮件给自己。实际上 pkcs12 里就包含了 CA 证书,iOS 是有 bug 才必须明确要求导入 CA 证书(鄙视之)。Android 不用。直接在 GMail 里点击就会提示你导入。
 
  然后打开官方客户端,新建方案:
 
  Gateway 就是服务器,同上
 
  Type 选 IKEv2 Certificate
 
  User certificate 选你刚才导入的
 
  取消自动选择 CA 证书,然后在用户证书里选你刚才从 pk12 导入的
 
  Windows的客户端我还是建议使用pptp或者l2tp openvpn
 
  七、问题调试
 
  如果没有特殊需要,服务器端的日志就足够检测出绝大多数问题的来源。
 
  日志阅读技巧
 
  strongswan 的 charon daemon 启动后,会初始化并加载之前你定义好的 conn,这部分 log 是没有必要去读的。当然在你配置有问题时可能就有必要了,但当配置有问题的时候,service strongswan start会失败,strongswan status就会指出你配置问题所在的行号(=。=)...
 
  服务器端调试
 
  /var/log/strongswan-charon.log 文件
 
  需要在/etc/strongswan/strongswan.d/charon-logging.conf里面开启调试日志功能
 
  iOS 调试
 
  越狱安装 iFile。编辑 /etc/racoon/racoon.conf 文件,找到 #log debug; 字段,改成:
 
  logdebug; pathlogfile"/var/log/racoon.log";
 
  保存。
 
  Android 调试
 
  strongSwan 官方客户端提供了日志查看功能。
 
  android 自带的 VPN 调试方法如下:
 
  打开「终端模拟器」,输入 su,会弹出超级用户,允许。
 
  cd/storage/sdcard0 logcat-f./log.txt
 
  然后用 Airdroid 等工具把 SD 卡中的 log.txt 传到电脑上,打开搜索 VPN 即可。
 
  八、总结
 
  经过我测试得出的结论,我目前只测试了IOS 8还有安卓手机小米Note,都是使用的xauth认证,没有使用证书,我的小米Note是可以连接的上,但是页面加载有问题,查看日志他是使用的android_xauth_psk这个连接,也没有找到问题的原因,同样的配置用IOS连接,因为我们使用的是IOS自带的IPSec VPN连接,也没有使用证书,参数和安卓的连接一样,因为没有使用证书,识别的也是android_xauth_psk这个连接,但是访问都是一切正常的。
 

(编辑:十堰站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读