2015-06-08

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

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

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

目前我選擇的 VPS 廠商是 VULTR,這家廠商也有提供位在東京機房的單位,且除了信用卡之外,還支援 PayPal 與虛擬貨幣儲值



註冊後首先是儲值,藉由舊客戶邀請的方式可以獲得五鎂的獎勵,而舊客戶邀請新客戶也可以獲得獎勵

接著選擇部屬 VPS 單位

選擇 VPS 單位的規格,由於 VULTR 在各地機房規格的關係,如東京機房不會給你 2TB 流量

部屬後會進行安裝,大約三十秒就會顯示完成,但是要稍等一會才可以遠端操作

這邊要講一下,一樣是十鎂方案的話,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 服務前,建議安裝 fail2ban 這個套件來保護你的 VPS

我們先來安裝 fail2ban

Install fail2ban

sudo apt-get update
sudo apt-get install fail2ban -y

Backup fail2ban configuration

sudo service fail2ban stop
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Editing fail2ban configuration

sudo cd /etc/fail2ban/
sudo vim jail.conf

Editing following configuration

bantime = 600
maxretry = 3

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s

Start fail2ban service

sudo /etc/init.d/fail2ban start
view raw VULTR-Setup1.md hosted with ❤ by GitHub

接著是 PPTP 服務本身

Install PPTP

sudo apt-get install pptpd -y

Backup PPTP configuration

sudo cp  /etc/pptpd.conf  /etc/pptpd.local

Editing PPTP configuration

sudo cd /etc
sudo vim pptpd.conf

Add following configuration at the bottom of the configuration

localip 192.168.2.25
remoteip 192.168.2.1-5

localip is your VPS internal exit remoteip is for VPN connect

Backup PPTP Server configuration

sudo cp  /etc/ppp/chap-secrets  /etc/ppp/chap-secrets.local

Editing PPTP user configuration

sudo cd /etc/ppp
sudo vim chap-secrets

Add following users configuration like this

user01 pptpd password01 192.168.2.1
user02 pptpd password02 192.168.2.2
user03 pptpd password03 192.168.2.3
user04 pptpd password04 192.168.2.4
user05 pptpd password05 192.168.2.5

Editing PPTP Server configuration

sudo vim options

check following configuration like this

name pptpd
ms-dns 8.8.8.8
ms-dns 8.8.4.4

Start fail2ban service

sudo service pptpd restart
view raw VULTR-Setup2.md hosted with ❤ by GitHub

再來是系統上的設定

Network configuration

sudo cd /etc/
sudo vim sysctl.conf

Editing Network configuration

sudo cd /etc
sudo vim pptpd.conf

Editing following configuration

net.ipv4.ip_forward=1

Restart service

sudo sysctl -p

It will echo

net.ipv4.ip_forward=1

Editing Iptables

sudo vim Iptables

Add following configuration

sudo iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

Iptables configuration will reset after reboot, so editing rc.local

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

add this before exit 0

view raw VULTR-Setup3.md hosted with ❤ by GitHub

接著就可以登出了,不放心可以再讓 PPTP 服務重新啟動一次

再來就是本機端的 VPN 設定,這裡用擷圖作示範



伺服器位址填入 VPS 的 IP 位址,而帳戶、密碼就是剛才設定的那些

基本上這樣大費周章購買 VPS 來架設 VPN 有兩大優點

  • VPN 是你自己的,管理權限在你自己手上,安全性方面只要不是你設定失誤或是軟體上的臭蟲,理論的安全性與可信任度是高於免費的 VPN 服務

  • 少數幾個人一起租用同一台 VPS 運作 VPN 不只可以分攤費用,也可以避免大量使用者使用同一台 VPN 時被遊戲營運廠商列入黑名單的可能性


基本上安裝 Ubuntu 14.04 LTS 的 VPS 架設 PPTP VPN 的方式都是這樣,這種操作幾乎可以套用在任何以 Xen 技術運作的 VPS 上



話說 VULTR 有提供 noVNC 的 KVM 服務,不過 VPS 上的作業系統基本上都是靠終端機在跑

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)

    回覆刪除