分類
Linux 網絡

使用ocserv搭建 Cisco Anyconnect 服務器

前段時間的appleID被盜事件鬧的沸沸揚揚,我果斷回到獄中升級了9.0.這下好了,Shadowsocks不能用了。這一點來講我還是挺羨慕Android手機的......使用 Surge 讓 iOS 走 Shadowsocks實現科學上網。

總之,我們還是來在iOS的VPN上下下功夫吧。如今的VPN已經被認證的差不多了,因為它們雖然加密安全,但禁不住特徵檢測——好吧,畢竟說這東西就不是為了隱匿而生的。目前倒是我思科大爹還有個anyconnect在活著,不是它多麼堅挺,而是用的企業太多,沒法禁,而且,它還有斷線自動連接,自動國內外按需分流等諸多的好處——最大一點:不需要越獄。

注意:

我使用的是數字海洋的VPS,Ubuntu的 15.04 ,整個的配置步驟是我一邊配一邊記錄的,是完全可行的,但由於系統環境複雜,每個人都不盡相同,所以你具體操作的時候可能仍舊需要靈活運用!


0、關於PAC的問題

我們經常說,Cisco 的 的AnyConnect無法使用PAC的,因為它的機制不同,不是代理而是 VPN,所以本文使用的方法是從服務器直接下發一些路由條目——由於客戶端限制,我們總是不能下發完整的路由表(只有200來條),這一點始終是廣大 AnyConnect 的一塊心病。總之,其實還有另外的一個辦法,對於那些需要全局vpn但又想區分網絡的企業,Cisco 還是有對應辦法的。

那就是讓服務器走代理。?

這就需求你有一台中國的vps來作為前置,並且這台vps使用比如 Shadowsocks 等工具連到你的國外 vps 上,然後再在中國 vps 上搭建ocserv,然後給它配置pac文件,這樣ocserv就會根據你的代理策略來實現路由。總之,如果你想嘗試這個方法,請直接跳轉頁面底部的 [參考文章] 小節,“移步 Anyconnect VPN使用PAC來智能分流” 這篇文章進行參考。

1、配置環境

這一步參考我之前寫的一篇文章——如果你的vps是全新的,否則跳過吧~

2、架設OpenConnectServer

2.1下載源碼

從這裡查看ocserv的最新版本號,你不需要點到FTP裡看,只要安裝格式替換鏈接路徑就行了。比如現在最新的版本是0.10.8,那麼你就把地址寫成這樣: FTP://ftp.infradead.org/pub/ocserv/ocserv-0.10.8.tar.xz ,好,我們現在來下載源碼:

2.2 安裝依賴

下載解壓好了代碼,就需要安裝一些依賴了,些是需要的,有些則是可選的,這裡我們盡可能的安裝所有依賴,萬一將來用得著呢!畢竟也就十來兆的大小。

如果沒有什麼問題,那就可以安裝了,比如我這裡的結果是這樣的:

2.3 編譯安裝

使用make命令來編譯和安裝:

3、配置O​​penConnectServer

3.1準備證書

安裝證書工具 易於-得到 安裝 GNUTLS-箱子

在此目錄下創建一個名為 .TMPL 的CA證書模板,寫入如下語句:

使用 certtool --生成-的privKey --OUTFILE -.ESTAB 生成CA密鑰;

使用 certtool --生成-- --加載-的privKey -.ESTAB --模板 .TMPL --OUTFILE -證書.ESTAB 生成CA證書;

然後我們生成服務器證書,這裡註意cn項必須對應你服務器的域名或IP,模板名稱是 服務器.TMPL ,內容如下:

使用 certtool --生成-的privKey --OUTFILE 服務器-.ESTAB 生成密鑰;

使用 certtool --生成-證書 --加載-的privKey 服務器-.ESTAB --加載--證書 -證書.ESTAB --加載--的privKey -.ESTAB --模板 服務器.TMPL --OUTFILE 服務器-證書.ESTAB 生成server證書;

