本帖最后由 黄喵喵 于 2021-4-24 10:17 编辑
一切的源头在于我想养个橘猫,当二胎小孩养的那种。
一个人在深圳,夫人和闺女虽然平常都不在身边,但是一点也不影响我把钱都花在她们身上,实在没额外的预算去饲养其他人类,包括且不限于二胎,更别说其他什么乱七八糟的人类了。
仔细考虑过还是养个橘猫陪伴简单些,日常可以做伴,长假时间可以用年假提前休假开车带回家,长假后用休多几天慢慢开车带回深圳,而且不用考虑喵子的幼儿园、小学、初中、高中教育还有未来的学区房问题,省钱省心。
橘猫这种中华田园猫体格壮实,毛病少,本身购买价格也不贵,但是既然是打算把它当二胎一样养,自然不能缺了靠谱的日常打理和耗材。
好的猫饭、猫粮、猫砂,还有日常维保都不便宜,尤其是在深圳这旮旯,宠物的维保更是贵。以前经常吃烧烤的时候学会了东北老铁们常用的旮旯这个词,现在得戒烧烤了,不仅是为了减肥要减少高脂高钠食物的摄取,更因为拿烧烤来喂猫的确对猫健康不好。当然,最重要的原因还是因为烧烤不便宜,戒了烧烤可以把钱省下给猫加菜,例如买点虾蟹、瑶柱、生蚝、鲍鱼、沙虫等等来喂猫。
作为一名资深垃圾佬,决意搞一套二手的监控设备,好用于日常家庭监控猫的活动,例如人不在家的时候的精神状态、活动状态等等,好在午休时间远程观看实时及回放,作为日常维保的参考。此外,也方便给夫人随时查岗看看深圳家里有没有带进一些乱七八糟的人类。
为了保证不因为NVR本身固件较老厂家无升级导致的漏洞而被外人偷窥,就不打算把NVR接上公有云了,也不打算端口映射出去,所以打算搭建一套私有的网络。
买全新设备是不可能的,毕竟工作了这么多年除了信息技术运维别的都不会,每个月工资除了转大部分给夫人养家还要支付在深圳的房租水电地铁公交,公租房还不知道要排多久,这点钱根本不够用,有得省那是肯定要省的。设备一定要买二手的,中古品性价比高,我特别喜欢。
softether是一套很强大的软件,能实现很多功能,玩法非常多。所以在研究了多款外部接入软件后,决定使用softether。
硬件平台:山寨的4口J1900,不得不吐槽一下J1900硬件平台,发热量真不小,无风扇的平台,在无空调环境下就已经64度了。这还是4月中下旬时期的温度。为了避免夏日的炎热造成死机就另外买了一台4口的N2600软路由平台,准备和J1900按照季节错开来使用。N2600平台摸外壳感觉发热量小多了,但是lm-sensors里面获取的温度也才低几度,感觉这钱白花了。等有时间再把夫人那边用的路由也升级一下,和深圳这边组成一个小型私有局域网,平常也好看看她们养的那只狸花猫。
软件平台:OpenWrt 18.6.3 X86 官方版(都2021年4月了还在用这么旧的版本,主要是因为人懒,没大的安全漏洞被发现,就实在没动力去升级)
动手前的网络拓扑结构与各物理网口定义
eth0~eth2:LAN 10.xxx.xxx.xxx/24 eth3:WAN PPPOE
之所以内网一直用10网段,是因为继承差不多20年前的前前任单位的ip设置习惯,所以后来加的AP、NAS、IPMI、iLO、iDRAC等等的所有的地址全部都是在这个网段,一旦修改成其他网段,很多设置都要改过,实在太过于痛苦,所以也就延续下来使用10网段了。
这种通过wifi接入的client与内网其他终端混杂在一起无互访隔离的拓扑结构常见于国内不少带wifi的路由器,一旦wifi爆破成功,即可让整个LAN全部沦陷。
以前网络安全形势还没那么严峻,AP一直在用WPA2-PSK/AES长达30多位的大小写字母+字符+数字的密码,我也就懒得折腾,差不多差不多就得了。
随着网络安全形势越来越严峻,通过这几年来参加护网行动演习,安全防范意识得到进一步提高,NAS里的福利姬little姐姐和小阿姨越来越多,网络要是被攻破,多年的收藏必将毁于一旦。
于是找了个有空的晚上,吃了一碗螺丝粉填饱肚子,再喝了点伏特加拌上可乐做动力,开始动手!
第一步就是首先把wifi独立出去,把wifi单独划分在一个172.16网段,这个网段可上网,但是不能访问10内网,同时设置策略使10内网可与该网段进行通讯方便日常设置AP。所以就有了网络结构拓扑图#1:
既然wifi独立了,那就干脆一不做二不休把NVR也独立出来一个192.168.168网段算了,反正都开始施工了,也不在乎在安全加固上更进一步,让10内网可访问192.168.168网段,192.168.168网段可上互联网,不可访问10内网。
所以就有了网络拓扑图#2:
当晚测试测试稳定后,10内网访问192.168.168和172.16网段的设备都正常。最后就是上softether,使远程的client能访问192.168.168网段的NVR。这就得到了网络拓扑图#3:
这个结构是外部接入的终端呼入成功后,获取192.168.168网段的IP,可直接访问NVR。但是在实际的操作实践过程中,发现softether提供的dhcp服务会和192.168.168网段的dhcp服务冲突,且不好设置相关的静态路由。所以就有了将呼入的终端形成一个独立网段的网络拓扑图4,这也是最终的网络拓扑结构:
最终完工后的各网口定义:
eth0: LAN 10.xxx.xxx.95/24
eth1: WIFI 172.16.0.9524
eth2:NVR 192.168.168.95/24
eth3:WAN PPPOE
虚拟eth: tap_vpX: 192.168.30.95 (上面eth0~eth2需要在设置softether前调整好,虚拟的eth在softether的调试过程中才添加)
彻底整改后的OpenWrt软路由实现了依据不同的功能按端口划分为相互隔离的网段,提升了外部入侵内网的难度,降低了因网络入侵/破坏等原因导致泄密的风险,也不用担心夫人远程接入深圳的家里发现了NAS中的福利姬little姐姐和小阿姨。
具体操作的步骤:
1·拆分网卡
网络——接口——LAN——物理设置
原本的LAN捆绑了eth0、eth1、eth2,这次整改中,仅保留eth0仍然归10内网使用,eth1和eth2划分出去,所以要去掉eth1和eth2前面的勾。做好以后要拉到最下方保存并应用。
2·添加wifi的新接口
添加新接口——创建新接口——新接口名称 WIFI ,新接口的协议——静态地址,勾选“在多个接口上创建桥接”,包括以下接口——“eth1”。
提交以后就进入wif接口的详细设置,设置IPv4地址172.16.0.95,子网掩码255.255.255.0,下方的“配置DHCP服务器”要打开,否则在这个网段接入的终端将不能自动获取IP。
保存并应用。
3·添加NVR的新接口
步骤和上述步骤2类似,把NVR网段捆绑eth2,桥接,设置ip 192.168.168.95,子网掩码 255.255.255.0,打开DHCP。实际上,DHCP也可以根据实际情况可以不打开,毕竟按照建设NVR专属网段的计划,以后接入的NVR网段的录像机和网络摄像机都不大可能使用DHCP获取IP而是设置固定IP。
4·添加wifi和nvr接口的防火墙设置,使192.168.168.0网段和172.16.0.0网段可以接入互联网
网络——防火墙——添加。
名字——wifi ,转发——拒绝 ,覆盖网络——wifi,允许转发到目标区域——WAN/WAN6,“保存并应用”。
nvr接口也照此步骤进行设置,设置好以后检查,wifi的eth1和nvr的eth2接上任何无设置ip的终端,均能获取ip正常访问互联网。
5·添加10内网对wifi网段与nvr网段的访问权限
编辑LAN区域的策略
在“允许转发到目标区域”把“wifi”和“nvr”都勾选上,“保存并应用”
最后将设备接入wifi与nvr的网段,10内网测试访问相关ip,如无异常,则wifi与nvr网段的隔离工作就算完成了。
6·在OpenWrt上安装softether
登录OpenWrt路由器,OpenWrt官方源在国外,下载速度和稳定性实在太感人了,所以第一件事就是把软件源更换成国内的
系统——软件包——设置——自定义软件源
我用的是中国科大的软件源。
输入好新的源以后要点提交。此后在软件包的动作——刷新列表,会得到一大串的信息,不用管它
在“过滤器”里输入“softether”,点“查找软件包”,这时候就能查找到了softether的软件包,点安装
安装的过程有几秒钟,期间会有一长串的信息出来,不用管它
7·禁用多余的softether服务
之前是跟着国内的很多教程直接安装Softether Server Manager往下走的。后来听说OpenWrt上的softether很不稳定,实际测试也的确如此。
softether好歹也是日本人做的,好歹有点玩核废水的日本工匠精神,和写bug送程序的以快速迭代和敏捷开发为代表的印度工匠精神是绝对不同的,就没放弃研究,后来经过几次摸索才知道,像这种只用来外部接入内网就行,不考虑其他多余功能的情况下,实际上有两个softether的服务是根本不需要的,让那两个服务跑起来还真会造成不稳定。所以需要禁用这两个服务。
系统——启动项
把bridge和client都禁用掉。那两个服务在我的使用条件下都是不需要部署在OpenWrt上面跑的。国内的OpenWrt的softether教程几乎都没有说要禁用这两个服务的。
8·使用国内的DDNS(后面再禁用softether自带的DDNS)
softether本身自带免费的域名解析,但是那个域名解析字段太长,如果不喜欢它,可以使用国内的3322的域名解析。反正我是用国内的3322的域名解析的。
过程:
软件包——过滤器里查找ddns,把luci-app-dns和luci-i18n-ddns-zh-cn都装上去
服务——动态DNS里就可以看到了相关的设置。我的3322域名解析是免费的,所以只能解析ipv4的ip。
因为之前早就和电信打了报障电话要求IP回退,所以我的wan的ip是公网的ip,而不是100.64的内网ip
查询主机名和域名,都是xxxxxxxx.f3322.net这样的格式的,都是在3322那里申请的免费域名
到了这里,通过luci直接对OpenWrt服务器的直接操作就暂告一段落了
9·下载softether Server Manager
下载
安装过程很简单,也就点“下一步”的事。
10·进入softether server manager
安装好以后打开,新设置
主机名就是OpenWrt的路由器的地址。这一步是不用输入密码的,后面会有要求输入密码,那是softether server的密码,是独立于OpenWrt的密码的。可以和OpenWrt的密码一致,也可以不一致
第一次登入的时候,需要自设密码,以后就是通过这个密码来管理的
11·首次进入Softether Server Manager的设置
第一次进入的时候会弹出个“简单安装”的窗口,如果按照网上的教程没有在前期关闭bridge和client,就会发现下面的“**的其他高级设置”这里是灰色的不可选,只有“站点到站点 ** Server 或 ** Bridge”是默认选项。就算偶尔能选上最底下的“**的其他高级配置”,也会在重启OpenWrt路由器或者是重启softether服务后丢失配置,导致softether相关的服务起不来。所以估计这就是有人反馈OpenWrt上的softether不稳定的缘故。
经过测试,只要事先在OpenWrt路由器中关掉bridge和client服务,并且重启了OpenWrt路由器以后,再通过Server Manager管理OpenWrt路由器上的softether服务,都不会出现任何不稳定等等的怪问题
如果bridge和client服务不关闭,那就会经常出现一进去就只能选择中间的”站点到站点“,其余的选项全部为灰色不可选的情况
只要能选上最下面的“其他高级配置”,然后点“关闭”,就会弹出一个窗口询问是否设置IPsec,选“是”
按照下图的进行设置就行,IPsec预共享密钥可以自己设置成其他字符,以提高接入的安全性
12·管理虚拟HUB
首先就是要添加用户组,不同的呼入客户隶属不同的组,方便后期依据组来分配权限
虽然”管理用户“是第一项,”管理组“是第二项,但是我还是倾向于先添加用户组,然后再在添加用户的时候,就十分方便顺手定义用户隶属的组别了。而不用先添加了用户,再添加组,其后在编辑用户所归属的组别
定义用户的组别,有利于在后面设置权限的具体过程中根据用户组别来进行设置,就不用一个个用户都来设置不同的权限了
13·在”管理组“中添加组
添加一个名为 HongXing 的组
管理组——新建——组名称——组名称、全名、说明
将呼入的用户归属不同的组有利于依据组设置不同的访问权限
14·在”管理用户“中添加外部呼入的用户名、密码、归属组
管理用户——新建——用户名 HaoNan ——组名(选择前面创建的HX组)——验证类型——密码验证——输两次,为HaoNan用户使用的密码(不建议和softether或者OpenWrt的密码一致)
在最后就可看见生成了用户 HaoNan ,隶属 HX 组
15·根据自己的需要对日志的保存设置进行更改
16·设置NAT和虚拟DHCP服务器
仅仅完成上面的设置,只是能保证外部能呼入,这是不够的,必须要定义呼入client获取的IP信息,及NAT信息等
经过对比了几种不同的设置方式,最终选择了使用softether给呼入的client提供DHCP服务。
设置方法如下:
启用SecureNAT,然后进入SecureNAT配置
把“应用到客户端的选项”里面的所有内容都清空,再进入“编辑该静态路由表以推送”
因为NVR还没买,所以改用wifi的172.16.0.0网段演示一下不同网段之间的通讯和安全设置
17·虚拟主机网络接口设置的IP地址与静态路由表的设置关系
外部接入的客户端192.168.30.xxx和虚拟主机的IP 192.168.30.95定义为接入同一个虚拟Hub,在不设置访问权限的情况下,192.168.30.xxx和192.168.30.95可互相通讯。
因为已删除了推送给客户端的网关是192.168.30.1的信息,所以192.168.30.xxx呼入后,将无法直接自行访问任何网段。
当然,在一些特殊应用上是需要设置呼入的终端的流量都从OpenWrt的WAN出去的,这里不讨论这个。只讨论呼入的终端获取了192.168.30.xxx之后如何访问172.16.0网段的问题——设置静态路由
要使呼入的终端访问172.16.0.0网段,就要设置静态路由
172.16.0.0/255.255.255.0/192.168.30.95
如果只是需要呼入的终端只能访问例如172.16.0.96,其他同网段的IP均不用访问时,可设置
172.16.0.96/255.255.255.255/192.168.30.95
其实上面的关于静态路由的设置是具有一定安全隐患的:
只设置了172.16.0.96/255.255.255.255/192.168.30.95的静态路由,是可以在呼入成功以后,通过命令route add 172.16.0.0 mask 255.255.255.0 192.168.30.95 来达到访问172.16.0网段的所有设备的。所以仅仅通过设置静态路由来屏蔽呼入的客户端对内网其他设备的访问是不行的,还得加上访问列表的管理
所以,在静态路由的设置中,无论是需要访问整个172.16.0网段还是需要只能访问这个网段内的任一个终端,都可以先设置允许访问整个网段的静态路由,
172.16.0.96/255.255.255.255/192.168.30.95 ,然后再在 管理访问列表 中进行具体设置
为什么不设置”默认网关地址“,而要清空它改为设置静态路由表。是因为一旦设置了默认网关地址,呼入的client就会在通过Softether的DHCP获取了IP地址和网关地址后,所有流量都从新分配的网关地址走了,就会造成呼入的client的路由表全乱套了
18·设置 管理访问列表,对访问权限做出具体限制:
限制HX组,凡是属于洪兴组的,都只能访问172.16.0.96,其余172.16.0.0的其他终端及10网段、192.168.168.0网段都不可访问。
“优先级”的数字越小,就说明执行等级越高,数字越大,就表明优先级越靠后。
(1)首要的安全就是保证10网段的安全,10网段是安全中的重中之重,所以首先要屏蔽client对10网段的访问。
管理访问列表——新建IPV4——备忘”禁止访问10网段“——行为”废弃“——优先级”100“——源名称 ——浏览选择HX组——目标IP地址”10.xxx.xx.0“——子网掩码”255.255.255.0“。
在”浏览“子窗口中,不能选择用户,要”选择一个组“
点选”HX“组后,再点下方的”选择“,就可以保证选择上了 HX 组
(2)屏蔽对虚拟主机网络接口192.168.30.1的访问,这个接口只用来给client接收初始dhcp数据等,其后就完成了历史使命,为了防止入侵者通过192.168.30.1入侵,就要屏蔽client对它的访问。实际上,我做的选择是屏蔽整个192.168.30.0的网段的访问,既可以屏蔽对192.168.30.1的访问,又可以屏蔽对其他接入的client的访问。
必须要注意的是要设置组,否则实际使用会经常不定时出错/不稳定
要达到这个目的,首先要允许client对192.168.30.95的访问,优先级设置为200。
(3)禁用对192.168.30.0网段的访问,优先级设置为300
将禁止对网段的访问设置优先级低于对单地址的访问优先级,就可以达到禁止非允许的地址的访问的目的。
(4)允许对172.16.0.96与172.16.0.206的访问,屏蔽172.16.0.0网段的其他IP(172.16.0.206是可爱的小爱同学,能按照命令放100个屁)
在对IP的访问权限设置中必须注意单个IP的子网掩码是255.255.255.255,网段的才是255.255.255.0。
刚开始的时候就是因为喝了酒所以没设置对,后面翻查才发现,所以喝酒后是不能干活的,太容易出错了。
19·在OpenWrt中设置192.168.302网段与其他网段之间的通讯
访问列表的安全策略都设置好以后,为了能使接入的client能与172.16.0.0网段通信,就需要设置一个本地网桥。
顾名思义,就是把虚拟Hub设备和一个虚拟网络接口设备建立一个桥接。
然后,再在OpenWrt服务器上设置这个包含这个虚拟网络接口的虚拟Hub和其他网段的通讯策略。
(1)选择“本地网桥设置”
选中虚拟Hub为"DEFAULT"——新tap设备的桥接——输入新tap设备名称,这个名称必须有便于记忆,在后继过程中会在OpenWrt的“网络接口”中添加
有弹出的窗口,选“是”
出现一个说明在虚拟机上使用本地桥接功能的窗口,点“确定”即可
背景的“错误“不管它,点”确定“,等下就会变成”运行中“
(2)在OpenWrt中添加虚拟网卡
网络——接口——添加新接口
输入新接口名称——新接口协议“静态地址”——勾选“在多个接口上创建桥接”——包含接口选上 tap*** ,就是前面在softether的本地网桥设置里添加的tap设备名称。
输入ip地址192.168.30.95,子网掩码255.255.255.0,DHCP千万不要开,否则就会造成client全部会被分配192.168.30.95的网关了。
(3)添加虚拟网卡所属网段的防火墙策略
网络——防火墙——添加
覆盖网络,即为刚刚添加的192.168.30.95的bridge名称,"允许转发到目标区域”——“wifi”。当然,这是测试,以后会是“nvr”
完工后的防火墙设置即是下面的样子:
说明:
10网段,即lan网段具有最高权限,可上网,可管理wifi和nvr网段。
172.16.0.0网段,即wifi网段,可上网,可被外部接入的client访问(测试中是允许外部接入的client访问,以后NVR录像机落实以后会取消外部client对wifi网段的访问权限)。
192.168.168.0网段,即nvr网段,可上网,目前未设置外部接入的client访问,以后才会接通。
192.168.30.0网段,即外部接入client的终端使用,不可上网,仅可访问wifi网段特定IP地址
在整个client的访问权限控制里,softether上的访问列表管理设置是十分重要的。毕竟OpenWrt不是专业的防火墙,对于各网段的隔离和权限设置功能不如CISCO的ASA和Juniper的防火墙那样易于设置。所以在设置完成后,就准备要进行测试了。
20·设置softether client呼入成功后的窗口信息(可选,可不设置)
选中DEFAULT 的Hub——属性
信息设置——勾选”显示消息“——输入需要在softether client呼入成功后显示的消息。
21·去除softether自带的DDNS(可选)
编辑设置——保存到文件,把bool Disabled false这行的false改成true,再“导入文件并应用”
就这样可以去除softether自带的DDNS了。softether自带的DDNS名称过长不便于记忆,所以建议用国内的免费的DDNS来替代它。
22·在client上下载softether client
下载softether client,安装过程无非下一步下一步
23·在softether client中建立虚拟网络适配器
右键点softether client的窗口下方的空白处——新建虚拟网络适配器——给这个适配器命名
24·在softether client中建立新的连接(属于自己的DDNS域名的重要性)
双击softether client窗口上方的“添加新的连接”——输入主机名(即DDNS上的域名,也可以是OpenWrt对外的wan的ip地址)——端口可以用默认的992,也可以在softether server中自行定义端口,在这里使用自定义的端口——虚拟Hub名“DEFAULT”——认证类型“标准密码验证”——输入事先在softether server中设置好的用户名 HaoNan 和 密码
25·呼入测试
(1)呼入
通过softether client呼入,可见获取了192.168.30.0网段的IP,及呼入成功后的弹出消息窗口
(2)client上的静态路由查看
26·ping测试
用到的几个IP:
192.168.30.1(softewther的dhcp服务器地址)
192.168.30.95(外部接入的client的网关)
172.16.0.96(Cisco 1142 AP)
172.16.0.206(拆装一次后,语音控制的放屁声总带有稀稀喷射声音的小爱同学)
测试对192.168.30.1和192.168.30.95的访问权限
仅允许访问192.168.30.95,其它192.168.30.0的地址禁止访问
测试对172.26.45.96和172.26.45.206在放开/关闭是否允许访问172.16.0.206前后的ping回响
至此在OpenWrt 18.6.3 X86下的softether服务器搭建就算顺利完成了,现在就缺橘猫了。。。
|