顯示具有 wifi_router 標籤的文章。 顯示所有文章
顯示具有 wifi_router 標籤的文章。 顯示所有文章

2018年12月1日 星期六

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











最近不知為什麼,又開始研究起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的樂趣吧!


延伸閱讀:

树莓派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