把證書移動到合適的地方:

3.2 準備配置文件

我們把配置文件放到ocserv默認讀取的位置:

配置文件可以參考官方手冊來寫,不過這裡我們重點要確保以下條目正確:

3.3 測試服務器

現在,我們就可以來測試一下服務器了,使用命令來創建一個測試賬號:

如果你使用的也是Ubuntu系統,那你可以按照我寫的這篇文章來開啟NAT轉發;

使用 iptables的 -ŧ NAT -大號 來驗證轉發是否開啟成功:

這時,我們就可以使用 ocserv -F -ð 1 命令來啟動下服務啦!

打開你手機上的Cisco Anyconnect新建一個VPN,添加服務器IP就是你的vps的 IP:端口

好了,如果你看到如下信息,那服務器應該已經能夠正常運行了:

3.4 優化OpenConnectServer

好了,既然服務器已經可以跑起來,那麼我們就可以優化它了,首先,來寫個啟動腳本——畢竟,不能每次都用調試模式啟動不是嗎?

如果你和我一樣使用的是 Ubuntu 15.04 而不是舊版,那麼你需要參考這篇文章來找回一下upstart才能使用下邊的腳本。

在配置文件中寫入如下腳本:

這樣,我們就可以使用 服務 ocserv 開始服務 ocserv 停止來控制服務了。

3.5 創建客戶端證書,省的老輸入密碼

寫入如下內容:

將證書和密鑰轉為PKCS12的格式,好導入Anyconnect:

期間會要求你輸入證書名字和密碼。

然後你需要把這個證書放到一個可以被直接訪問的地方,然後通過URL將user.p12文件導入AnyConnect,具體位置在診斷標籤頁的證書欄目下,導入成功之後,將對應的VPN設置的高級設置部分的證書欄目,改為導入的這張證書。

現在,為了讓服務器能夠認得這張證書,我們再來修改一下配置:

這樣,我們使用 服務 ocserv 開始 來啟動它即可!

4、智能分流

好了,一般來講,如果你的是一個穩定且速度不慢的國外vps,那你現在就可以開始享受生活了!不過,我們的任務還沒用結束,手動切換總不能說的上是智能,我們使用現成的。

HTTPS://github.com/don-johnny/anyconnect-routes/blob/master/routes

不過我沒有全寫,只寫了部分進去——我主要是刷推~

好了,就到這裡吧!

ocserv
ocserv

參考文章:

折騰筆記:架設OpenConnect Server給iPhone提供更順暢的網絡生活

Anyconnect VPN使用PAC來智能分流

 

 

本文由 落格博客 原創撰寫:落格博客 » 使用ocserv搭建 Cisco Anyconnect 服務器

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/1343.html

通過 落格博客

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

18 在回答“使用ocserv搭建 Cisco Anyconnect 服務器”

博主求指教 最後make的時候出錯了 回去翻了下 問題應該是出在這裡 這幾個庫我都是有的 要如何把他們添加到編譯路徑去?謝謝
當地talloc: 沒有
當地的protobuf-C: 沒有
當地PCL庫: 沒有
當地libopts: 沒有
本地HTTP分析器: 沒有

R0uter:

你好!

本人比較外行,請教一件事,我也是使用的Digital Ocean的VPS,Ubuntu的 15.04 ,月費5美金那款,之前按照http://www.chedanji.com/ubuntu-shadowsocks/ 這篇帖子部署了Shadowsocks , 安卓手機和PC 都能翻了,現在準備按照你的這篇大作搭建Cisco Anyconnect 服務器,我可以直接操作嗎?和以前的Shadowsocks會衝突嗎?

期盼回复,謝謝!

不用擔心,隨便配,我的vps現在兩個都跑著沒有任何問題!唯一需要注意的地方在於:避免端口衝突。只要注意這一點就ok了。不過,ac在我這速度不咋地,我已經準備卸載啦。推薦最新的surge!

發表評論

您的電子郵件地址不會被公開. 必填字段標 *