1 介绍部分
1.1 前言
弟弟店铺要安装监控,故向其推荐企业级别的监控UBNT的产品Unifi-Video(笔者推荐UBNT的原因是其一直坚持软件免费,相比某些厂商软件按点数收取授权费的劣举UBNT算是非常有良心)。
由于官方的监控主机Unifi NVR配置比较低(其实是硬盘太小)价格相对贵,故自己定制6端口的工控机作为监控主机(可同时当路由和交换机用^_^,省钱),以下是硬件的截图。
1.2 功能简介
1)具有数字监控主机功能
2)充当路由功能(1口自动获取IP地址,2口待定)
3)充当交换机功能(3至6口可接摄像头)
1.3 系统架构图
注:以下实践部分就是定制软路由(工控主机)的配置过程。
2 实践部分
2.1 环境配置
2.1.1 系统环境
hostnanme=ubnt.cmdschool.org
eth0=dhcp
br0=10.168.1.1
eth[2-5]=10.168.1.x/24
OperatingSystem=Debian8.6
如果读者跟我一样是Debian的初学者,可参考以下系统层的配置教程:
http://cmdschool.blog.51cto.com/2420395/1877915
2.1.2 下载安装包
网页下载安装包
https://www.ubnt.com/download/unifi-video
命令行下载
1
|
wget http:
//dl
.ubnt.com
/firmwares/unifi-video/3
.5.2
/unifi-video_3
.5.2~Debian7_amd64.deb
|
2.1.3 配置apt源
1
|
vi
/etc/apt/sources
.list
|
注解掉以下行
1
|
#deb cdrom:[Debian GNU/Linux 8.6.0 _Jessie_ - Official amd64 DVD Binary-1 20160917-14:25]/ jessie contrib main
|
保存退出后运行以下命令:
1
2
3
4
|
echo
"deb http://ftp.cn.debian.org/debian Debian8.6 main"
|
tee
/etc/apt/sources
.list.d
/debian
.list
echo
"deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen"
|
tee
/etc/apt/sources
.list.d
/mongodb-10gen
.list
echo
"deb http://www.ubnt.com/downloads/unifi/debian stable ubiquiti"
|
tee
/etc/apt/sources
.list.d
/unifi
.list
apt-key adv --keyserver keyserver.ubuntu.com --recv C0A52C50; apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
|
更新源仓库:
1
|
apt-get update
|
2.1.4 安装包管理工具并更新库
1
2
|
apt-get
install
aptitude; apt-get
install
-f; apt-get clean
aptitude update
|
2.1.5 配置时区
1
|
cp
/usr/share/zoneinfo/Asia/Shanghai
/etc/localtime
|
2.1.6 时间同步
1)安装时间同步相关包
1
|
aptitude
install
chrony
|
2)同步时间
1
|
chronyc sources
|
2.2 安装unifi-video程序
2.2.1 安装unifi-video并解决依赖关系兼清理包缓存
1
|
dpkg -i unifi-video_3.5.2~Debian7_amd64.deb; apt-get
install
-f; apt-get clean
|
2.2.2 命令行检查服务启动
1
|
netstat
-antp |
grep
unifi-video
|
显示如下:
1
2
3
4
|
tcp6 0 0 :::7080 :::* LISTEN 7381
/unifi-video
tcp6 0 0 127.0.0.1:7081 :::* LISTEN 7381
/unifi-video
tcp6 0 0 :::7443 :::* LISTEN 7381
/unifi-video
[...]
|
2.3 修改数据存储位置
2.3.1 确定视频存储位置
1
|
find
/ -name \*.mp4\*
|
注:需要先配置枪录制视频(界面部分不详述)
显示如下:
1
2
3
4
|
[...]
/var/lib/unifi-video/videos/e7219371-8d34-3744-a4b5-89acba09907c/2016/12/03/1480745255035_1480745257035_1480737512125_9603951
.mp4
/var/lib/unifi-video/videos/e7219371-8d34-3744-a4b5-89acba09907c/2016/12/03/1480743257037_1480743259037_1480737512125_7605951
.mp4
[...]
|
基于以上,可确定存储目录为(2TB的硬盘应挂在到这目录下):
1
|
/var/lib/unifi-video
|
2.3.2 确认系统检测到安装的硬盘
1
|
fdisk
-l
|
显示如下:
1
2
3
|
[...]
Disk
/dev/sdb
doesn't contain a valid partition table
[...]
|
2.3.3 硬盘分区
1
|
fdisk
/dev/sdb
|
显示如下:
1
2
3
4
5
6
7
8
|
[...]
Command (m
for
help): n
[...]
Select (default p): p
Partition number (1-4, default 1):
[...]
Command (m
for
help): w
[...]
|
发现新分区:
1
|
partx
/dev/sdb
|
2.3.4 创建PV
1
|
pvcreate
/dev/sdb1
|
2.3.5 创建VG
1
|
vgcreate dataStore
/dev/sdb1
|
2.3.6 创建LV
1
|
lvcreate -L 1999g -n data dataStore
|
2.3.7 格式化分区
1
|
mkfs.ext4
/dev/mapper/dataStore-data
|
2.3.8 取得格式化过分区的UUID
1
|
blkid
/dev/mapper/dataStore-data
|
显示如下:
1
|
/dev/mapper/dataStore-data
: UUID=
"0d1dc121-7bd0-46bd-8d85-5577ab322efc"
TYPE=
"ext4"
|
2.3.9 停止unifi-video服务
1
2
|
/etc/init
.d
/unifi-video
stop
/etc/init
.d
/mongodb
stop
|
2.3.10 数据迁移
1
2
3
|
mount
/dev/mapper/dataStore-data
/mnt/
mv
/var/lib/unifi-video/
*
/mnt
umount
/mnt
|
2.3.11 挂载卷
1
2
|
echo
'UUID="0d1dc121-7bd0-46bd-8d85-5577ab322efc" /var/lib/unifi-video ext4 defaults 1 2'
>>
/etc/fstab
mount
-a
|
2.3.12 启动unifi-video服务
1
2
|
/etc/init
.d
/mongodb
start
/etc/init
.d
/unifi-video
start
|
2.4 安装桌面环境
2.4.1 lxde的最小安装
1)安装相关包
1
2
|
aptitude
install
xinit slim lightdm
aptitude
install
--without-recommends lxde-core
|
2)配置启动方式
1
2
|
echo
'exec startlxde'
> ~/.xinitrc
update-alternatives --config x-session-manager
|
3)配置自动登录
1
|
vi
/etc/slim
.conf
|
修改配置如下:
1
2
|
default_user ubnt
auto_login
yes
|
2.4.2 安装谷歌浏览器
1)下载安装包
下载页面:
http://www.google.cn/chrome/browser/desktop/index.html
下载的命令:
1
|
https:
//dl
.google.com
/linux/direct/google-chrome-stable_current_amd64
.deb
|
2)启动安装
1
|
dpkg -i google-chrome-stable_current_amd64.deb;apt-get
install
-f
|
2.4.3 支持中文
1
|
aptitude
install
fonts-droid
|
2.5 集成路由与交换功能
2.5.1 增加网桥
1)安装桥套件
1
|
aptitude
install
bridge-utils
|
2)创建桥接口
1
|
brctl addbr br0
|
注,删除请使用
1
|
brctl delbr br0
|
2.5.2 给网卡接口分配特定功能
1
|
vim
/etc/network/interfaces
|
加入如下配置:
1
2
3
4
5
6
7
8
9
10
|
auto eth0
allow-hotpulg eth0
iface eth0 inet dhcp
auto br0
iface br0 inet static
address 10.168.1.1
netmask 255.255.255.0
bridge_ports eth2 eth3 eth4 eth5
up
/usr/sbin/brctl
stp br0 on
|
注:eth0自动获取IP,eth2-5网桥模式(相当于交换机)
重启服务使配置生效:
1
|
/etc/init
.d
/networking
restart
|
2.5.3 开启路由转发功能
1)临时开启路由转发
1
|
echo
1 >
/proc/sys/net/ipv4/ip_forward
|
2)永久开启路由转发
1
|
vim
/etc/sysctl
.conf
|
去掉此行的注解:
1
|
net.ipv4.ip_forward = 1
|
2.5.4 配置具有SNAT功能防火墙规则
1)创建防火墙规则
1
|
vim
/etc/iptables
.up.rules
|
输入如下配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# Generated by iptables-save v1.4.21 on Mon Dec 5 07:48:46 2016
*filter
:INPUT DROP [40:2032]
:FORWARD ACCEPT [100631:98411806]
:OUTPUT ACCEPT [61262:3785634]
-A INPUT -i lo -j ACCEPT
-A INPUT -i br0 -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 7080 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 7443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
COMMIT
# Completed on Mon Dec 5 07:48:46 2016
# Generated by iptables-save v1.4.21 on Mon Dec 5 07:48:46 2016
*nat
:PREROUTING ACCEPT [1094:127184]
:INPUT ACCEPT [112:7768]
:OUTPUT ACCEPT [53:3815]
:POSTROUTING ACCEPT [77:13304]
-A POSTROUTING -s 10.168.1.0
/24
-o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Dec 5 07:48:46 2016
|
2)配置开机自动加载
1
2
3
|
echo
'#!/bin/sh'
>
/etc/network/if-pre-up
.d
/iptables
echo
'/sbin/iptables-restore < /etc/iptables.up.rules'
>>
/etc/network/if-pre-up
.d
/iptables
chmod
+x
/etc/network/if-pre-up
.d
/iptables
|
2.5.5 配置DHCP服务
1)安装DHCP服务
1
|
aptitude
install
isc-dhcp-server
|
2)修改主配置文件
1
2
|
cp
/etc/default/isc-dhcp-server
/etc/default/isc-dhcp-server
.default
vi
/etc/default/isc-dhcp-server
|
配置参数如下:
1
2
|
DHCPD_CONF=
/etc/dhcp/dhcpd
.conf
INTERFACES=
"br0"
|
3)配置加载的子配置文件
1
2
|
cp
/etc/dhcp/dhcpd
.conf
/etc/dhcp/dhcpd
.conf.default
vi
/etc/dhcp/dhcpd
.conf
|
配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
ddns-update-style none;
option domain-name
"cmdschool.org"
;
option domain-name-servers 202.96.128.86,202.96.128.166;
default-lease-
time
600;
max-lease-
time
7200;
log-facility local7;
subnet 10.168.1.0 netmask 255.255.255.0 {
range 10.168.1.51 10.168.1.199;
option routers 10.168.1.1;
option broadcast-address 10.168.1.255;
default-lease-
time
600;
max-lease-
time
7200;
}
|
4)启动服务
1
|
/etc/init
.d
/isc-dhcp-server
start
|
2.5.6 配置花生壳域名解析
1)安装软件包
1
|
aptitude
install
curl
|
2)创建解析脚本
1
2
|
mkdir
~
/script/
vim ~
/script/pusoray
.sh
|
输入如下配置(假设域名是cmdschool.org):
1
2
3
4
5
|
#!/bin/bash
domain=
"cmdschool.org"
user=
"username"
pwd
=
"password"
/usr/bin/curl
"http://$user:$pwd@ddns.oray.com/ph/update?hostname=$domain"
|
3)自动调用解析脚本
1
|
crontab
-e
|
输入如下配置:
1
|
*
/3
* * * * sh ~
/script/pusoray
.sh
|