概要
以 PoPToP 在 Ubuntu 下架設 PPTP VPN 伺服器。這樣就可以透過 VPN 來幹很多事情,例如在公司連到家裡的 VPN 來上 MSN, 掛 PTT 之類的。或者存取遠端的網路芳鄰拿檔案。介紹
PPTP VPN 是許多 VPN 實現方法的其中一種,選擇它的原因是因為 Windows 已經內建 Client 端支援,可以直接進行 VPN 連線,不需安裝其他第三方軟體,最簡便。PPTP VPN 的連線過程中使用微軟 MPPE 128bit 加密。如果對安全性有非常大的需求 (例如 AES 256bit),建議使用其他解決方案,例如 OpenVPN。安裝方法
Ubuntu 套件 pptpd$ sudo apt-get install pptpd
非常簡單。
設定步驟
設定檔部分
- /etc/pptpd.conf這個檔案是設定 PoPToP 的伺服器設定。需要修改的在檔案最尾端的localip / remoteip設定。
localip 192.168.1.1
remoteip 192.168.1.234-238
localip 指的是伺服器端的 IP,可以用虛擬IP,一般來說也都是指定虛擬 IP。
remoteip 指的是使用者連線完成後所分到的IP位置。範例設定開放 234 ~ 238 共 5 個 IP 位置,可以給五個人同時使用,可視情況修改。
- /etc/ppp/chap-secrets
這個檔案主要是設定可登入的使用者帳號密碼。以下是範例:
需要留意的是 server 填的 pptpd,其實是在 /etc/ppp/pptpd-options 這個檔案內所定義的 name,預設就是 pptpd。# PPP CHAP secrets file. # See pppd(1) for file format. # Secrets for authentication using CHAP # client server secret IP addresses username pptpd password * # For ppp patched with smbauth you use # * pptpd &/etc/samba/smbpasswd *
而 secret 是明碼密碼,好在這個檔案權限是 600,只有 root 可以讀寫。
IP addresses 可以限制使用者登入時使用的 IP 位置,* 號代表不限,如果想限制使用者在特定IP區域才可登入,則可修改此設定。
系統部份
- 開啟 IPv4 Forward$ cat /proc/sys/net/ipv4/ip_forward
1
如果結果是 0,那你需要修改設定。開啟 /etc/sysctl.conf 檔案,找到這行刪除其註解字元#後存檔。
net.ipv4.ip_forward=1
重開機才有效果。若想立即見效,可以下這行指令:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables 防火牆部份
iptables 還需要做一點設定,才能順利將要求跟回傳的封包順利轉換及傳送。尤其是我們剛才分配了虛擬IP,要如何將這些要求給轉換是一件很重要的事情。在命令列輸入以下指令:
功能: 開放 PoPToP 監聽 TCP Port 1723 和 GRE 封包192.168.1.0/24 是剛才我設定 remoteip 的網段,如果位置不同記得修改。eth0 是對外連線的網卡介面,如果你的機器對外的介面不是 eth0 請自行修改。
$ iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
$ iptables -A INPUT -p gre -j ACCEPT
功能: IPv4 要求封包轉向及偽裝設定
$ iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
$ iptables -A FORWARD -d 192.168.1.0/24 -j ACCEPT
$ iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
修改完請記得作相關的規則儲存,不然重開機後這些規則又消失了。Ubuntu 有 iptables-save / iptables-restore 等相關程式可以做到,不懂或忘記的可以看一下鳥哥的 Linux 教學有關於 iptables 防火牆規則的教學。
重新啟動 PoPToP
執行下列指令:$ /etc/init.d/pptpd restart
檢查是否在背景運作,用 ps 程式來確認:
$ ps -ef|grep pptpd
root 1173 1 0 17:32 ? 00:00:00 /usr/sbin/pptpd root 3829 2839 0 21:32 pts/0 00:00:00 grep pptpd
檢查是否監聽 Port 1723:
$ netstat -an|grep 1723
tcp 0 0 0.0.0.0:1723 0.0.0.0:* LISTEN
使用端連線 (Windows XP 為例)
看個影片吧,雖然是英文版但大同小異,在控制台的網路連線新增 VPN 連線即可。設定完成後點兩下輸入之前設定的使用者帳號密碼,按連線就連上了,非常簡單。
而這也有微軟官方的文字教學:如何在 Windows XP Professional 中設定企業網路的 VPN 連線
疑難排解
如果遇到程式無法啟動,檢查一下 System Log (/var/log/syslog),看 Log 裡寫什麼,可能是設定檔寫錯了。如果啟動了,卻無法連線,一步步檢查到底是哪邊出問題:Diagnosing Forwarding on pptpd
按照步驟一步步檢查出到底是哪個網路設定出問題,再來排解。
參考資料
- Howto setup PPTP server (VPN) on Ubuntu 7.10 - SWiK- 在Ubuntu中配置可供Windows主机访问的VPN服务器_面朝大海,春暖花开
- Diagnosing Forwarding on pptpd
- PPTP VPN 實作 « Jamyy's Weblog
沒有留言:
張貼留言