透過 pptpd 架設 VPN

這篇文章很久以前就想 post 了,不過因為距離上次安裝的細節太遙遠,而且幾經波折才裝起來,有些設定檔亂亂的不確定對不對,正好最近換了新的 Ubuntu 主機,測試了一下把過程記錄下來。
參考資料中大多是如何在 BuyVM 上架設 VPN,BuyVM 是同事介紹小蛙才知道的,他的在線率非常高、穩定度也不錯,而小蛙買的這個正是最熱門的方案,一年只要 $15 美金但相對的 RAM 只有 128 MB,對於一些比較大型的應用就沒有辦法了,雖然低規卻還是只要一空出來,馬上就又被搶光 … 小蛙把要裝的東西裝完之後發現記憶體根本已經爆掉 … 所以這台就當成小蛙好朋友阿年翻過大陸長城的 VPN Server 了。
當初會想架設 VPN 最大的原因是 Android Play Store 以前不開放台灣付費購買 app (現已經開放),既然 VPN 已經架了,就放著當作測試機 (有些情況下會需要外國的 IP 來做測試)。之前放在 BuyVM 時,在租屋處連線經常連不上,Google 出可能是虛擬 IP 造成的,小蛙測試的結果虛擬 IP 會造成無法連線,阿年在大陸原本的 ISP 是配虛擬 IP,後來換了實體 IP 後確定可以,公司的電腦也是實體 IP 連線沒問題!小蛙對於系統面的東西不怎麼熟悉,花了很長的時間也還是不知道怎麼解,有高手大大知道的話,可以留言教教小蛙 ><
上教學!

  1. 安裝 pptpd 套件
    1
    # apt-get install pptpd
  2. 設定 pptpd 要用的 IP 區段
    1
    2
    3
    4
    # vim /etc/pptpd.conf
    # 到最下面加入兩行
    localip 192.168.10.1
    remoteip 192.168.10.101-200
  3. 編輯 pptpd 一些設定
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    # vim /etc/ppp/pptpd-options
    name pptpd
    refuse-pap
    refuse-chap
    refuse-mschap
    require-mschap-v2
    require-mppe-128
    proxyarp
    lock
    nobsdcomp
    novj
    novjccomp
    nologfd
    ms-dns 8.8.8.8
    ms-dns 8.8.4.4
  4. 設定可登入的帳號密碼
    1
    2
    3
    4
    5
    6
    # vim /etc/ppp/chap-secrets
    # Secrets for authentication using CHAP
    # client   server      secret     IP addresses
    # 帳號名稱  服務名稱     密碼        IP
    bob       pptpd       1234       *
    alice     pptpd       abcd       *
  5. 開啟 IPv4 Forward 功能
    1
    2
    3
    # vim /etc/sysctl.conf
    # 解除註解,並把值設定成 1
    net.ipv4.ip_forward=1
  6. 讓剛剛的設定生效
    1
    # sysctl -p
  7. 設定 iptables
    1
    2
    3
    4
    5
    # iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
    # iptables -A INPUT -p 47 -j ACCEPT
    # iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 對外IP
    # 如果是用 BuyVM 要加下面這行
    # iptables -A FORWARD -i ppp+ -o venet0 -j ACCEPT
  8. 如果是用 VPS,要記得到 VPS 後台管理頁面把 TUN/TAP, PPP 功能開啟 (不確定,如果有的話就開啟)
  9. 儲存 iptables 設定
    1
    # iptables-save > /etc/iptables.rules
  10. 讓開機時自動載入 iptables 設定(否則剛剛的設定重開機後會失效喔)
    1
    2
    3
    4
    # vim /etc/rc.local
    # 在 exit 0 之前加入
    iptables-restore < /etc/iptables.rules
    exit 0
  11. 重新啟動 pptpd
    1
    # service pptpd restart
  12. 如果有發生問題的話,打開偵錯模式看看錯誤訊息
    1
    2
    3
    4
    5
    # vim /etc/ppp/pptpd-options
    # 把 debug 註解拿掉
    debug
    # 在這邊可以看到除錯訊息
    # tailf /var/log/debug
  13. 接著設定連線試試看, 設定方式請參考 Windows 設定 VPN 連線
  14. 連上之後可以到 這裡 看看 IP 是不是已經改變了!

參考資料

與 VPN 相關的文章

    2 個回應

    1. razc表示:

      为什么我照你的文档一步一步配置好后无论是电脑还是手机都无法连接vpn呢?电脑端连接显示806错误,但是能ping通,求解!

      • Hans表示:

        Dear razc:
        好友已不在大陸,這台 VPN Server 也已經撤掉,小蛙之前弄了半天遇到幾個無法連線的問題,但忘記是不是 806 了,供您參考看看:
        1. VPS 後台已把 TUN/TAP, PPP 設定打開,還要發 ticket 請對方處理。
        2. 每個 VPS 供應商可能會有不同的處理狀況。
        3. 所處的環境也有影響,例如IP分享器、虛擬IP … 等等,小蛙住家的 wifi 環境就是怎樣都無法連上。
        您可以連到參考資料 1 2 3 看看,小蛙是根據這三個教學設定起來的!祝您好運囉!

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料