fbpx

在 Linux 安裝 VPN Server 教學 (pptpd on CentOS)

VPN 簡介

VPN (Virtual Private Network) 虛擬私人網路,簡單的說就是透過 Internet 建立一條 Point-to-point Protocol 連線,利用這個 PPP 與不在同一個網段的網路建立連線。再講白一點就是透過 Internet 加入私有網路,在企業典型的 Intranet 架構中,也常遇到跨地區私有網路共享的問題,因此也常用這個方法解決網路資料傳輸與安全問題(因為 VPN 可以加密)。由於 VPN 直接透過 Internet 建立連線,可省下遷專線的龐大費用,算是很超值的作法,而且標準的 PPTP 比那種需要安裝軟體的 VPN 好用太多了。

CentOS 安裝 VPN Server (pptpd)

網路上有很多教學,但是都缺東缺西,今天介紹的設定方式經過實驗後可以在 Windows XP, Mac OS, Windows 7 順利連線,當然加密也是沒問題的。

今天教學用 CentOS 6.3 安裝 pptpd 套件,很可惜 CentOS 內建的官方套件沒有包進來,所以我們只好自行下載 RPM File,網址與載點如下:

網址:http://rpm.pbone.net/index.php3/stat/4/idpl/12353571/dir/centos_other/com/pptpd-1.3.3-1.i386.rpm.html

載點:ftp://ftp.pbone.net/mirror/rpms.arrfab.net/centos/5/i386/pptpd-1.3.3-1.i386.rpm

下載與安裝 pptpd

[root@server ~]# yum install libc.so.6 libwrap.so.0
[root@server ~]# wget ftp://ftp.pbone.net/mirror/rpms.arrfab.net/centos/5/i386/pptpd-1.3.3-1.i386.rpm
[root@server ~]# rpm -ivh pptpd-1.3.3-1.i386.rpm

安裝好以後要修改以下設定檔,編輯 /etc/ppp/options

[root@server ~]# vim /etc/pptpd.conf

加入以下設定

# 設定檔位置
option /etc/ppp/options.pptpd

# 開啟 debug (會寫到 /var/log/message) 測試完記得關閉
debug

# 連線數
connections 20

# ppp 主機的 IP 不一定要與目前的 Server ip 相同,主要是告訴給 Client 作為 Default Route
localip 192.168.16.253

# Client 連上後會分配的 IP Range
remoteip 192.168.16.160-180

再來編輯 /etc/ppp/options

[root@server ~]# vim /etc/ppp/options

加入以下參數,大部分都看不懂,所以也沒辦法說明囉.......-_-

asyncmap 0
auth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx

最後編輯 /etc/ppp/options.pptpd

[root@server ~]# vim /etc/ppp/options.pptpd

加入以下設定

name pptpd

# 與連線加密相關的設定
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
nobsdcomp

# 設定要分派的 DNS Server
ms-dns 168.95.1.1
ms-dns 139.175.10.20

# 指定 logfile
logfile /var/log/pptpd.log

# 設定閒置幾秒後自動斷線
idle 7200

建立帳號密碼,修改 /etc/ppp/chap-secrets

[root@server ~]# vim /etc/ppp/chap-secrets

這個檔案與 pppoe 是共用的,用明文建立感覺很不安全!一行一行加入你要使用的帳號密碼,這些帳號在系統中可以不存在沒關係。

####### system-config-network will overwrite this part!!! (begin) ##########
####### system-config-network will overwrite this part!!! (end) ############
"username" pptpd "password" *

開啟 Forward,主要是為了能夠進行 NAT,如果你不需要 NAT 也可以不要開,在大陸或國外會蠻好用的。

[root@server ~]# vim /etc/sysctl.conf
[root@server ~]# service network reload

如上,修改「net.ipv4.ip_forward = 1」讓開機後自動啟用 Forward。

最後啟動 pptp 並且設定 pptpd 開機自動啟用

[root@server ~]# chkconfig --level 345 pptpd on
[root@server ~]# service pptpd start

順利啟動後就可以測試連線了,連線的過程中可以觀看 /var/log/message 與 /var/log/pptpd.log (剛有設定到) 來進行除錯,當有 VPN Client 連上後使用 ifconfig 可以看到建立的 PPP 連線。

如果只是下達 service pptpd stop 並不會將 PPP 斷線,若是要關閉 VPN Server 同時斷線那麼請輸入以下命令:

[root@server ~]# service pptpd restart-kill

VPN 防火牆與 NAT 設定

由於我習慣防火牆都是使用白名單策略,因此需要加入以下 Rules:

# 開啟 forward 這樣才能將 VPN 網段與私有網段進行封包路由傳遞
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
# 開啟 VPN 連線
iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 1723 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -A OUTPUT -p gre -j ACCEPT
# 開啟 NAT
iptables -A FORWARD -i ppp+ -j ACCEPT
iptables -A FORWARD -o ppp+ -j ACCEPT
iptables -A POSTROUTING -t nat -o ppp+ -j MASQUERADE

Windows XP 建立 VPN 連線的方法

Windows 雖然很簡單,還是介紹一下,請照著以下方式設定即可:

開啟「控制台」中的「網路連線」並點擊「新增連線精靈」,如下:

winxp-pptp-1

按下「下一步」

winxp-pptp-2

選擇「連線到我工作的地方的網路」(有點饒舌)點選「下一步」

winxp-pptp-3

選擇「虛擬私人網路連線」點選「下一步」

winxp-pptp-4

輸入一個名稱,點選「下一步」

winxp-pptp-5

選擇要連線的 Internet,點選「下一步」

winxp-pptp-6

輸入伺服器位置 (不一定要 IP 也可以用 Hostname),點選「下一步」

winxp-pptp-7

選擇是否建立捷徑,點選「完成」

winxp-pptp-2

啟動後輸入帳號密碼直接「連線」即可

winxp-pptp-9

連不上或連上後有問題記得查閱 log

結論

以前我的 VPN Server 都是透過 Router 實作,買台便宜的 ASUS 520GU 刷 Dual Tomato 就可以擁有很多好用的功能。前陣子有礙 Router CPU 與 記憶體不夠用,這台功能強大的 NAT 已經被換掉,從此過著沒有 VPN 可以用的生活,最近真的需要用到了,只好自己安裝與架設。

有別於低階硬體 + RouteOS 架設出來的 VPN,用 PC 速度更快連線數也多,更不怕加密拖累了 Router,目前試用的感覺還不錯,有需要的朋友們可以試看看。

其他 VPN SaaS 服務

參考資料

  8 comments for “在 Linux 安裝 VPN Server 教學 (pptpd on CentOS)

發佈留言