zoukankan      html  css  js  c++  java
  • 用树莓派做3G无线路由器

    第一篇博客献给我做了很长时间的课程设计,也就是题目所说的3G无线路由器。本次开发所使用的开发平台为树莓派开发板,下面进入正题.....

    目标:将树莓派设置成为一个3G无线路由器,通过华为的E261拨号上网。

    工具:树莓派开发板,3G无线上网卡E261,无线网卡RT5370

     

    步骤:

    一、转换E261的模式

    1、查看连接的USB设备

    pi@raspberrypi ~ $ 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 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
    
    Bus 001 Device 005: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
    
    Bus 001 Device 006: ID 058f:6387 Alcor Micro Corp. Flash Drive
    
    Bus 001 Device 007: ID 12d1:1446 Huawei Technologies Co., Ltd. E1552/E1800/E173 (HSPA modem)

     

    最后一行的ID部分为E261的厂商号与设备号,此时的E261是相当于一个存储设备,必须进行模式转换,使其成为一个Modem设备

     

    2、安装usb_modeswitch

    pi@raspberrypi ~ $ sudo aptitude install usb-modeswitch

     

    3、修改配置文件

    pi@raspberrypi ~ $ sudo nano /etc/usb_modeswitch.conf

     

    在文件的最后加入以下内容:

    ########################################################
    # Huawei, newer modems
    
    DefaultVendor= 0x12d1
    DefaultProduct=0x1446
    
    TargetVendor= 0x12d1
    TargetProductList="1001,1406,140b,140c,1412,141b,1436,14ac"
    
    CheckSuccess=20
    
    MessageContent="55534243123456780000000000000011062000000100000000000000000000"

     

    4、重新插拔E261,再次执行lsusb

    pi@raspberrypi ~ $ 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 004: ID 148f:5370 Ralink Technology, Corp. RT5370 Wireless Adapter
    
    Bus 001 Device 005: ID 1a40:0101 Terminus Technology Inc. 4-Port HUB
    
    Bus 001 Device 006: ID 058f:6387 Alcor Micro Corp. Flash Drive
    
    Bus 001 Device 007: ID 12d1:1436 Huawei Technologies Co., Ltd.

     

    此时设备号已变为1436,表示转换成功。

     

    需要说明的是,若使用其他3G网卡,配置文件是不同的,自己Google

     

    二、下载安装pppsakis3gumtskeeper,实现拨号上网

     

    ppp软件包将建立基于点对点协议的守护进程,用于管理你和网络运营商之间的通信。sakis3g是一个用来拨号上网的脚本,它带有可交互的拨号界面,非常方便。umtskeeper是利用sakis3g来进行自动重连3g网络的。也可使用wvdial来拨号上网,

    使用命令 aptitude install wvdial 安装,它会同时安装ppp软件包。下面介绍的是前一种方法。 

    1、安装ppp

    pi@raspberrypi ~ $sudo apt-get install ppp

     

    2、为了便于管理,创建文件夹 umtskeeperumtskeepersakis3g都放在这个文件夹里。

    创建文件夹umtskeeper,并下载umtskeeper

    sudo mkdir umtskeeper
    cd umtskeeper
    sudo wget "http://zool33.uni-graz.at/petz/umtskeeper/src/umtskeeper.tar.gz"
    sudo tar -xzvf umtskeeper.gz
    sudo chmod +x umtskeeper

     

    Sakis3g官网已经挂了,不过还好有其他镜像可以下。

    sudo wget "http://downloads.sourceforge.net/project/vim-n4n0/sakis3g.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fvim-n4n0%2Ffiles%2F&ts=1363537696&use_mirror=tene~t" -O sakis3g.tar.gz
    sudo tar -xzvf sakis36.tar.gz
    sudo chmod +x sakis3g

    3、拨号上网

    sudo ./sakis3g --interactive "connect"  

     

    如下进入交互界面:

     

      

    (如拨号出现错误,建议重启下树莓派)

     

    输入APN的信息

     

      

    联通的APN3gnet,用户名和密码似乎可以随便填,我填的是userpass

     

    查看连接信息

    ./sakis3g connect info

     

    断开连接

    sudo ./sakis3g --interactive "disconnect" 

     

    4、设置开机自动拨号上网

    在步骤2中下载了umtskeeper,也可以用它调用sakis3g来联网,命令如下:

    sudo ./umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' 
    USBMODEM='12d1:1436' APN='CUSTOM_APN' CUSTOM_APN='3gnet' APN_USER='user' APN_PASS='pass'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --silent --monthstart 8 --nat 'no'

     

    将以上命令写入rc.local

    编辑rc.local

    pi@raspberrypi ~ $sudo nano /etc/rc.local

     

    将以下内容插入exit0这一行之前

    /home/pi/umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1436' APN='CUSTOM_APN' CUSTOM_APN='3gnet' APN_USER='user' APN_PASS='pass'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --silent --monthstart 8 --nat 'no'

     

    保存退出,下次便可实现开机启动拨号上网。

     

     

    三、创建无线AP

    1、配置无线网卡为固定ip地址

    输入命令

    sudo nano /etc/network/interfaces

     

    编辑网络配置文件

    找到这几行 注释掉,如下

    #allow-hotplug wlan0
    
    #iface wlan0 inet manual
    
    #wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    
    #iface default inet dhcp

     

    添加以下几行

    iface wlan0 inet static 
    
    address 192.168.10.1
    
    netmask 255.255.255.0

     

    这里需要说明的是  192.168.10.1是给raspberry pi 做的路由器分配的网关 ip这个不能跟局域网里其他路由网关ip重复

     

    2 安装hostapd

    Linux 下使用 hostapd 来建立无线 AP 服务
    输入命令,安装hostapd

    sudo apt-get install hostapd

    编辑hostapd 默认配置文件

    sudo nano /etc/default/hostapd


    找到

    #DAEMON_CONF= ""
    修改如下

    DAEMON_CONF="/etc/hostapd/hostapd.conf"
    编辑 hostapd 配置文件

    sudo nano /etc/hostapd/hostapd.conf

    加入如下内容

    # 把无线网卡wlan0 作为接入点
    
    interface=wlan0
    
    # 使用nl80211驱动
    
    driver=nl80211
    
    #共享网络的SSID是RaspberryPi
    
    ssid=RaspberryPi
    
    # 网卡工作在802.11G模式
    
    hw_mode=g
    
    #无线网卡选用11信道
    
    channel=11
    
    # WPA2 配置
    
    wpa=2
    
    #wpa密码是raspberry
    
    wpa_passphrase=raspberry
    
    #认证方式为WPA-PSK 加密方式为CCMP
    
    wpa_key_mgmt=WPA-PSK
    
    wpa_pairwise=CCMP 
    
    rsn_pairwise=CCMP
    
    beacon_int=100 
    
    auth_algs=3
    
    wmm_enabled=1

     

    保存退出
    输入命令

    sudo service hostapd restart


    重新启动hostapd 服务

     

    3.安装dhcp服务

    DHCP 服务用于给客户端分配动态 IP

    输入命令,安装dhcp服务

    sudo apt-get install isc-dhcp-server

    备份配置文件 

    sudo mv /etc/dhcp/dhcpd.conf  /etc/dhcp/dhcpd.conf.bak

    编辑新的配置文件

    sudo nano /etc/dhcp/dhcpd.conf

    复制粘贴以下内容

    default-lease-time 600;
    
    max-lease-time 7200;
    
    log-facility local7;
    
    subnet 192.168.10.0 netmask 255.255.255.0 {
    
      range 192.168.10.10 192.168.10.100;
    
      option routers 192.168.10.1;
    
      option broadcast-address 192.168.10.127;
    
      option domain-name-servers 8.8.8.8,8.8.4.4;
    
      default-lease-time 600;
    
      max-lease-time 7200;
    
    }

     

    保存退出

     

    修改isc-dhcp-server文件

    sudo nano /etc/default/isc-dhcp-server

     

    加入DHCP的配置文件路径和用作AP的接口这些参数

    DHCPD_CONF="/etc/dhcp/dhcpd.conf"

    INTERFACES="wlan0"

    重新启动服务

    sudo service  isc-dhcp-server restart

     

     

    4.配置路由转发

    到上面为止,其实我们已经建立了无线热点了,手机打开WiFi功能可以连上RaspberryPi这个热点,但还不能上网。原因在于无线 AP 并不负责数据交换,也就是通过客户端发送到无线 AP 的数据包还没法发送到其目标主机,自然也不会得任何响应。
    Linux 中完成数据包转发的是 iptables,它才是完成路由功能核心所在。

    在添加 iptables 转发规则前要先打开内核的 IP 转发功能:

    echo "1" > /proc/sys/net/ipv4/ip_forward

     

    上面的命令只是临时打开IP转发的功能,下次重启就会失效,要想不失效可以直接修改/etc/sysctl.conf这个系统配置文件

    sudo nano /etc/sysctl.conf

     

    找到这里

    #net.ipv4.ip_forward=1

     

    将前面的注释符号#去掉

    保存退出
    输入命令 

    sudo sysctl -p

     

    让该设置立即生效

     

    下面是关键的部分,设置IP转发规则,

    sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    
    sudo iptables -A FORWARD -i ppp0 -o wlan0 -j ACCEPT
    
    sudo iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT

     

     

    ppp0是3G网卡接口,MASQUERADE表示数据包伪装,路由器内部的数据通过这个接口发送出去或者外部的进来。如果有以太网口的话,将ppp0改为eth0可以在这个以太网口实现转发,也就是实现普通无线路由器的功能。

     

    保存IP转发规则

    sudo bash
    
    iptables-save > /etc/iptables.up.rules
    
    Exit

     

    输入命令

    sudo nano /etc/network/if-pre-up.d/iptables


    把下面两行复制粘贴到编辑窗口

    #!/bin/bash
    
    /sbin/iptables-restore < /etc/iptables.up.rules


    保存退出

     

    至此,3G路由器的配置工作已全部完成,输入

    sudo reboot

     

    重启树莓派,可搜索到RaspberryPi的无线信号,连接上后就可以上网。

     

    --------------------------------

    转载请注明出处(毕竟google了许多资料,英文的帖子都看了一大堆)

  • 相关阅读:
    typescript
    pyqt5窗口跳转
    pyqt5 列表内添加按钮
    C#窗体最大化,其他控件调整
    C#禁止程序重复打开
    C#添加 mysql.data.dll
    宝塔一键ssl
    宝塔Linux面板 使用阿里云OSS备份数据
    CentOS7使用firewalld打开关闭防火墙与端口
    使用babel编译es6
  • 原文地址:https://www.cnblogs.com/Jasonsblog/p/3757835.html
Copyright © 2011-2022 走看看