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

Tse-Yao Wang
8 min readJan 23, 2019

--

一般市面上都找的到純的無線網路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的功能比較妥當。

熱門文章:

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

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

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

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

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

延伸閱讀:

[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

--

--