阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

编译树莓派2代B型OpenWrt固件实现无线路由器及nodogsplash认证功能

190次阅读
没有评论

共计 4033 个字符,预计需要花费 11 分钟才能阅读完成。

最终功能:

无线路由器的主要功能,网口 WAN 接入,USB 无线网卡 AP 热点输出,连上 wifi 之后跳转到认证页面,点击认证方可上网,有效时间 10 分钟,认证成功之后自动访问指定网址。

硬件准备:

1.Raspberry Pi 2 model B

2.USB 无线网卡,我使用的是 TL-WN722N 150Mbps 芯片是 AR9271

3. 操作系统:CentOS 7

4.SD 卡 8GB

开始之前最好配置好代理,因为编译过程中所有的依赖会联网自动下载,会有大部分时间耗在这里,如果速度慢或者被墙……

配置编译环境(一定要非 root 账户):

# 升级组件
sudo yum update
# 安装编译组件
sudo yum install libtool autoconf automake gcc-multilib bison screen gcc g++ binutils patch bzip2 flex make gettext unzip libc6 git-core git build-essential libncurses5-dev zlib1g-dev gawk quilt asciidoc libz-dev subversion

下载 openwrt 源码(新手不建议下载 trunk,不是很稳定)

# 使用非 root 用户登录,建立 openwrt 目录
mkdir openwrt
# 进入 openwrt 目录
cd openwrt
# 下载 openwrt 的源码
git clone git://git.openwrt.org/15.05/openwrt.git

集成 nodogsplash 在 /openwrt/feeds.conf.default 中添加

src-git nodogsplash https://github.com/nodogsplash/nodogsplash.git

设置权限

sudo chmod -R 777 trunk
cd trunk

更新并安装

./scripts/feeds update -a
./scripts/feeds install -a

根据自己的需要更改系统默认设置,就不细说了,这里列举几个我的设置

# 这个目录下可以放置之前 openwrt 的备份文件,也就是说相当于 openwrt 的 /etc/ 目录
/home/rophie/openwrt/openwrt/package/base-files/files/etc
 
# 默认 wifi 设置
package/kernel/mac80211/files/lib/wifi/mac80211.sh

network 设置

 config interface ‘loopback’
    option ifname ‘lo’
    option proto ‘static’
    option ipaddr ‘127.0.0.1’
    option netmask ‘255.0.0.0’
 
config interface ‘lan’
    option type ‘bridge’
    option proto ‘static’
    option ipaddr ‘192.168.88.1’
    option netmask ‘255.255.255.0’
    option _orig_bridge ‘true’
    option gateway ‘192.168.88.1’
 
 
config globals ‘globals’
    option ula_prefix ‘fda9:3639:b1e9::/48’
 
config interface ‘wan’
    option ifname ‘eth0’
    option _orig_ifname ‘eth0’
    option _orig_bridge ‘false’
    option proto ‘dhcp’

wireless 设置

 config wifi-device ‘radio0’
    option type ‘mac80211’
    option channel ’11’
        #这里根据你的 USB 无线网卡的 U 口来定
    option path ‘platform/bcm2708_usb/usb1/1-1/1-1.5/1-1.5:1.0’
    option noscan ‘1’
    option country ‘CN’
    option hwmode ’11n’
    option htmode ‘HT40’
    option txpower ’40’
 
config wifi-iface
    option device ‘radio0’
    option network ‘lan’
    option mode ‘ap’
    option ssid ‘APK-YFKJ’
    option encryption psk-mixed<br> option key 88888888<br>

nodogsplash 设置

 config instance
  # Set to 1 to enable nodogsplash
  option enabled 1
 
  # Use plain configuration file as well
  #option config ‘/etc/nodogsplash/nodogsplash.conf’
  option network ‘lan’
  option gatewayname ‘OpenWrt Nodogsplash’
  option maxclients ‘250’
  option idletimeout ’10’
  option clientforcetimeout ’10’
  option redirecturl ‘http://192.168.88.1:8080’
 
  # Your router may have several interfaces, and you
  # probably want to keep them private from the network/gatewayinterface.
  # If so, you should block the entire subnets on those interfaces, e.g.:
  #list authenticated_users ‘block to 192.168.0.0/16’
  list authenticated_users ‘block to 10.0.0.0/8’
 
  # Typical ports you will probably want to open up.
  list authenticated_users ‘allow tcp port 22’
  list authenticated_users ‘allow tcp port 53’
  list authenticated_users ‘allow udp port 53’
  list authenticated_users ‘allow tcp port 80’
  list authenticated_users ‘allow tcp port 443’
  list authenticated_users ‘allow tcp port 8080’
 
  # For preauthenticated users to resolve IP addresses in their
  # initial request not using the router itself as a DNS server,
  list preauthenticated_users ‘allow tcp port 53’
  list preauthenticated_users ‘allow udp port 53’
  #list preauthenticated_users ‘allow tcp port 8080’
 
  # Allow ports for SSH/Telnet/DNS/DHCP/HTTP/HTTPS
  list users_to_router ‘allow tcp port 22’
  list users_to_router ‘allow tcp port 23’
  list users_to_router ‘allow tcp port 53’
  list users_to_router ‘allow udp port 53’
  list users_to_router ‘allow udp port 67’
  list users_to_router ‘allow tcp port 80’
  list users_to_router ‘allow tcp port 8080’
  list users_to_router ‘allow tcp port 443’
 
  # See https://github.com/nodogsplash for a full list of available options.

编译配置

# 更新版本号
svn up
# 进入编译菜单
make menuconfig
Y:选择 Y,该软件将被编译,并且加入到你的目标固件里;
M:选择 M,该软件包将会被编译,但不会被放入固件里。在需要它的时候,可以用 OPKG 软件包管理器进行安装;
N:选择 N,该软件包将不会被编译,也不会被安装进固件。
方向键是移动光标
回车键是确认
空格键是选择,可以代替 Y /M/ N 键的使用
/: 搜索

Target System 选择 brcm2708-bcm2709 按 Y 选中
需要集成的软件

kmod-usb-core kmod-usb-ohci kmod-usb-uhci kmod-usb2 usbutils kmod-ath kmod-ath9k kmod-ath9k-common kmod-ath9k-htc luci-i18n-base-zh-cn kmod-nls-cp437 kmod-nls-utf8 kmod-fs-vfat kmod-nls-iso8859-1 wireless-tools hostapd

编译

make V=99

很久之后你已经能够在 /bin/brcm2708 下找到 openwrt-brcm2708-bcm2709-sdcard-vfat-ext4.img 刷机固件了

树莓派 2 安装 CentOS 7  http://www.linuxidc.com/Linux/2016-07/133763.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-07/145913.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计4033字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中