2019年1月1日 星期二

[Raspberry_Pi]使用樹莓派,做一個具有VPN功能的無線網路Repeater












一般市面上都找的到純的無線網路Repeater(延伸器或強波器),一個售價大概1000元左右,可以解決家中有些地方訊號不良的情形。後來在網路上也有找到一些用樹莓派做無線網路Repeater的文章。只是這些文章的「年齡」有些久遠,大部分都是使用Raspberry Pi Jessie的版本,然後搭配網友公認C/P值最高的Edimax EW-7822un無線網路adapter,再使用Edimax專用的無線熱點(Hotspot)驅動程式,搭建出一個具有接收wifi信號,然後再把接收的wifi資訊用Hotspot的方式傳出去。

我在使用之前的文章搭建無線網路Repeater的時候,一直卡在手機或是電腦明明就已經看到我搭建的Repeater的Hotspot,但是要連接的時候一直失敗。後來無意之間又在網路上找到一篇用Raspberry Pi Zero W搭建無線網路Repeater的文章,我才恍然大悟,原來只要使用Raspberry Pi Stretch(2017 NOV.版),Edimax的adapter就會自動被安裝,連Hotspot的驅動程式也一併裝好,使用者只要專注在指令上如何架構一個無線網路Repeater就好了,真的省了很多麻煩。

此外,用樹莓派做的無線網路Repeater,還可以自行增加VPN的功能,這是市面上幾乎所有無線網路Repeater都不可能有的功能,所以樹莓派在這方面還真的是無可挑剔的呢!

搭建樹莓派無線網路Repeater所使用的材料



Raspberry Pi 2 Model B(如果使用Raspberry Pi 3 就只需要準備一個Edimax ew-7822un)
Micro SD卡
電源供應器 5.3 V 2A
Edimax ew-7822un x 2


搭建Raspberry Pi無線網路Repeater的步驟



1.安裝Hostapd及DNSmasq套件
 sudo apt-get update 
sudo apt-get install hostapd dnsmasq -y

2.接著編輯/etc/dhcpcd.conf,在Wlan1設定固定IP
sudo nano /etc/dhcpcd.conf

把以下文字copy到設定文件(/etc/dhcpcd.conf)最下方,然後Ctrl+X存檔
interface wlan1
static ip_address=192.168.3.254/24
denyinterfaces wlan1

然後用sudo reboot重開機,用ifconfig檢查一下Wlan1是否已經發配到IP位置

3.用/etc/dnsmasq.conf設定DHCP伺服器
先重新命名設定文件為dnsmasq.conf.orig
sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig

建立新的dnsmasq.conf
sudo nano /etc/dnsmasq.conf

把以下文字copy到設定文件(/etc/dnsmasq.conf)最下方,然後Ctrl+X存檔
interface=wlan1
dhcp-range=192.168.3.1,192.168.3.20,255.255.255.0,24h


4.建立熱點
建立設定文件/etc/hostapd/hostapd.conf
sudo nano /etc/hostapd/hostapd.conf

把以下文字copy到設定文件(/etc/hostapd/hostapd.conf)最下方,把換成你的熱點名稱,例如pi2-ap,還有換成你的密碼,然後Ctrl+X存檔

interface=wlan1
hw_mode=g
channel=7
wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
ssid=network_name
wpa_passphrase=password

進入/etc/default/hostapd的設定文件
sudo nano /etc/default/hostapd

把以下文字copy到設定文件(/etc/default/hostapd)最下方
DAEMON_CONF="/etc/hostapd/hostapd.conf"


5.開啟Traffic Forwarding
建立設定文件/etc/sysctl.conf
sudo nano /etc/sysctl.conf

把文件中的
#net.ipv4.ip_forward=1

改成
net.ipv4.ip_forward=1


6.轉發規則(Forwarding Rule)設定
執行以下指令
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o wlan0 -j ACCEPT

儲存設定
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

編輯/etc/rc.local,讓下次開機時載入這些規則
sudo nano /etc/rc.local

