2015年6月13日 星期六

在 ConoHa 上以 Ubuntu 14.04 LTS 搭配 OpenVPN Access Server 架設 OpenVPN 服務

ConoHa_step30
美雲このは真的好可愛(滾動

在前篇在 VULTR 上以 Ubuntu 14.04 LTS 架設 PPTP VPN 服務之後,這次要示範的是在日本主機商 ConoHa.jp 上架設 VPN 服務,由於 ConoHa.jp 阻擋了 GRE 通訊協定,因此無法在上面架設 PPTP 服務,考慮到以 Linux 系統架設 L2TP/IPSec 或是 Cisco IPsec 服務有一定難度與低容錯性,這裡以較為簡單的 OpenVPN 作實作

OpenVPN 可以說是一個用於建立虛擬私人網路絡加密通道的整合軟體環境,在建立連線上,OpenVPN 允許使用公開金鑰、電子憑證、或者使用者名稱、密碼的方式來進行身份驗證,進而產生連線,而在運行 Linux 系統的 VPS 上建立 OpenVPN 服務有兩種方式,一種是藉由 apt-get 獲得整合好的安裝套件 OpenVPN Access Server,另一種也是透過 apt-get,但採用的是開源的 OpenVPN,安裝後再使用 easy-rsa 套件簽發伺服端、連接者端與使用者端共三組數位憑證,接著撰寫供 OpenVPN 使用的 .ovpn 檔案,而這次實作的是前著,採用 OpenVPN Access Server 的方案

接著談一談 ConoHa.jp,ConoHa.jp 算是日本主機商之中較為的國際化的一家,相較於俗稱櫻花 VPS 的 SAKURA VPS 與 CloudCore 一般排外,沒有限定日本地區信用卡、註冊時需要驗證日本電話號碼與地址的要求,反而一開始就提供了英文與簡體中文的介面,也支援國際信用卡與 PayPal 等支付方式

而在規格上,ConoHa.jp 使用的是 Xen 虛擬化技術,故不會有採用 OpenVZ 技術的廠商一樣發生超賣單位,超出的伺服器極限的問題,而以最低規格而言,就提供了兩個處理器虛擬單位,1GB 記憶體,與 50GB 容量的固態硬碟,傳輸流量方面無限制,上下速度 100Mbps,預設提供 IPv4 與 IPv6 位址,價格則是每個月 900 円


ConoHa_step1
ConoHa 的英文版介面
ConoHa_step2
以基本的 1GB 記憶體,50GB 容量的固態硬碟方案而言,每小時 1.3 円,一天 31.2 円,一個月則算成 900 円
ConoHa_step3
單位部屬速度比 Vultr 還要快,登入方式一樣是 ssh root@VPS 的網路位址 ,輸入管理密碼後以 root 權限登入

root 帳號的密碼就是剛才在部屬單位時你設定的 root password,這邊要特別說一點,由於 ConoHa.jp 預設是沒有任何方式去保護你的單位,在安全登入上, 由於改 SSH 連接埠的工程浩大,因此建議安裝一個名叫 fail2ban 的安全套件來防止惡意登入者去猜 root 密碼,進而取得 VPS 的操控權

這邊先使用 apt-get install fail2ban 來獲得安全套件

安裝後使用 cp -a /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 複製設定檔

然後使用 vim /etc/fail2ban/jail.local 修改設定檔,關於 fail2ban 在 Ubuntu 的設定網路上很多了,這邊就不贅述了,但是要確認 SSH 防護有打開
** 這邊簡單敘述一下 Vim 文字編輯器的指令,i 是進入編輯模式、Esc 會離開編輯模式到上層,在上層 :w 是存檔、:wq 是存檔後離開、:q 是直接離開不存檔

使用 /etc/init.d/fail2ban restart 來重新啟動 fail2ban 服務,至此 fail2ban 安裝完成


ConoHa_step5
fail2ban-client status 可以確認 fail2ban 的運作模式,看到附圖那樣基本就沒問題了
ConoHa_step6
順手用 apt-get install iptables 安裝路由表套件,接著用 wget 指令獲得 OpenVPN Access Server 安裝包
ConoHa_step7
wget http://swupdate.openvpn.org/as/openvpn-as-2.0.17-Ubuntu14.amd_64.deb 是給 64 位元 Ubuntu 14.04 LTS 使用
ConoHa_step8
下載完成後使用 dpkg -i openvpn-as-2.0.17-Ubuntu14.amd_64.deb 來安裝剛才下載的套件

接著就可以看到如上圖的畫面,管理者介面是 https://主機位址:943/admin,一般使用者則是 https://主機位址:943/,同時會要你創一個管理 OpenVPN Access Server 服務的帳號,預設名稱是 openvpn,密碼則是自行輸入,會作一次確認

與開源的 OpenVPN 安裝套件不同,OpenVPN Access Server 是由開發 OpenVPN 的母公司所開發的簡易安裝套件,與前者不同,OpenVPN Access Server 安裝過程較為方便,伺服端與客戶端的設定也已經做好了,但是有著除非購買授權碼,一般用戶最大兩個客戶端同時連線的限制,當然對於小規模的應用來說,兩個人同時連線已經堪用,如果需要更多連線的話,建議使用開源的 OpenVPN 安裝套件做架設


ConoHa_step10
https://主機位址:943/admin 進入管理者介面,看到憑證錯誤的資訊不用驚慌,那是正常的
ConoHa_step9
第一次啟動會看到 OpenVPN Access Server 的 EULA(終端用戶許可協議)
ConoHa_step11
同意之後就可以看到這個管理畫面

接下來要解釋如何在 OpenVPN Access Server 添加使用者帳號,這裡需要再次以 root 權限的帳號進去創立新帳號

可以先輸入 vim /etc/group vim /etc/passwd 來檢視使用者群組與狀態,沒意外的話會看到使用者最下方有一個 openvpn,這是你在架設 OpenVPN Access Server 時創的管理者帳號,其實這個帳號也可以擁有設定檔、連線到 OpenVPN 的功能,不過我建議另外創兩個單純用於連線的帳號


ConoHa_step13
vim /etc/group 檢視使用者群組,接著以 :q 離開
ConoHa_step14
vim /etc/passwd 檢視使用者狀態與權限,接著以 :q 離開
ConoHa_step12
輸入 adduser client01 指令會創造出一個名叫 client01 的帳號
ConoHa_step15
輸入 client01 的密碼,輸入後會再作一次確認,接著會確定使用者組態,一路 Enter 下去吧
ConoHa_step16
最後會確認使用者組態是否正確,沒錯就按 Y 確認並離開,在依照一樣的流程創一個 client02
ConoHa_step17
再次以 vim /etc/group 就會看到剛才創立的兩個帳號,接著以 :q 離開
ConoHa_step18
在就可以在 OpenVPN Access Server 管理介面以管理帳號創兩個一樣名稱的帳號
ConoHa_step19
https://主機位址:943/ 進入使用者介面,看到憑證錯誤的資訊一樣不用驚慌,那是正常的
ConoHa_step20
右下點選 Login ,輸入使用者帳號與密碼,密碼是剛剛創立帳號時輸入的
ConoHa_step21
接著會看到這個畫面,你可以下載上方設定好的連線軟體,或是下載下方的設定檔搭配自己的 OpenVPN 連線軟體
ConoHa_step22
下方的設定檔會下載一個 .ovpn 檔頭的設定檔到你的電腦,我使用 Tunnelblick 這套軟體
ConoHa_step23
在 Tunnelblick 非啟動的情況下點選 .ovpn 檔頭的設定檔安裝,需要使用者權限
ConoHa_step24
這邊隨意啦
ConoHa_step25
第一次連線時依照設定檔跟軟體的差別,可能會詢問使用者帳號與密碼

基本上以 OpenVPN Access Server 為基礎架設的 VPN 服務就完成了,再來是實作測試,以花蓮地區的 vDSL 服務作測試,理論頻寬 60M/20M,離光纖交換機箱距離約三百米以內,國內直接連線到伺服器延遲約 46 至 55 微秒

ConoHa_step26
單向測試,連線到日本後在連線到東京地區的測試點
ConoHa_step27
雙向來回,先連線到日本再連線回台北地區的測試點

基本上延遲是在可以接受的範圍,封包遺失率在可以接受的水準,而連線速度上拜 GMO Internet Inc. 那條高速回線的威能,以國內個人使用最高速的 100M 而言,可以衝到你自己網路的極速

話說日本的 VPS 廠商很喜歡玩二次元形象這種公關行銷,在 CloudCore 的雲野コア、SAKURA VPS 的桜葉愛 之外,ConoHa.jp 的 美雲このは 與 美雲あんず 姊妹二人組也很紅,不過在出現頻率上美雲このは比例比較高就是了

話說このは的聲優是上坂堇,其姐妹あんず的聲優是內田真禮,這根本就是凸守早苗和小鳥游六花的搭配


ConoHa_step29
把 ConoHa.jp 的主網址改成 https://www.conoha.jp/conoha ,美雲このは會出來跟你打招呼
ConoHa_step31
在主機管理面板也可以看到她噢,不過介面語言要選日文,再把介面風格切換成 このはモード ,其他介面語言下不知為什麼出不來
ConoHa_step28
美雲このは同時也擔任東家 ConoHa.jp 的錯誤娘

2015年6月8日 星期一

在 VULTR 上以 Ubuntu 14.04 LTS 架設 PPTP VPN 服務

首先,得感謝某個三不五時就 大量貓空襲 的日本網頁遊戲,讓我點了一堆 Linux 技能,還順便實作了 VPS 上架設 PPTP VPN 的操作,這篇文章主要是關於如何在 VPS,也就是 Virtual private server,也就是虛擬專用伺服器上架設 PPTP 服務的操作

在選擇 VPS 廠商方面,我本來會推薦 Linode 這家異常超值的廠商,無奈它的東京機房已經售罄許久,我在六月初曾經用開一個位在新加坡機房的單位,用延遲過高的理由要求搬遷到東京,藉以迴避無論是老客戶還是新客戶都無法購買東京機房單位的限制,無奈這招也行不通了,目前只能等它們開通新的東京機房( Linode 在本年度的展望報告中有提及到),目前我選擇的 VPS 廠商是 VULTR,這家廠商也有提供位在東京機房的單位,且除了信用卡之外,還支援 PayPal 與比特幣儲值


vultr_step1
註冊後首先是儲值,藉由舊客戶邀請的方式可以獲得五鎂的獎勵,而舊客戶邀請新客戶也可以獲得獎勵
vultr_step2
接著選擇佈署 VPS 單位
vultr_step3
選擇 VPS 單位的規格,由於 VULTR 在各地機房規格的關係,如東京機房不會給你 2TB 流量
vultr_step4
佈署後會進行安裝,大約三十秒就會顯示完成,但是要稍等一會才可以遠端操作
vultr_step5
雖然說 VULTR 支援 noVNC 這種 KVM,但我慣用終端機連線到 VPS 上
vultr_step6
登入方式是 ssh root@VPS 的網路位址 ,輸入管理密碼後以 root 權限登入

這邊要講一下,一樣是十鎂方案的話,Linode 跟 VULTR 的差異主要在頻寬跟 IP 位址上

首先是 VULTR 東京機房沒有 2TB XFER,只有 400GB XFER,不過兩家一樣都只算流出而不算流入(架設 VPN 的話,就是只算出 VPS 的流量,對於架設連線上是雙向流動的 VPN 服務來說是很大的優點),一樣的價格只買到五分之一的流量想必不是很好受,但買不到 Linode 的東京機房啊!日本國內流量不限的 VPS 廠商也限制日本國內購買而已(有綁定日本信用卡與住址、電話號碼),而且目前 VULTR 十鎂方案打折成八鎂,在更好的方案出現,或是 Linode 的新東京機房上線前,想買到日本地區 VPS 只能先用 VULTR,而亞馬遜的 AWS EC2 雖然說第一年給你免費(以 t2.micro 方案來說)試用,但限制一個月七百五十小時單位執行時間與 15GB 流量很容易就爆掉,而爆掉之後的 Amazon EC2 會瞬間變成日本地區 VPS 中最高昂的服務廠商,看到信用卡帳單你會崩潰

再來是 IP 位址的問題,不論是 Linode 或 Amazon EC2 服務,在建立 VPS 時就會發給你日本 IP,而 VULTR 由於所購買的 IP 位址區段是 Choopa.Inc 與 GameServer.com 等廠商共有(這三者某種程度上其實是一體的),因此會有一段時間會被判定成美國 IP,在 GeoIP 單位的資料庫更新之前基本上不會改變,而這個更新所需要的時間是個很曖昧的 過幾天 ,好一點可能一兩週以內就會更新,慘一點就是以月來計算了,不過這是網路架構的問題,無解

回到設定 PPTP 服務的話題,首先是安裝 PPTP 服務,指令是 sudo apt-get install pptpd ,其實以 root 登入的話可以不用打 sudo 啦,當初太累忘了,另外 root 是最高權限,作業時建議照表操課,不然會把系統炸掉,也建議安裝 fail2ban 這個套件來保護你的 VPS


vultr_step7
接著調整 pptpd.conf,輸入 sudo nano /etc/pptpd.conf
vultr_step8
進入 pptpd.conf 進行編輯,移到最下面
vultr_step9
設定 IP 位址,localip 192.168.2.25 是 VPS 內部出口,而 remoteip 192.168.2.1-20 則是提供給用戶連線
vultr_step10
Crtl+X 結束編輯,按下 Y 後直接 Enter 原檔案名稱存檔,接下來是 /etc/ppp/chap-secrets 這個檔案
vultr_step11
/etc/ppp/chap-secrets 用於連線帳號設定,用空格分開的分別是使用者帳號、服務名稱(預設 pptpd )、密碼與連線 IP
vultr_step12
接著是 /etc/ppp/options
vultr_step13
這裡可以看到服務名稱,就是用在 /etc/ppp/chap-secrets 中 #server 項目的那個
vultr_step14
/etc/ppp/options 進行 DNS 的設定,以較不容易被污染的 Google Public DNS 為設定
vultr_step15
sudo service pptpd restart 指令讓 PPTP 服務重新啟動
vultr_step16
接著會回送結果,OK 就是確認重新啟動
vultr_step17
再來是 /etc/sysctl.conf
vultr_step18
將該行的註解 # 刪去,啟動設定伺服端 IPv4 協定封包的繞送,讓使用者可以藉由 VPS 主機上網
vultr_step19
sysctl -p重啟
vultr_step20
確認回送 net.ipv4.ip_forward=1 則成功
vultr_step21
設定 Iptables ,編輯路由表以確認繞送規則
vultr_step22
參數 sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE ,繞送整個 PPTP 服務的封包
vultr_step23
但是上述參數重啟 VPS 的話會消失 所以要編輯 /etc/rc.local 建立基礎規則
vultr_step24
在 exit 0 前一行輸入 iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
vultr_step25
接著就可以登出了,不放心可以再讓 PPTP 服務重新啟動一次
aws_step39
再來就是本機端的 VPN 設定,這裡用隨邊一張擷圖作示範,伺服器位址填入 VPS 的 IP 位址,而帳戶、密碼就是剛才設定的那些

基本上這樣大費周章購買 VPS 來架設 VPN 有兩大優點,一是 VPN 是你自己的,管理權限在你自己手上,安全性方面只要不是你設定失誤或是軟體上的臭蟲,理論的安全性與可信任度是高於付費 VPN,更遑論免費的 VPN 服務,二是由少數幾個人一起租用同一台 VPS 運作 VPN 不只可以分攤費用,也可以避免大量使用者使用同一台 VPN 時被遊戲營運廠商列入黑名單的可能性

基本上安裝 Ubuntu 14.04 LTS 的 VPS 架設 PPTP VPN 的方式都是這樣,這種操作幾乎可以套用在任何以 Xen 技術運作的 VPS 上,而在安全性上,主機商預設給你的密碼應該都是強密碼,不過由於改 SSH 閘口工程浩大,因此建議用安裝 fail2ban 這個程式來防止惡意登入


vultr_noVNC2
話說 VULTR 有提供 noVNC 的 KVM 服務,不過 VPS 上的作業系統基本上都是靠終端機在跑,除非裝 X Window 圖形介面