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 圖形介面

4 則留言:

  1. 您好, 想請問你 我照著你上面的設定去跑 連線上後 無法瀏覽網頁(無網路)
    後來我VPS的人幫我加了
    localadmin@ubuntu:~$ iptables -I INPUT -p tcp --dport 1723 -m state --state NEW -j ACCEPT
    localadmin@ubuntu:~$ sudo iptables -I INPUT -p gre -j ACCEPT
    localadmin@ubuntu:~$ sudo iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
    這之後就可以正常連線了
    但是我連上後很容易丟包 開遊戲一直卡在loading的畫面 我換其他付費VPN開啟就是正常的
    想請問這是VPS主機的問題嗎 還是哪邊出了錯
    感謝您

    回覆刪除
  2. 部屬 != 佈署 (deploy)

    回覆刪除