2009-10-25

在Ubuntu上架VPN服務:PPTPD設定

其實這個任務在暑假老師就已經交給我,只是那個時候為了將實驗室伺服器的服務從windows環境移到Linux環境就已經花了不少時間,在最後處理VPN時又出了些問題,試過百百種方法都沒辦法而作罷了,想說之後有時間再弄。正巧最近茂伯資格考結束後老師又提及了這個東西,所以在茂伯的助力之下幫我搞定了,算是了了一樁心事!:D

當初遇到的問題是雖然區網外部可以登入伺服器,卻無法瀏覽區網內的資源。最後茂伯搞定後才知道有些地方是我弄錯以及網路上所寫的有些不完全正確,另外iptable也是問題之一。知道問題點就好辦啦!綜合了幾個網站的筆記,終於連線部份都可以正常連線了。將幾個比較需要注意的的地方筆記下來!

對於pptpd主要共有三個設定檔要設定:
/etc/pptpd.conf
  • localip 參數為本機伺服器的IP位址(設成網域名稱也可)。
  • remoteip 參數為本機伺服器要發給登入使用者的IP,例如:192.168.10.20-30表示登入的使用者會取得此範圍的其中一個IP,換句話說可以有10個使用者同時上線。必須為本機網段合法IP,所謂合法即是尚未使用的可使用IP。

/etc/ppp/pptpd-options
  • name 為本機伺服器的名稱驗證用,必須與chap-secrets中的第二個欄位相同。
  • ms-dns 連線時的DNS位址,可以有兩個以上。

/etc/ppp/chap-secrets
  • 第一欄,設定登入帳號。
  • 第二欄,伺服器名稱。必須與pptpd-options的name相同;若設為 *,與name不同也無妨。
  • 第三欄,設定登入的密碼。
  • 第四欄,要配給此帳號的IP位址。可指定為pptpd.conf中remoteip範圍內的其中一個IP;若設為 *,則表示由系統隨意配置remoteip範圍中的一個。

完成以上設定並連線後,可能會發生除了可以瀏覽伺服器的資源外,無法透過伺服器連線到其他(包含與伺服器相同網域或區網外)的資源。所以為了讓使用者的封包出去,必須修改/etc/sysctl.conf,找到下面這行取消註釋:
net.ipv4.ip_forward=1 #啟動IPv4封包的轉送
利用以下指令讓新的設定生效:
$ sudo sysctl -p

另外,安裝iptable並且加入規則:
$ sudo apt-get install iptables
$ sudo iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 47 -j ACCEPT
$ sudo iptables -A INPUT -p gre -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o eth0 -j
 MASQUERADE

$ sudo iptables -A FORWARD -s 192.168.0.0/16 -p tcp -m tcp --tcp-flags
 SYN,RST SYN -j TCPMSS --set-mss 1200


#上述192.168.0.0/16參數視網路環境而定。

為防止iptables的規則在下次重啟時被清除:
$ sudo iptables-save > /etc/iptables-rules
修改/etc/network/interfaces,在eth0的設定最後(在auto eth0前面)面加入:
pre-up iptables-restore < /etc/iptables-rules

--
Ubuntu 9.04
--
參考/相關網址:
1.linux流浪貓 - pptpd iptables配置
2.2008CNL03
3.Jamyy's Weblog: PPTP VPN實作
4.機娘調教日誌 << http404error
5.IT台灣郎: CentOS v5.2安裝PPTP Server
6.花兒開了 - 單網卡 Ubuntu 服務器打造 PPTP Server

1 comments:

匿名 提到...

感謝你的分享,解決了我最後的問題!

 

My Favorite Stuff

Akon - We Don't Care
(Official Music Video)

Official AKON Website
About AKON(from Wiki)

My Links

Blogger
Others

Blog Statistics