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

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