1 需求及環境
學校的教務管理系統需要宿舍內網才能登錄,使用外網無法訪問。
打算把樹莓派部署在宿舍並搭建一個VPN服務器供我連接以便訪問教務管理系統。
樹莓派通過有線連接到宿舍路由器,路由器撥號訪問網絡。
2 必要軟件安裝
我們需要用到ppp pptpd這2個軟件
sudo apt-get install ppp
sudo apt-get install pptpd
3 配置pptpd
3.1 設置ppp連接的ip
編輯文件/etc/pptpd.conf,在文件末尾添加:
localip 192.168.1.100
remoteip 192.168.1.101-120
localip表示服務器在客戶端處的ip
remoteip表示給客戶端分配的ip段
此處建議ip段與樹莓派所在的內網ip段相同,但是ip地址不要有任何沖突。
3.2 設置DNS及WINS
編輯文件/etc/ppp/pptpd-options,在文件末尾添加:
ms-dns 192.168.1.1
ms-wins 192.168.1.100
ms-dns表示vpn連接內的dns地址,此處應該填寫路由器的內網地址
ms-wins表示要在網上鄰居中顯示的設備的ip,此處我填寫了樹莓派的ip
4 配置ppp
4.1 設置VPN的連接憑證
編輯文件/etc/ppp/chap-secrets,添加用戶,一行一個:
# Secrets for authentication using CHAP
# client server secret IP addresses
用戶名 * 密碼 *
至此VPN已經可以連接了,但是只能訪問內網。如果需要訪問internet,則需要繼續配置轉發規則。
5 啟用ip轉發
編輯文件/etc/sysctl.conf,去掉下面語句前的#
net.ipv4.ip_forward=1
執行
sudo sysctl -p
使修改生效。
現在VPN已經可以正常連接,但是部分網站無法正常訪問。
6 修改默認MTU
通過ifconfig可以看到,因為與peer協商出來的MTU值為1396,我們需要將MTU的值設置為1496才能順利訪問所有網站。
網上搜索到的修改MTU的方法有這兩種:
1.通過iptables設置防火牆規則。
2.通過編輯ip-up相關文件實現有新連接后自動執行ifconfig指定MTU。
雖然這兩種方法可行,但卻是間接實現,考慮應該可以直接通過ppp配置文件來指定MTU,果然找到了辦法。
編輯文件/etc/ppp/options,在文件中的相應位置或者直接在文件末尾添加:
-mru
mru 1496
第一句的意思是關閉與另一方的MRU協商,不寫這句話則第二句話無效(最終MTU值會被協商結果覆蓋)
第二句的意思是設置默認MRU值為1496,不寫這句話則默認MRU值1500
再次執行ifconfig命令,可以看到MTU已變為1496,所有網站也已能正常訪問。
7 重啟pptpd
sudo service pptpd restart
大功告成,我們的VPN即可正常使用。
8 iptables設置(其他環境)
在VPS上用上述方法搭建后能連接成功卻不能正常訪問網絡,需要配置iptables,運行下面的命令:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
由於VPS網卡的ip地址是內網地址,該命令的作用是通過MASQUERADE地址偽裝進行POSTROUTING源地址轉換,將源地址從內網地址轉換成公網地址后才能正常訪問網絡。