把以下文字copy到設定文件(/etc/rc.local)文字exit 0的上方
iptables-restore < /etc/iptables.ipv4.nat


7.設定無線網路連線
編輯/etc/wpa_supplicant/wpa_supplicant.conf
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

把以下文字copy到設定文件(/etc/wpa_supplicant/wpa_supplicant.conf)最下方
network={
    ssid="network_name"
    psk="password"
    key_mgmt=WPA-PSK
}

換成家中無線網路熱點的名稱,把換成家中無線網路的密碼

8.重新開機

sudo reboot


加上PPTP VPN的功能


如果還要加上PPTP VPN的功能,只要先安裝pptp-linux套件,然後在設定文件(/etc/ppp/peers/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

然後再把步驟6.中的wlan0換成ppp0,再重新執行一次重開機就可以了
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o ppp0 -j ACCEPT


不過個人在用過之後發現無線網路Repeater加上VPN的功能時,網路會變得很卡,若是把VPN的功能取消掉,網路卡卡的感覺就會消失,看來無線網路Repeater加上VPN時的工作負荷很重。若是多人要使用無線網路Repeater的話,最好還是不要開啟VPN的功能比較妥當。

延伸閱讀:

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

Creating Wireless Router using Raspberry Pi Zero W

How do i make a VPN Router PPTP with Raspberry Pi2?

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

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

2018年11月1日 星期四

[WIN10]如何刪除WINDOWS 10中不必要的檔案+更新WINDOWS 10至1803版本








我之前有買了一台HP Stream 13吋的筆記型電腦,這台電腦當初賣的相當便宜,大約1萬左右,又加上附贈1年的Office 365,真的是划算至極!不過這部電腦有一個致命的缺點,就是容量太小,記憶體只有2GB,硬碟容量只有32GB!雖然這樣的容量對Chrome OS來說非常夠用,但是對於WINDOWS 8/10來說卻是捉襟見肘,基本上只要灌完Office和瀏覽器之後,大概就沒辦法再灌一些其他的軟體了,甚至有時候硬碟空間只剩下不到1GB!

雖然硬碟空間很小,但是對於日常的工作來說還算夠用,反正只要把資料放在隨身硬碟就好了。但是最近發現我的電腦提示我WINDOWS 10有重大的版本更新,而且我也覺得我的WINDOWS 10好像也跟別人的不一樣,因此就興起了要更新WINDOWS 10的念頭。但是,重點來了,我的電腦告訴我更新WINDOWS 10需要8GB的硬碟容量,可是我的電腦自從從WIN8升到WIN10之後,硬碟剩下的空間幾乎就是在1~2GB遊走,根本無法滿足更新的需求。

<刪除WIN10內不必要的檔案>


後來,我就在網路上找到了各種可以刪除WIN10內不必要的檔案的文章,我看過之後整理了一下,大致上可以分為幾個方面:

(1)刪除AppData內的檔案
這裡面的檔案,大致上都是一些應用程式的設定資料。如果裡面有一些應用程式你已經不用的話,就大膽的刪除吧!例如你已經把iTunes從你的應用程式刪除,那就可以把iTunes或是Apple的資料夾刪除,相信我,你會發現硬碟會突然多了很多空間。不過因為我急需硬碟空間,我就把這個資料夾裡的資料先備份起來,然後就全部刪了。刪了之後,我的硬碟大概多了2~3GB的空間。
AppData的位置大概是在C:\windows\users\your_username\AppData,要注意的是,AppData是隱藏檔案夾,記得要在檔案瀏覽器中勾選可以觀看隱藏檔案,才能看得到AppData這個資料夾。

(2) 刪除SoftwareDistribution之下的Download檔案夾內的檔案
這個令我很意外的檔案夾,我後來也是很狠心的把這個檔案夾裡的資料全部刪除。基本上我刪除後都還沒遇過問題,不過心臟不夠強的就…再看看囉!但是狠心也是有回報的,我刪了這個資料夾之後,馬上就多了接近4GB的空間,對一個只有32GB的電腦來說,這是一個非常划算的賭注!
這個資料夾的位置在C:\windows\SoftwareDistribution\download

(3)用Windows的磁碟清理工具
經過前面的大掃除之後,很有可能你只差個幾百MB就可以達成8GB的空間。接下來就是使用磁碟清理工具這個基本功了!也許能夠清出來的空間不多,但是能夠擠出個100~200MB也是不無小補。

(4)移除一些不用的app
如果還沒有達到8GB的空間,那接下來就必須狠心的移除一些app,尤其是經過前面這樣的努力之後,居然還差100MB!你一定會很不甘心的尋找硬碟中是否有自己不要的app,然後狠心的移除他們。

(5)把download檔案夾的檔案或自己存在電腦的檔案移出來
也許上一項的動作你平常就在做了,現在就是該把你存在電腦裡有的沒的檔案移出來的時候。或許把檔案宜出來之後,你會發現多出來的空間,會比你想像的還要多呢!

(6)把緩存(virtual memory)調到最小
如果真的還是差一點,就剩下另一個冒險的辦法了!就是想辦法去把緩存調到最小,但是就要冒著開網頁會常常當,開視窗會很慢的風險。以下是大概的步驟。

首先,打開傳統的windows control panel。接著,在control panel底下選擇all control panel items的模式,然後點選system選項。
之後,再點選Advanced system setting→System Properties。
再來,選擇Advanced→Performance,然後在Performance Options中選擇Advanced(到底是有多少個Advanced)。最後,在virtual memory的欄位點選changes,就可以調整virtual memory的大小了。


理論上,virtual可以調到只有200MB,但是最好不要這麼做。因為HP Stream 13的RAM只有2GB呀!若是沒有足夠的virtual memory會出很大的問題的!所以如果前面的做法已經可以幫你空出8GB的空間,那就不要進行這一步。

最後,我的電腦就在前面這些項目的折騰之後,空出了令我吃驚的10GB
話說回來,我原本真的不想條緩存,不過那時候真的只差100~200MB了,為了要空出8GB,只好拼了!結果經過幾次重開機後,我的電腦居然給我控出了10GB(暈)。

<用離線的方式更新Windows 10>

我後來發覺最好的更新方式試用離線的方式,只要想辦法要到合適的版本,就可以直接離線更新了。會想要離線更新也是因為我辛苦的空出8GB以上的空間之後,嘗試著要用線上更新的方式,可是每次都遇到奇奇怪怪的問題而使得更新終止,所以乾脆回到最原始的更新方式,也就是用ISO更新。ISO檔基本上只要用關鍵字『windows 10 1803 download』,應該就可以找到連結了。

接下來就是把下載下來的ISO檔案用滑鼠點擊兩下,你就會發現電腦就會把ISO檔掛載起來。掛載完成後,會出現一個檔案夾視窗,接著就是點選檔案夾視窗中的setup,就會進入安裝/更新的過程了。在安裝的時候,需要注意的地方是,必須準備一顆具有13GB以上空間的隨身碟,這樣才能確保在更新之後,你的一些app還有之前的設定都可以保存下來。但是如果你不在乎的話,也可以不要保存,只是這樣你之前的app跟設定就會全部洗掉了。


不過更新的過程時間非常的長,中途還會經歷幾次重開機,我這次更新基本上就是放著讓他跑,然後就去睡覺了。




最後,WINDOWS 10就這樣更新完成了!我覺得更新後的WIN10,感覺上比較會清理那些不用的/可以刪除的檔案,硬碟的空間也沒像上一個版本那樣窘迫了!


雖然花了很多的時間,很多的精神,還有冒著電腦無法開機的風險,但是能讓我這台1萬元的筆電重新恢復生機,在使用上也比之前版本的更加清爽,再次覺得這次的更新真的是值得的!


延伸閱讀: