利用 Raspberry Pi 作為 WiFi AP 或是 Bridge 的例子並不少,但有時在戶外沒有 WiFi 或是實體網路線,只能透過 3G 行動網路連接 Internet。此篇旨在介紹使用 Raspberry 透過 3G 行動上網並且經由 Ethernet 分享給其他裝置使用,成為一個 3G Router。
確認 USB 3G dongle 已連接
本篇使用的 USB 3G dongle 是對岸華為的 E173,是目前在市面上少數僅存的 USB 3G dongle,多數都已被 3G to WiFi gateway 替代。也可以參考其他網友已經於樹梅派上使用成功的3G網卡清單。
$ lsusb Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 005: ID 0461:4e04 Primax Electronics, Ltd Bus 001 Device 008: ID 12d1:1436 Huawei Technologies Co., Ltd.
安裝必要套件
先行安裝 sakis3g 後續會使用到的套件與 DHCP server。
$ sudo apt-get install libusb-1.0-0-dev ppp sub_modswitch $ sudo apt-get install isc-dhcp-server
連接 3G 網路
承襲舊有的行動網路架構,連接 3G 網路依然要使用 pppd 下達 AT command 等方式進行連接,但透過 sakis3g 可以幫助我們以便捷的方式來完成連線,
$ wget "http://raspberry-at-home.com/files/sakis3g.tar.gz" $ tar -zxvf sakis3g.tar.gz -C . $ sudo chmod +x sakis3g
sakis3g 提供一個互動式介面可以分別輸入 APN, username, password 等資訊
$ sudo ./sakis3g --interactive
或是直接從 cli 代參數執行,以中華電信為例,APN 為 internet,username 與 password don’t care,任意輸入即可。若使用其他 3G dongle USBMODEM 選項需要填入該產品之 VID:PID
$ sudo ./sakis3g connect USBINTERFACE=0 APN=internet APN_USER="cht" APN_PASS="cht" OTHER="USBMODEM" USBMODEM="12d1:1436" E173 connected to Chunghwa Telecom (46692). $ ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:100.116.143.219 P-t-P:10.64.64.64 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:11 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:358 (358.0 B) TX bytes:409 (409.0 B)
於此,已完成 3G 連線,得到一個 ISP 提供之 100.116.143.219 private IP。
若需斷線可以執行
$ sudo ./sakis3g disconnect
或是以往習慣的
$ sudo ifconfig ppp0 down
設定 DHCP Server
修改 /etc/dhcp/dhcpd.conf 設定 DHCP Server。於檔案最後加入以下參數:
subnet 192.168.10.0 netmask 255.255.255.0 { # 子網域與遮罩 range 192.168.10.10 192.168.10.20; # DHCP 配發的範圍 IP 範圍 option broadcast-address 192.168.10.255; # 廣播位置 option routers 192.168.10.1; # gateway 位置,也就是 Raspberry Pi 的 IP 位置 default-lease-time 600; # DHCP 租約時間 max-lease-time 7200; option domain-name "rpi-network"; option domain-name-servers 168.95.1.1, 8.8.8.8; # DNS 位址 }
指定 eth0 介面作為 DHCP server 回應的介面,檢查 /etc/default/isc-dhcp-server 之內容,指定 DHCP Server 回應介面:
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACES="eth0"
啟動 DHCP server 並加入開機自動執行程序
sudo service isc-dhcp-server start sudo update-rc.d isc-dhcp-server defaults
設定 NAT
這邊設定 Raspberry Pi 做簡易的封包偽裝(Masquerade)與 IP forward 功能,達到簡單的NAT功能。
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" sudo iptables -t nat -A POSTROUTING -j MASQUERADE
小結
上圖為筆者的應用情境,利用Rapsberry Pi 作為 3G Router,IP CAM 則可以透過 Raspberry Pi 連上 internet,將影像上傳到 FTP server 或是其他地方。如此一來,僅要有一組 Power Supply 同時供給 DC12V 與 DC5V 給 IP CAM 與 Raspberry Pi,即可上傳即時影像了!
Reference
- 3G Internet on Raspberry Pi – Success!
- Installing 3G Modem
- How-to: Turn a Raspberry Pi into a WiFi router
- Raspberry Pi and Routing: Turning a Pi into A Router
Hi, very nice website, cheers!
——————————————————
Need cheap and reliable hosting? Our shared plans start at $10 for an year and VPS plans for $6/Mo.
——————————————————
Check here: https://www.reliable-webhosting.com/