[Raspberry_Pi]使用樹莓派,製作一台具有VPN(PPTP)無線網路路由器(Router)

Tse-Yao Wang
8 min readDec 23, 2018

--

最近不知為什麼,又開始研究起Router的VPN功能。老實說因為之前決定把家中原本的音樂來源之一Spotify,改為Youtube Music之後,就必須藉由VPN而不是Smart DNS的方式,才能在Google Home聽到Youtube Music。而我原本有一個旅行用的VPN無線網路路由器,所以可以暫時先充當家中主力的VPN無線網路路由器。不過我這台無線網路路由器TOTOLINK iPUPPY是旅行用的,真的沒有辦法負荷太大的流量,而且動作也是卡卡的,我就想這樣下去也不是辦法。但又考量到家中現成的Router已經有兩個了,而且好的Router不僅價格貴,體積也大,因此後來就把腦筋動到體積小、性價比高、功能又多的Raspberry Pi上,用Raspberry Pi來接替我舊的VPN Router。

Raspberry Pi不僅價格便宜,而且性能堪比一些功能不錯的Router,當然 Raspberry Pi不只可以做Router,還可以拿來做攝影監視器,甚至物聯網等其他應用。不過由於我只著重在網路Router功能,所以接下來就是我建立VPN Router的過程囉!

利用橋接的方式連結乙太網路和Wifi熱點

我在網路上有找到一篇利用橋接的方式連結乙太網路和Wifi熱點的文章,直接就是利用Bridge的方式,把eth0和wlan0用一個Br0連接起來。這樣的方式非常簡單,只需要安裝hostapd及bridge-utils套件,再參考以下網址教學,就可以完成一個無線網路路由器了。

但首先要先安裝hostapd及bridge-utils套件,請在命令列輸入

sudo apt-get update  
sudo apt-get install bridge-utils hostapd

另外,在命令列請輸入 sudo nano /etc/network/interfaces進行編輯

auto lo  
iface lo inet loopback
iface eth0 inet dhcp
auto br0
iface br0 inet dhcp
bridge_ports eth0 wlan0

然後把下列文字貼上,然後再按Crtl+X,再按Yes確認。
另外,在命令列請輸入 sudo nano /etc/hostapd/hostapd.conf進行編輯

interface=wlan0
driver=nl80211
bridge=br0
ssid=Network-Name
channel=1
wmm_enabled=0
wpa=1
wpa_passphrase=Network-Password
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0

另外,在命令列請輸入 sudo nano /etc/default/hostapd進行編輯
然後把

#DAEMON_CONF=""

換成

DAEMON_CONF="/etc/hostapd/hostapd.conf"

然後把下列文字貼上,然後再按Crtl+X,再按Yes確認。

然後就完成了,很簡單吧!假設你只是要做一個有線轉無線的Router,恭喜你,你已經完成了!

可是,說好的VPN呢?很抱歉!用這個方式只能把有線和無線網路連接起來,但是卻無法有效的把無線網路的流量導到PPTP(VPN協定的一種),所以你的無線網路一樣是沒有經過PPTP協定的,也就是你去看Sling TV或是聽Pandora的時候,就會告訴你你不在美國,你沒有辦法看/聽該網站的內容。

用Hostapd和DNSmasq建立VPN Router

經過前面的體認之後,才深刻發覺,要建立有wifi的VPN router別無他法,只能用Hostapd和DNSmasq這兩個套件(設定)來建立,可是大多數的網站教的我完全看不懂。直到我找到有人把這 Hostapd和DNSmasq的設定簡單化及圖像化,才解決了我沒有辦法好好設定Hostapd和DNSmasq的難關。
以下就是這個文章的教學。一開始先鍵入

wget -q https://git.io/voEUQ -O /tmp/raspap && bash /tmp/raspap

然後就會安裝圖形化的Hostapd和DNSmasq的設定介面。

以下是這個介面的默認配置:

IP address: 10.3.141.1
Username: admin
Password: secret
DHCP range: 10.3.141.50 to 10.3.141.255
SSID: raspi-webgui
Password: ChangeMe

接下來就要安裝pptp-linux套件,這樣才可以使用pptp的VPN。

sudo apt-get install -y pptp-linux

然後就要在/etc/ppp/peers/pptpconf建立pptpconf,也就是pptp的設定檔。

sudo nano /etc/ppp/peers/pptpconf  
//以下就是pptpconf設定檔的內容
pty "pptp vpnhostname --nolaunchpppd"
name vpnusername
password vpnpassword
remotename PPTP
require-mppe-128
require-mschap-v2
refuse-eap
refuse-pap
refuse-chap
refuse-mschap
noauth
persist
maxfail 0
defaultroute
replacedefaultroute
usepeerdns

接著請用指令開啟pptp連線。

sudo pon pptpconf

接下來就是自己設置配置規則。

// 開啟內核轉發:  
sudo nano /etc/sysctl.conf
// 找到下面兩行:
#Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
// 把net.ipv4.ip_forward 前面的#去掉,保存退出。
// 立即生效
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
// 設置路由映射規則
sudo iptables -t nat -APOSTROUTING -o ppp0 -j MASQUERADE
sudo iptables -A FORWARD -i ppp0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT
// 保存並添加到啟動加載
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
sudo nano /etc/rc.local
// 在 exit 0 前添加如下代碼:
sudo pon pptpconf
sudo iptables-restore < /etc/iptables.ipv4.nat

最後再鍵入sudo reboot重開機。

sudo reboot

如果沒有意外,重開機完成之後,你就建立了一個wifi名稱為raspi-webgui的熱點,而且可以是具有VPN的wifi熱點,就可以好好享受VPN的樂趣吧!

熱門文章:

[Chrome OS]使用Cloudready,讓你的舊電腦起死回生

[Virtual Credit Card虛擬信用卡]使用Neteller虛擬信用卡,讓你可以通過線上刷卡的地址檢查機制

[Skype]申請具有Skypein功能的Skype帳號,讓你擁有美國(外國)電話門號

[Kindle]讓你的Kindle也可以讀樂天書城(Kobo)的電子書

[Google Home]讓Google Home播放自己上傳的特定類型音樂(新增新版Youtube Music使用心得)

延伸閱讀:

树莓派3B+ VPN路由(PPTP、AP)- 宁静致远kioye — 來源:CSDN

How to setup PureVPN on Raspberry Pi

Setting up a wifi network on the pi 3 without the GUI

Setting up Wireless Access Point using Raspberry Pi

[Google Home]讓Google Home播放自己上傳的特定類型音樂(新增新版Youtube Music使用心得)

[VPN應用]如何利用VPN+Chromecast在電視上播放Pandora

--

--