CentOS/Ubuntu一鍵安裝IPSEC/IKEV2 VPN伺服器
花了點時間將上次的Ubuntu、CentOS搭建IPSec/IKEv2 VPN伺服器全攻略整理成了一份一鍵安裝的指令碼。適用於WindowsPhone,iOS,Android和PC裝置。有需要的童鞋可以拿來食用~ ~ ~ ~ CetnOS測試了下貌似沒什麼問題,Ubuntu的手裡暫時沒有空閒vps就沒試了,其實也差不多的,歡迎測試和反饋
目錄
安裝說明
用法很簡單:總結成一句話就是:除了型別要選對以外,其他的一路回車就好了23333
特性
- 服務端要求:Ubuntu或者CentOS-6/7或者Debian
- 客戶端:
- iOS/OSX=>ikev1,ikev2
- Andriod=>ikev1
- WindowsPhone=>ikev2
- 其他Windows平臺=>ikev2
- 可使用自己的私鑰和根證書,也可自動生成
- 證書可繫結域名或ip
- 要是圖方便可一路回車
最近更新
- 新增SSL證書自動申請自動更新並應用於IKEv2的解決方案,詳見這篇博文:SSL證書自動更新並應用到IKEv2, Nginx ;
- 新增對CentOS7的firewall防火牆的支援;
- 使用ip address替換已被廢棄的ifconfig;
- 生成單獨的sysctl配置檔案/etc/sysctl.d/10-ipsec.conf單獨載入,用於開啟ipv4轉發(如以後解除安裝或需要關閉net.ipv4.ip_forward,請記得刪除此檔案);
- 升級strongswan版本到5.5.1,解決iOS9和iOS10的相容性問題(感謝
caasiu的提醒#21);- 新增匯入SSL證書的支援,安裝時可選使用證書頒發機構簽發的證書還是生成自簽名證書;
服務端安裝說明
下載指令碼:
- 注:如需使用其他分支的指令碼,請將上述url中的master修改為分支名稱,各分支區別詳見本頁的分支說明節點
執行指令碼:
等待自動配置部分內容後,選擇vps型別(OpenVZ還是Xen、KVM),選錯將無法成功連線,請務必核實伺服器的型別
*.域名
的形式);選擇使用使用證書頒發機構簽發的SSL證書還是生成自簽名證書:
如果選擇no,
使用自簽名證書
(客戶端如果使用IkeV2方式連線,將需要匯入生成的證書並信任)則需要填寫證書的相關資訊(C,O,CN),為空將使用預設值(default value),確認無誤後按任意鍵繼續,後續安裝過程中會出現輸入兩次pkcs12證書的密碼的提示(可以設定為空)如果選擇yes,
使用SSL證書
(如果證書是被信任的,後續步驟客戶端將無需匯入證書)請在繼續下一步之前,將以下檔案按提示命名並放在指令碼相同的目錄下(SSL證書詳細配置和自動續期方案可見https://quericy.me/blog/860/ ):- ca.cert.pem 證書頒發機構的CA,比如Let‘s Encrypt的證書,或者其他鏈證書;
- server.cert.pem 簽發的域名證書;
- server.pem 簽發域名證書時用的私鑰;
是否使用SNAT規則(可選).預設為不使用.使用前請確保伺服器具有不變的靜態公網ip,可提升防火牆對資料包的處理速度.如果伺服器網路設定了NAT(如AWS的彈性ip機制),則填寫網絡卡連線介面的ip地址(參見KinonC提供的方案:#36).
防火牆配置.預設配置iptables(如果使用的是firewall(如CentOS7)請選擇yes自動配置firewall,將無視SNAT並跳過後續的補充網絡卡介面步驟).補充網絡卡介面資訊,為空則使用預設值(Xen、KVM預設使用eth0,OpenVZ預設使用venet0).如果伺服器使用其他公網介面需要在此指定介面名稱,填寫錯誤VPN連線後將無法訪問外網)
看到install Complete字樣即表示安裝完成。預設使用者名稱密碼將以黃字顯示,可根據提示自行修改配置檔案中的使用者名稱密碼,多使用者則在配置檔案中按格式一行一個(多使用者時使用者名稱不能使用%any),儲存並重啟服務生效。
將提示資訊中的證書檔案ca.cert.pem拷貝到客戶端,修改後綴名為.cer後匯入。ios裝置使用Ikev1無需匯入證書,而是需要在連線時輸入共享金鑰,共享金鑰即是提示資訊中的黃字PSK.
客戶端配置說明
連線的伺服器地址和證書保持一致,即取決於簽發證書ca.cert.pem時使用的是ip還是域名;
Android/iOS/OSX 可使用ikeV1,認證方式為使用者名稱+密碼+預共享金鑰(PSK);
iOS/OSX/Windows7+/WindowsPhone8.1+/Linux 均可使用IkeV2,認證方式為使用者名稱+密碼。
使用SSL證書
則無需匯入證書;使用自簽名證書
則需要先匯入證書才能連線,可將ca.cert.pem更改字尾名作為郵件附件傳送給客戶端,手機端也可通過瀏覽器匯入,其中:- iOS/OSX 的遠端ID和伺服器地址保持一致,使用者鑑定選擇”使用者名稱”.如果通過瀏覽器匯入,將證書放在可訪問的遠端外鏈上,並在系統瀏覽器(Safari)中訪問外鏈地址;
- Windows PC 系統匯入證書需要匯入到“本地計算機”的”受信任的根證書頒發機構”,以”當前使用者”的匯入方式是無效的.推薦執行mmc新增本地計算機的證書管理單元來操作;
- WindowsPhone8.1 登入時的使用者名稱需要帶上域資訊,即wp”關於”頁面的裝置名稱\使用者名稱,也可以使用%any %any : EAP “密碼”進行任意使用者名稱登入,但指定了就不能新增其他使用者名稱了.
- WindowsPhone10
的vpn還存在bug(截至10586.164),ikeV2方式可連線但系統流量不會走vpn,只能等微軟解決.(截至14393.5 ,此bug已經得到修復,現在WP10已經可以正常使用IkeV2.) - Windows10 也存在此bug,部分Win10系統連線後ip不變,沒有自動新增路由表,使用以下方法可解決(本方法由 bigbigfish 童鞋提供):
- 手動關閉vpn的split tunneling功能(在遠端網路上使用預設閘道器);
- 也可使用powershell修改,進入CMD視窗,執行如下命令:
解除安裝方式
進入指令碼所在目錄的strongswan資料夾執行:
刪除指令碼所在目錄的相關檔案(one-key-ikev2.sh,strongswan.tar.gz,strongswan資料夾,my_key資料夾).
解除安裝後記得檢查iptables配置.
分支說明
- master分支:經過測試的相對穩定的版本;
- dev-debian分支:Debian6/7測試分支,該指令碼由bestoa修改提供;
- dev分支:開發分支,使用最新版本的strongswan,未進過充分測試,用於嘗試和新增一些新的功能,未來可能新增對L2TP的相容支援,以及對ipv6的支援;
部分問題解決方案
ipsec啟動問題:伺服器重啟後預設ipsec不會自啟動,請命令手動開啟,或新增/usr/local/sbin/ipsec start到自啟動指令碼檔案中(如rc.local等):
ipsec常用指令:
可連線但是無法訪問網路:
- 檢查iptables是否正常啟用,檢查iptables規則是否與其他地方衝突,或根據伺服器防火牆的實際情況手動修改配置。
- 檢查sysctl是否開啟ip_forward:
- 開啟sysctl檔案:
vim /etc/sysctl.conf
- 修改net.ipv4.ip_forward=1後儲存並關閉檔案
- 使用以下指令重新整理sysctl:
sysctl -p
- 如執行後正常回顯則表示生效。如顯示錯誤資訊,請重新開啟/etc/syctl並根據錯誤資訊對應部分用#號註釋,儲存後再重新整理sysctl直至不會報錯為止。
- 開啟sysctl檔案:
如果之前使用的自簽名證書,後改用SSL證書,部分客戶端可能需要解除安裝之前安裝的自簽名證書,否則可能會報
Ike憑證不可接受
的錯誤:- iOS:設定-通用,刪除證書對應的描述檔案即可;
- Windows:Win+R,執行mmc開啟Microsoft管理控制檯,檔案->新增管理單元,新增證書管理單元(必須選計算機賬戶),展開受信任的根證書頒發機構,找到對應的自簽名證書,右鍵刪除即可;
- Windows Phone:暫時沒有找到可以解除安裝證書的方法(除非越獄),目前只能重置來解決此問題;
PS
指令碼程式碼可訪問github檢視和下載:
GitHub