設定 Raspberry Pi 成為 3G Router 教學

利用 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

 

小結

DSC01068上圖為筆者的應用情境,利用Rapsberry Pi 作為 3G Router,IP CAM 則可以透過 Raspberry Pi 連上 internet,將影像上傳到 FTP server 或是其他地方。如此一來,僅要有一組 Power Supply 同時供給 DC12V 與 DC5V 給 IP CAM 與 Raspberry Pi,即可上傳即時影像了!

 

Reference

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *


8 + 七 =

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>