緣起:
幾個禮拜前,為了搭配 Dlink
的監視器,我再申請了一個中華電信的門號,然後配上 Dlink 的 4G LTE Wifi
分享器來分網際網路
我家的垃圾有線網路可以蛋調了,還是 PPPoE,下載速度
2M,上傳速度 200 Kb 左右,而且還很不穩。
啊,這跟我的 Raspberry Pi
有什麼關係呢?我需要先解釋個。
情境:
我家布局差不多是這樣子,還有幾個小房間沒畫出,但無傷大雅。我平常都待在電腦房敲鍵盤,我大部份的網路設備、電腦都放在那邊
先說放客廳的 Dlink 4G LTE Wifi 分享器
可以看到,在小巷的那台,跟 Wifi
分享器隔比較多牆,而且距離也蠻遠的,雖然不是說完全連不到,但會有斷線的狀況發生,曾斷過兩次。所以我後來有多買了一個
wifi 訊號增強器放在廚房,專門給它用。
我是把另一台 Dlink 4G LTE Wifi
分享器放在置物房那間,靠近天花板,這樣訊號才比較好
這台 Wifi 分享器使用的是我手機的 SIM 卡,我外出時會把它拔起來,畢竟在外頭需要網路。所以,每當我外出時,我電腦房的設備就會處於斷網的狀態,要等我回家後,重新把 SIM 卡從手機中拔出,再裝回 Wifi 分享器後,設備才會恢復連線。
重新拔裝 SIM
卡有些小不方便,都需要搬椅子去處理,有時工作完回來很懶,會懶得去做這事,但電腦又需要網路,怎麼辦呢?
那台 ASUS Wifi
延伸器的訊號,在我電腦房也能收到,所以我就打算讓 Raspberry Pi
連上它,讓它成為置物房那台 Wifi 分享器 SIM
卡被拔起後的備用網路。
Usb Wifi Adapter:
一開始最直覺想到的是,買個 Usb Wifi 網卡給 Pi
用,但碰上蠻多問題的,在台灣方便買得到的 Usb Wifi 網卡,大部份在 Pi
上都不支援。我在購買前有先問 GPT 個,問他說有什麼牌的 Usb Wifi
網卡是可以給 Pi 隨插即用的,看到它有提到 TP-Link Archer T2U
Plus,我當下就趕緊跑去燦昆買了一支回來
安裝必要的套件
sudo apt update
sudo apt install -y dkms git build-essential raspberrypi-kernel-headers
安裝驅動
git clone https://github.com/aircrack-ng/rtl8812au.git
cd rtl8812au
sudo make dkms_install
大概這樣 (好像還有做一個步驟,但我想不起來),等它 compile 跟
install,好了之後重開機,然後下
dkms status
可以看到有驅動了,這時也能透過 UI 來控制 Usb Wifi 網卡連網路。事情到這裡就結束了嗎?NOPE,靠腰,那 Wifi 不時斷線,而且還時常有連不上 2.4 G 網路的情況,氣死我了,最後放棄使用,轉 planB
Plan B:
Plan B 就是再使用一個 Wifi 延伸器,用它連上那台 ASUS Wifi
延伸器延伸的 Wifi,然後 Raspberry Pi 使用 Usb to Ethernet
轉接器,用網路線連上 Wifi 延伸器,完美,這樣就不用再搞那個北七的 Usb
Wifi 驅動了。
自動切換路由:
ip route 本身沒有自動切換路由的功能,所以要自己個 script 搭配
service 來定時檢查,如果預設網路連線 (wlan0)
有通的話,保持,沒通的話切到備用的網路。
新增 script
sudo vim /usr/local/bin/auto-route.sh
內容
#!/bin/bash
PRIMARY_IF="wlan0"
PRIMARY_GW="192.168.1.1"
BACKUP_IF="eth1"
BACKUP_GW="192.168.2.1"
if ping -I $PRIMARY_IF -c 2 8.8.8.8 > /dev/null 2>&1; then
ip route replace default via $PRIMARY_GW dev $PRIMARY_IF metric 100
else
ip route replace default via $BACKUP_GW dev $BACKUP_IF metric 100
存好後要下指令 sudo chmod +x
/usr/local/bin/auto-route.sh 讓 script 有執行的權限,再來建立
systemd service
sudo vim /etc/systemd/system/auto-route.service
內容
[Unit]
Description=Auto Route Switcher
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/auto-route.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
存好後,啟動服務,就 OK 了
sudo systemctl enable auto-route.service
sudo systemctl start auto-route.service
每 10 秒透過 wlan0 介面 ping
8.8.8.8 的 google dns 主機,看成功與否來切換 ip route default。



.jpg)








.jpg)
沒有留言:
張貼留言