Ubuntu架設VPN-PPTP伺服器
會寫這篇文章的原因,是因為自己看了Ubuntu官方VPN架設文件(PPTP Server),怎麼搞也搞不起來,只好裝回當前官網建議的最低版本Ubuntu 16.04 LTS再照著文件做一次,沒想到竟然就可以了,一步步追蹤後才發現rc.local根本沒有起來(某些網站還叫你去裝不需要重新安裝的ppp跟iptables...),只好基於Ubuntu 20.04 LTS再寫一篇記錄,以防日後失憶。
安裝Ubuntu 20.04 LTS
這個就不用多說了,自己去Ubuntu官網下載安裝Ubuntu伺服器版本,並且進去console後確認伺服器可以連接到WAN。
Step 1. 起來後第一次登入先用「sudo -i」切換到root身分,以免在那邊不斷sudo來sudo去煩死了(相當於Windows UAC機制)。
Step 2. 用「apt-get update」把該更新的套件都更新一下。
建立rc.local.service服務
也有人喜歡用「rc-local.service」這個名稱,無論如何,這個開機後自動執行script的機制不知道在Ubuntu的哪個版本被拔掉了(確定Ubuntu 16.04 LTS時期還有),總之就是要重建這個服務起來。
Step 3. 建立rc.local.service服務檔案
nano /etc/systemd/system/rc.local.service
-----
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
Step 4. 建立rc.local指令檔案
nano /etc/rc.local
-----
#!/bin/sh -e
exit 0
Step 5. 將rc.local轉換成可執行
chmod +x /etc/rc.local
Step 6. 開機自動啟用rc.local.service服務
systemctl enable rc.local
systemctl start rc.local
建立PPTP VPN服務
step 7. 安裝pptpd
apt-get install pptpd
step 8. 設定NAT IP分派位址
nano /etc/pptpd.conf
-----
localip 192.168.78.1
remoteip 192.168.78.100-200
step 9. 更改VPN後端的DNS Services
nano /etc/ppp/pptpd-options
-----
ms-dns 8.8.8.8
ms-dns 168.95.192.1
step 10. 設定PPTP VPN連線帳號密碼
nano /etc/ppp/chap-secrets
-----
YourAccount * YourOwnPassword *
step 11. 啟動一下服務看看又沒有錯,若沒有錯誤表示正常。
/etc/init.d/pptpd restart
step 12. 設定IP轉址。(如果沒有設定,會造成連上VPN後卻無法瀏覽WAN)
nano /etc/sysctl.conf
-----
net.ipv4.ip_forward=1
step 13. 重新載入網路設定。(可順便檢查一下IP轉址是否設定正常)
sudo sysctl -p
step 14. 將iptables指令插入至開機自動執行檔。(注意Ubuntu預設已將eth0網卡名稱轉換成ens33)
nano /etc/rc.local;記得將下列兩行插入在exit 0之前
-----
iptables -t nat -A POSTROUTING -s 192.168.78.0/24 -o ens33 -j MASQUERADE
iptables -A FORWARD -p tcp --syn -s 192.168.78.0/24 -j TCPMSS --set-mss 1380
step 15. 開機自動啟用PPTP VPN服務
systemctl enable pptpd.service
systemctl start pptpd
step 16. reboot,大功告成。
經過測試,使用Windows 10原生VPN連線程式,或者在Android手機原生VPN連線設定,都可以透過此VPN伺服器進行連線。