查看: 3228|回复: 0

DIY 香蕉派BPI 路由器完整方案[有线+无线]

[复制链接]
  • TA的每日心情
    开心
    2014-11-19 16:40
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2014-11-19 10:06:32 | 显示全部楼层 |阅读模式
    分享到:
    方案说明:
          拿到香蕉派的路由器版本(r1)已经有一段时间了,但是因为硬件兼容性等问题,所以还没能折腾成功。目前可以使用的是官方提供的两个镜像——openwrt和定制的安卓系统。而我的目标是定制一个香蕉派的路由器系统。不要openwrt,因为它是为常规的路由设计的迷你系统,为了能够把系统塞进普通路由器那可怜的rom里面而做了裁剪,而这些问题在拥有sata接口的香蕉派上根本不是问题。
    鉴于bpi和bpi-r1在大部分硬件和软件环境兼容的情况下,为了尽早完成我的机会,我准备在bpi上先进行探索和开发,等到r1板子的硬件兼容等问题解决后,便可以很方便的移植到r1路由器板子上。
    注释: bpi 即香蕉派的普通版本(下左图)  ; 文中提到的r1即 bpi-r1,是基于bpi的基础上扩展的可用做路由器的版本。(下右图





    方案目标:
    基于bpi构建一个完整的无线路由器功能。bpi自带网口连接局域网(可通过交换机支持多台设备),一个usb无线网卡作为无线AP,另外接一个usb有线网卡连接猫或者外网。一般家庭上网使用的最多是20M光纤,usb百兆有线网卡足以,所以我们把usb有线百兆连接外网,而bpi自带千兆的用在局域网内。此方案可供树莓派等arm板子的玩家借鉴使用。
    硬件构成:
      1. bpi板子一块
      2. 5v2a电源(本次使用苹果的2a电源)   
      3. 高质量usb(microUSB)电源线一根。这个比一般人想象的重要,太差的线无法支持2a电流,容易导致一堆问题,特别是外设比较多的情况。
      4. usb无线网卡一个(选系统支持的,一般市场上的ralink的和螃蟹卡rtl系列的比较多,而且兼容比较好)。本方案使用的是tenda的w311m。

      5. usb有线网卡一个。本次使用前后用了两个,一个是qf9700芯片的,容易出现断线和不稳定的状况,而且无法达到宽带的最大速度(下左图); 第二次使用的是亚信的芯片的usb有线网卡,速度和稳定性非常好,推荐后面的(下右图)。

      6. 网线若干
      7. TTL调试线(非常重要)。因为我们要做的是路由器的方案,具体操作涉及到网络防火墙的设置,一个错误的操作就可能把你自己的ssh连接挡在外面。所以建议用TTL线连接。当然你非要自己连接显示器和键盘也没问题。但是注意了,bpi上的两个usb都已经被占用了(一个接usb无线网卡,另外一个接usb有线网卡),所以你不用TTL方案的话,你最好弄一个带电源,并且可以反向屏蔽电流的usb集线器。为了提高成功率,最好用TTL方案,越复杂的系统越容易有问题。
    效果图:

    软件构成:
    1. bananian系统(德国佬做的基于debian的系统) 下载地址 https://pan.baidu.com/s/1ntMDlWl      官网地址
    2. 搭建路由器需要的软件

    • 1 pppoe拨号 pppoe pppoeconf pppstatus
    • 2.无线AP功能  hostapd
    • 3.提供DNS缓冲和DHCP服务器功能  dnsmasq
    • 4.网桥架设工具 bridge-utils
    • 5.iptables(netfilter) 系统自带,不需要另外安装


    开始折腾


    1.安装必要软件



    apt-get install pppoe pppoeconf pppstatusapt-get install hostapdapt-get install bridge-utilsapt-get install dnsmasq
    2.网络基础设置


    编辑清理/etc/network/interface  ,除了下面的内容,其他的内容都删除。如果没有下面的内容,那就加上。
    auto loiface lo inet loopback
    3.无线AP设置
    设定 /etc/default/hostapd 取消DAEMON_CONF前面的注释符号,修改为
    DAEMON_CONF="/etc/hostapd/hostapd.conf"设定hostapd文件  /etc/hostapd/hostapd.conf
    interface=wlan0driver=nl80211bridge=br0   #注意这行里面的br0 是网桥名,我们后面还要用到ssid=bpi-r1-ap  # 无线APSSID名hw_mode=gchannel=11      # 频道wpa=1wpa_passphrase=abcdef12345  # 无线AP的密码 换成你自己的wpa_key_mgmt=WPA-PSKwpa_pairwise=TKIP CCMPwpa_ptk_rekey=6004.保护bpi自身
    /root/下面创设 setfw2.sh文件
    #!/bin/bashiptables -t filter -Fiptables -A INPUT -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -A OUTPUT  -o eth1 -j ACCEPTiptables -A INPUT  -i eth1  -j DROPiptables -A INPUT  -i br0 -j ACCEPTiptables -A OUTPUT -o br0 -j ACCEPT5. 设定DNS和DHCP服务
    在/etc/dnsmasq.conf 文件。
    找到相应的选项。取消前面的#注释符,然后按照下面设置
    interface=br0dhcp-range=192.168.2.50,192.168.2.150,255.255.255.0,12h  #设置你的DHCP范围,建议用这个,如果你要用自己的,记得修改其他脚本no-resolvno-pollserver=8.8.8.8  #设置dnsserver=202.101.172.46  #设置dns6. 最后一步
    先说明下,这里分两个方案可供选择,具体操作有些不同。
       方案1PPOE方案,就是直接把bpi上面的usb有线网卡连接你家里的猫,直接当路由器使用。
       方案2:固态IP方案,如果你想把bpi连接到一个现有的路由器上,或者外网是固定IP,那么用这个方案。
    为了便于其他玩家折腾。我编写了5个脚本。
    setipppp.sh 和 setfwppp.sh           是为方案1:pppoe方案准备的
    setip.sh和setfw.sh                          是为方案2:固定IP准备的。
    setfw2.sh是两个方案共用的。
    记住把这5个文件都保存在/root/目录下,或者你自己需要放置的位置。并且chmod a+x 给它们加执行权限
    然后根据你要选择的方案,修改/etc/rc.local 让它们开机就能自动运行。
    方案1:pppoe方案 直接连接猫拨号
      设置pppoe拨号
    因为我们在前面已经安装了pppoe的工具套件。现在开始配置pppoe拨号,记住这个时候要把连接猫的网线的另外一头连接到usb有线网卡上,因为这样这个设置程序才能识别哪个设备连接了pppoe猫。
    pppoeconf  # 输入这个命令 启动交互式配置模式#根据提示来输入相应的东西#要注意的是两点#1. 它会问你是否自动添加路由,记得选是#2. 它会问你是否开机启动,记得选是plog pppoestatus可以查看拨号状况,pon dsl-provider 以/etc/ppp/peer/dsl-provider 配置来拨号。 poff则关闭拨号。
    其他命令和用法自己查看man手册或者google。
    文件setipppp.sh
    #!/bin/bashifconfig eth0  0.0.0.0 upbrctl addbr br0brctl addif br0 eth0ifconfig br0 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255 up    文件 setfwppp.sh
    #!/bin/bashecho 1 > /proc/sys/net/ipv4/ip_forwardiptables -Fiptables -t nat -Fiptables -t nat -A POSTROUTING  -o ppp0 -j MASQUERADEiptables -A FORWARD -i ppp0 -o br0  -m state --state RELATED,ESTABLISHED -j ACCEEPTiptables -A FORWARD -i br0 -o ppp0 -j ACCEPT设置启动
    修改/etc/rc.local ,在文件末尾添加下面内容,但是要在 exit命令前添加。
    /root/setipppp.sh/root/setfwppp.sh/root/setfw2.sh方案2:固态IP方案


    文件1 setip.sh
    #!/bin/bashifconfig eth1 192.168.1.3 netmask 255.255.255.0ifconfig eth0  0.0.0.0 upbrctl addbr br0brctl addif br0 eth0ifconfig br0 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255 uproute add default gw 192.168.1.1  netmask 0.0.0.0 dev eth1文件2 setfw.sh

    #!/bin/bashecho 1 > /proc/sys/net/ipv4/ip_forwardiptables -Fiptables -t nat -Fiptables -t nat -A POSTROUTING  -o eth1 -j MASQUERADEiptables -A FORWARD -i eth1 -o br0  -m state --state RELATED,ESTABLISHED -j ACCEEPTiptables -A FORWARD -i br0 -o eth1 -j ACCEPT
    设置启动
    在/etc/rc.local里面添加下面的内容,注意先后顺序
    /root/setip.sh/root/setfw.sh/root/setfw2.sh7. 特别说明
    设备名称问题。也就是bpi自带网口,usb有线网卡,usb无线网卡在系统中的设备名称,也许你遇到的和我的情况不同。如果这样,记得修改上面脚本和配置文件中的相应部分。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-12-19 02:12 , Processed in 0.129879 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.