自建 VPN PPTP 伺服器、節省 IT 成本
VPN 簡介 VPN (Virtual Private Network) 虛擬私人網路,簡單的說就是透過 Internet 建立一條 Point-to-point Protocol 連線,利用這個 PPP 與不在同一個網段的網路建立連線。再講白一點就是透過 Internet 加入私有網路,在企業典型的 Intranet 架 構中,也常遇到跨地區私有網路共享的問題,因此也常用這個方法解決網路資料傳輸與安全問題(因為 VPN 可以加密)。由於 VPN 直接透過 Internet 建立連線,可省下租專線的龐大費用,算是很超值的作法,而且標準的 PPTP 比那種需要安裝軟體的 VPN 好用太多了。
Step 1:CentOS 安裝 VPN Server (pptpd)
網路上有很多教學,但是都缺東缺西,今天介紹的設定方式經過實驗後可以在 Windows XP, Mac OS, Windows 7 順利連線,當然加密也是沒問題的。 今天教學用 CentOS 6.3 安裝 pptpd 套件,很可惜 CentOS 內建的官方套件沒有包括,所以我們只好自行下載 RPM File,網址與載點如下:
下載點:ftp://ftp.pbone.net/mirror/rpms.arrfab.net/centos/5/i386/pptpd-1.3.3-1.i386.rpm
Step 2:下載與安裝 pptpd
[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
Step 3:安裝好以後要修改以下設定檔,編輯 /etc/ppp/options:
vi /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
Step 4:再來編輯 /etc/ppp/options:
asyncmap 0
auth
crtscts
lock
hide-password
modem
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
noipx
Step 5:最後編輯 /etc/ppp/options.pptpd:
[root@server ~]# vi /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
Step 6:建立帳號密碼,修改 /etc/ppp/chap-secrets:
[root@server ~]# vi /etc/ppp/chap-secrets:
這個檔案與 pppoe 是共用的,用明文建立感覺很不安全!一行一行加入你要使用的帳號密碼,這些帳號在系統中可以不存在沒關係。
####### system-config-network will overwrite this part!!! (begin) ##########
####### system-config-network will overwrite this part!!! (end) ############
“username” pptpd “password” *
Step 7:開啟 Forward,主要是為了能夠進行 NAT,如果你不需要 NAT 也可以不要開,在大陸或國外會蠻好用的。
[root@server ~]# vi /etc/sysctl.conf
[root@server ~]# service network reload
如上,修改「net.ipv4.ip_forward = 1」讓開機後自動啟用 Forward。
Step 8:最後啟動 pptp 並且設定 pptpd 開機自動啟用。
[root@server ~]# chkconfig –level 345 pptpd on
[root@server ~]# service pptpd start
Step 9:順利啟動後就可以測試連線了,連線的過程中可以觀看 /var/log/message 與 /var/log/pptpd.log (剛有設定到) 來進行除錯,當有 VPN Client 連上後使用 ifconfig 可以看到建立的 PPP 連線。 如果只是下達 service pptpd stop 並不會將 PPP 斷線,若是要關閉 VPN Server 同時斷線那麼請輸入以下命令:
[root@server ~]# service pptpd restart-kill
Step 10: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
Step 11:Windows XP 建立 VPN 連線的方法:
Windows 雖然很簡單,還是介紹一下,請照著以下方式設定即可: 開啟「控制台」中的「網路連線」並點擊「新增連線精靈」,如下:
按下「下一步」。
選擇「連線到我工作的地方的網路」(有點饒舌)點選「下一步」。
選擇「虛擬私人網路連線」點選「下一步」。
輸入一個名稱,點選「下一步」。
選擇要連線的 Internet,點選「下一步」。
輸入伺服器位置 (不一定要 IP 也可以用 Hostname),點選「下一步」
選擇是否建立捷徑,點選「完成」
啟動後輸入帳號密碼直接「連線」即可
連不上或連上後有問題記得查閱 log
結論
以前筆者的 VPN Server 都是透過 Router 實作,買台便宜的 ASUS 520GU 刷 Dual Tomato 就可以擁有很多好用的功能。前陣子有礙 Router CPU 與 記憶體不夠用,這台功能強大的 NAT 已經被換掉,從此過著沒有 VPN 可以用的生活,最近真的需 要用到了,只好自己安裝與架設。
有別於低階硬體 + RouteOS 架設出來的 VPN,用 PC 速度更快連線數也多,更不怕加密拖累了 Router,目前試用的感覺還不錯,有需要的朋友們可以試看看。
「原文轉載:http://blog.toright.com」