Open media vault 开启Wi-Fi热点

之前家里弱电箱一直放着着一套WD的网络硬盘做个人NAS,除了日常一家人的数据共享之外,还可以配合Macbook的时间机器功能,非常便利!眼瞧着用了接近8年的东西,也差不多到了必须要退休的时间了。另外,前几日家里的wifi坏掉了,用着卡到爆的电信的“接入设备”光猫+Wi-Fi撑了几天。这不到了618了,正准备一次性换掉两样东西。但简单的盘算了一下,觉得这次就自己一下DIY搞定。

翻出了自己退役的一台4代NUC,自带无线网卡。准备安装open media vault。老实说,除了下载的时候网速慢需要科学上网之外真没什么值得细说的,中英界面一贯的方便。几大步也是照旧:下载,用balenaetcher制作启动盘,U盘启动安装程序,插上网线安装操作系统……。需要说明的是,安装的时候open media vault需要一块硬盘做系统盘,但实际使用时还需要另一块盘作为数据盘。从系统盘不到10G的使用量来看,完全可以做到安装到U盘上。

庆幸当时买的是厚机,系统除了一个现在都快买不到的mstat的硬盘之外还有一个2.5寸笔记本硬盘的空位;又找到了之前笔记本升级时换下的320GB机械硬盘组装了上去——硬件平台就搞定了。

安装完成后,应该至少有线网卡是配好的吧?先别急着用,通过SSH有线网卡的IP地址登录上去。由于Open media vault就是是一个基于Debian的派生版本,我就沿用debian的风格吧(还是习惯于Ubuntu的操作多一点)。

首先,安装所需的服务:

root@SmartyNUC:/etc# apt-get update 
...
root@SmartyNUC:/etc# apt-get install -y hostapd dnsmasq-base
...

就只需要2个软件包,hostapd是真正的wifi 热点服务器。开始配置hostapd:

root@SmartyNUC:/dev/net# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether b8:ae:ed:7e:3d:29 brd ff:ff:ff:ff:ff:ff
3: wlp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 00:21:5c:c4:09:be brd ff:ff:ff:ff:ff:ff

系统认出了两块网卡,有线网卡叫enp0s25,无线网卡叫wlp2s0。这里加粗,如果你参考这个文档的话,请留意把这两个关键字替换成你自己主机的网络接口名称。

编辑/etc/hostapd/hostapd.conf。

interface=wlp2s0  # interface
driver=nl80211      # ap driver

ssid=Litrin-SmartyNUC # WIFI SSID 

hw_mode=g        # 802.11g 
channel=11          # 1-13

# 802.11ac enabling, failed when I tried :P
#ieee80211ac=1 
#hw_mode=a
#channel=acs_survey
#

wmm_enabled=0
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=8aa9c5cc36fc1 # password, may be changed 
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

然后是dnsmasq-base是用来做DHCP server的,它本身也可以用来做DNS cache server,由于我家里的网络通过都是通过电信的设备出口,不需要自己做DNS解析。编辑/etc/dnsmasq.conf 

interface=wlp2s0                   #AP interface
listen-address=192.168.0.1      # AP ip
no-dhcp-interface=enp0s25   # internal ethernet need not DHCP 
bind-interfaces

expand-hosts
dhcp-range=192.168.0.2,192.168.0.250,255.255.255.0,2h           #; client IP 2~250, rotaion per 2 hrs. 
dhcp-option=option:dns-server,114.114.114.114,192.168.1.1,8.8.4.4 #; DNS server ip list 

cache-size=150

上面的配置要求为无线网卡配置192.168.0.1的IP。编辑/etc/network/interface,发觉open media vault会接管网络管理,这里只能硬写。

source-directory /etc/network/interfaces.d
#---- original contents

#---- new added
interface wlp2s0                               # <- interface
    static ip_address=192.168.0.1/24    # <- IP / netmask
    nohook wpa_supplicant

apply 无线网卡,我这里没有用网络重启的方式,选择了手工配置,效果是一样的,只是不需要冒断网的风险。

~# ip address add 192.168.0.1/24 dev wlp2s0

尝试启动两个服务,居然无效!好吧,Debian……

~# echo 'DAEMON_CONF="/etc/hostapd/hostapd.conf"' >> /etc/default/hostapd 

~# echo ENABLED=1 >> /etc/default/dnsmasq 
~# echo CONFIG_DIR=/etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new >> /etc/default/dnsmasq 

再次尝试:

systemctl enable hostdapd
systemctl unmask hostdapd
systemctl enable hostapd

理论上跟到这里你就可以看到你的wifi已经出现在列表中,可喜可贺!但千万别像我一样头脑发热直接断了现有wifi去尝试连接,因为现在DHCP还没开,拿不到IP地址。还是照旧一通:

systemctl enable dnsmasq
systemctl unmask dnsmasq
systemctl enable dnsmasq

这次学乖了,用手机去连,可以拿到IP地址。下一步就是吧NAT转发配置好。感觉回到了当年做运维工程师的年代,看家的手艺没跑了。

第一步要开启内核的ip_forward

root@SmartyNUC:/etc/hostapd# sysctl -w net.ipv4.ip_forward=1
root@SmartyNUC:/etc/hostapd# sysctl -a | grep ipv4.ip_forward  >> /etc/sysctl.conf 

第二部是设置iptables 转发策略

 iptables -t nat -A  POSTROUTING -o enp0s25 -j MASQUERADE
 iptables -A FORWARD -i wlp2s0 -o enp0s25 -j ACCEPT
 iptables -A FORWARD -o wlp2s0 -i enp0s25 -j ACCEPT  

巧的是当时我的手机在这个时候忽然叮的一声收到了推送 。其实大多数的家用场景只要第一句就够了,设定让NAT转发,在每次wifi启动之后生效。搬回/etc/network/interface 文件。

source-directory /etc/network/interfaces.d
#---- original contents

#---- new added
interface wlp2s0                               # <- interface
    static ip_address=192.168.0.1/24    # <- IP / netmask
    nohook wpa_supplicant
    up  iptables -t nat -A  POSTROUTING -o enp0s25 -j MASQUERADE

到这个时候其实已经结束了,我开始搞起了open media vault。然后就是装好了插件准备玩docker,可之后就忽然断了网。docker的安装和使用会重置网络环境,导致了之前的配置全部被覆盖了。应该是不难解决的问题,但docker并非是必须的,考虑到稳定性吧,就把docker卸掉拉倒了。更多好玩的还在研究中!

使用下来觉得我自己的8G内存和i5CPU完全是浪费——最大不到20%的CPU和内存使用率。于是拆了一根内存并通过脚本定频到了powersave mode 800MHz的CPU,也算省电+静音的选择。如果你是新购NUC做open media vault的话,我其实看下来不建议用i5/i7版本的NUC,i3甚至赛扬是足够的。感觉目前较新的NUC有一种自带读卡器的版本更为适合。恰饭一下,主要看看大约需要多少钱。

嗯,差不多控制在1500以内和2.5个小时的安装吧。省了一个WI-FI和一个家用NAS以及一个插座和一根排线。土炮版的Apple 时间胶囊 也不是很亏是吧,要算上重在拧巴开源精神呢?这就无价了!

推荐阅读:
硬件中断问题和性能优化

自打从硬件方向研究性能优化起, Read more

Kubernetes的部署

之前我们通过几个概念简单的介绍 Read more

容器和虚机

这一段时间,凡是提及容器技术的 Read more

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请补全下列算式: *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据