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

刷入 Armbian 的 N1 可以通过安装 Docker 做很多事情,部署 OpenWRT 路由系统就是其中之一,同时利用 Hostapd 更可以开启 Wi-Fi 热点,方便作为一台便携路由使用。

该方案使用场景:在任意网络末端,通过有线连接接入上级路由(DHCP或PPPoE),允许其他无线设备接入其 Wi-Fi 分享网络。

本方案在 armbian_5.77_aml-s905_Ubuntu_bionic_default_5.0.2_20190401.img.xz_ 和 Openwrt 18.06.2 官方固件下测试通过,目前我自编译刷入的Lean固件还在调试中。

关于 N1 刷入 Armbian 并且安装 Docker 的步骤在此不再赘述,有需求的请先自行搜索完成安装。

基本设定

1
2
3
4
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 设置一

  1. 软件安装

    1
    2
    3
    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
  2. 网络设置
    vi /etc/network/interfaces

    1
    2
    3
    4
    5
    ...
    iface eth0 inet dhcp
    ...
    iface wlan0 inet manual
    ...

    vi /etc/network/interfaces.d/bridge

    1
    2
    3
    4
    5
    6
    7
    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

    vi /etc/default/hostapd

    1
    2
    3
    ...
    DAEMON_CONF="/etc/hostapd.conf"
    ...

    vi /etc/hostapd.conf

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    # 
    # 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
  3. 重启 N1,新建 container 与配套网络

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    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

    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'

    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

    1
    2
    3
    ...
    iface eth0 inet manual
    ...
  5. 重启 N1,设置全部完成

  6. 登陆 N1 的无线网络后,可以通过 http://openwrt 访问路由器

参考链接

【原创】Docker内OpenWRT设置成主路由,为WiFi接入的客户提供源自有线网口的网络服务
利用hostapd启动ac 5G无线AP
[N1盒子] 利用hostapd启动802.11ac 5G无线AP wifi热点 二级路由 桥接 10

Buy Me A Coffee