斐讯 N1 部署 Docker 和 OpenWRT,并利用 Hostapd 开启 Wi-Fi 热点

刷入 Armbian 的 N1 可以通过安装 Docker 做很多事情,部署 OpenWRT 路由系统就是其中之一,同时利用 Hostapd 更可以开启 Wi-Fi 热点,方便作为一台便携路由使用。
该方案使用场景:在任意网络末端,N1 通过有线连接接入上级路由(DHCP或PPPoE),允许其他无线设备接入其 Wi-Fi 分享网络。
本方案在 armbian_5.77_aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img.xz_ 和 Openwrt 18.06.2 官方固件下测试通过。
关于 N1 刷入 Armbian 并且安装 Docker 的步骤在此不再赘述,有需求的请先自行搜索完成安装。

基本设定

Wi-Fi热点IP和网关地址
AP IP: 10.168.10.1, gateway: 10.168.10.10
Docker Container IP和网关地址,该处192.168.10.0可按照实际情况修改
container IP: 10.168.10.10, gateway: DHCP from upstream network 192.168.10.0/24

ARMBIAN 设置方案一

首先,完成相应的软件安装
apt-get update
apt-get install hostapd
docker import https://downloads.openwrt.org/releases/18.06.2/targets/armvirt/64/openwrt-18.06.2-armvirt-64-default-rootfs.tar.gz openwrt:18.06.2
然后,修改相关的网络设置文件
  1. 修改“network/interfaces”
vi /etc/network/interfaces #运行指令,以下为文件内容

...
iface eth0 inet dhcp
...
iface wlan0 inet manual
...
  1. 修改“interfaces.d/bridge”
vi /etc/network/interfaces.d/bridge #运行指令,以下为文件内容

auto br-lan
iface br-lan inet static
    address 10.168.10.1
    netmask 255.255.255.0
    dns-nameserver 10.168.10.10
    gateway 10.168.10.10
    bridge_ports wlan0
  1. 修改“hostpad”
vi /etc/default/hostapd #运行指令,以下为文件内容

...
DAEMON_CONF="/etc/hostapd.conf"
...
  1. 修改“hostpad.conf”
vi /etc/hostapd.conf #运行指令,以下为文件内容

# 
# armbian hostapd configuration example
# 
# nl80211 mode
# 

interface=wlan0
hw_mode=g
channel=44
bridge=br-lan
driver=nl80211

logger_syslog=0
logger_syslog_level=0
wmm_enabled=1
wpa=2
preamble=1

wpa_psk=66eb31d2b48d19ba216f2e50c6831ee11be98e2fa3a8075e30b866f4a5ccda27
wpa_passphrase=12345678
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
auth_algs=1
macaddr_acl=0

noscan=1

### IEEE 802.11n
ieee80211n=1
require_ht=1
ht_capab=[HT40+]()[SHORT-GI-20]()[SHORT-GI-40]()[DSSS]()[CCK-40]
country_code=CN
ieee80211d=1
### IEEE 802.11n

### IEEE 802.11a
hw_mode=a
### IEEE 802.11a

### IEEE 802.11ac
ieee80211ac=1
vht_capab=[MAX-MPDU-3895]()[SHORT-GI-80]()[SU-BEAMFORMEE]()
vht_oper_chwidth=1
vht_oper_centr_freq_seg0_idx=42
basic_rates=60 90 120 180 240 360 480 540
disassoc_low_ack=0
ssid=N1
### IEEE 802.11ac

# controlling enabled
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
至此,重启 N1,新建 Container 与配套网络
docker network create -d bridge  --subnet 10.168.10.0/24 --gateway=10.168.10.1 -o "com.docker.network.bridge.name=br-lan" lanet  
docker run -d --name N1 --network lanet --privileged openwrt:18.06.2 /sbin/init
docker network create -d macvlan --subnet=192.168.10.0/24 --gateway=192.168.10.1 -o parent=eth0 wanet
docker network connect wanet N1

docker exec -it N1 sh
然后再次修改 network 文件
vi /etc/config/network

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config globals 'globals'
    option ula_prefix 'fd09:e695:b0d5::/48'

config interface 'lan'
    option type 'bridge'
    option ifname 'eth0'
    option proto 'static'
    option ipaddr '10.168.10.10'
    option netmask '255.255.255.0'
    option ip6assign '60'

config interface 'wan'
    config interface 'wan'
    option ifname 'eth1'
    option proto 'dhcp'    

config interface 'wan6'
    option ifname '@wan'
    option proto 'dhcpv6'
最后重启 N1
reboot #重启N1

ARMBIAN 设置方案二

  1. 重启 N1 后,手工启动 container
    docker start N1
  2. 更换缺省路由到 OpenWRT,确认网络环境正常
    route del default
    route add default gw 10.168.10.10
  3. 此时应该能够搜索到名为 N1 的无线信号,密码 12345678,确认一切正常后,设置 container 自动重启
    docker update --restart always N1
  4. 修改网络设置
vi /etc/network/interfaces #运行指令,以下为文件内容

...
iface eth0 inet manual
...
  1. 重启 N1,设置全部完成
  2. 登陆 N1 的无线网络后,可以通过 http://openwrt 访问路由器

参考链接

【原创】Docker内OpenWRT设置成主路由,为WiFi接入的客户提供源自有线网口的网络服务
利用hostapd启动ac 5G无线AP 

来源:https://instar.me/archives/858db735.html

评论

此博客中的热门博文

Yaf应用建议

服务端高并发分布式架构演进之路

Mifare Classic card(M1卡)破解过程记录(准备+理论+获取扇区密钥+数据分析)

Windows7系统目录迁移:Users,Program Files,ProgramData

打造一个可国内访问的Blogger(Blogspot)方法

如何评价苏州思杰马克丁软件公司

iOS任意版本号APP下载(含itunes 12.6.5.3 最后带AppStore版本)

梯控、IC卡滚动码防复制原理和破解

Java 认证考试 OCAJP 经验总结